lockres 258 drivers/md/md-cluster.c static void add_resync_info(struct dlm_lock_resource *lockres, lockres 263 drivers/md/md-cluster.c ri = (struct resync_info *)lockres->lksb.sb_lvbptr; lockres 269 drivers/md/md-cluster.c struct dlm_lock_resource *lockres) lockres 275 drivers/md/md-cluster.c dlm_lock_sync(lockres, DLM_LOCK_CR); lockres 276 drivers/md/md-cluster.c memcpy(&ri, lockres->lksb.sb_lvbptr, sizeof(struct resync_info)); lockres 282 drivers/md/md-cluster.c dlm_unlock_sync(lockres); lockres 536 fs/lockd/svc4proc.c PROC(lock_res, lockres, norep, res, void, 1), lockres 580 fs/lockd/svcproc.c PROC(lock_res, lockres, norep, res, void, 1), lockres 83 fs/ocfs2/dlm/dlmast.c res = lock->lockres; lockres 151 fs/ocfs2/dlm/dlmast.c res = lock->lockres; lockres 206 fs/ocfs2/dlm/dlmcommon.h struct dlm_lock_resource *lockres; lockres 213 fs/ocfs2/dlm/dlmcommon.h struct dlm_lock_resource *lockres; lockres 347 fs/ocfs2/dlm/dlmcommon.h struct dlm_lock_resource *lockres; lockres 120 fs/ocfs2/dlm/dlmdebug.c dlm_print_one_lock_resource(lockid->lockres); lockres 362 fs/ocfs2/dlm/dlmlock.c lock->lockres = res; lockres 370 fs/ocfs2/dlm/dlmlock.c res = lock->lockres; lockres 372 fs/ocfs2/dlm/dlmlock.c lock->lockres = NULL; lockres 595 fs/ocfs2/dlm/dlmlock.c res = lock->lockres; lockres 2063 fs/ocfs2/dlm/dlmmaster.c item->u.am.lockres = res; /* already have a ref */ lockres 2093 fs/ocfs2/dlm/dlmmaster.c res = item->u.am.lockres; lockres 1208 fs/ocfs2/dlm/dlmrecovery.c lock->lockres->lockname.len, lock->lockres->lockname.name, lockres 1210 fs/ocfs2/dlm/dlmrecovery.c dlm_print_one_lock_resource(lock->lockres); lockres 1518 fs/ocfs2/dlm/dlmrecovery.c item->u.ml.lockres = res; /* already have a ref */ lockres 1554 fs/ocfs2/dlm/dlmrecovery.c res = item->u.ml.lockres; lockres 285 fs/ocfs2/dlm/dlmthread.c struct dlm_lock_resource *lockres; lockres 293 fs/ocfs2/dlm/dlmthread.c lockres = list_entry(dlm->purge_list.next, lockres 296 fs/ocfs2/dlm/dlmthread.c spin_lock(&lockres->spinlock); lockres 298 fs/ocfs2/dlm/dlmthread.c purge_jiffies = lockres->last_used + lockres 308 fs/ocfs2/dlm/dlmthread.c spin_unlock(&lockres->spinlock); lockres 316 fs/ocfs2/dlm/dlmthread.c unused = __dlm_lockres_unused(lockres); lockres 318 fs/ocfs2/dlm/dlmthread.c (lockres->state & DLM_LOCK_RES_MIGRATING) || lockres 319 fs/ocfs2/dlm/dlmthread.c (lockres->inflight_assert_workers != 0)) { lockres 322 fs/ocfs2/dlm/dlmthread.c dlm->name, lockres->lockname.len, lockres 323 fs/ocfs2/dlm/dlmthread.c lockres->lockname.name, lockres 324 fs/ocfs2/dlm/dlmthread.c !unused, lockres->state, lockres 325 fs/ocfs2/dlm/dlmthread.c lockres->inflight_assert_workers); lockres 326 fs/ocfs2/dlm/dlmthread.c list_move_tail(&lockres->purge, &dlm->purge_list); lockres 327 fs/ocfs2/dlm/dlmthread.c spin_unlock(&lockres->spinlock); lockres 331 fs/ocfs2/dlm/dlmthread.c dlm_lockres_get(lockres); lockres 333 fs/ocfs2/dlm/dlmthread.c dlm_purge_lockres(dlm, lockres); lockres 335 fs/ocfs2/dlm/dlmthread.c dlm_lockres_put(lockres); lockres 586 fs/ocfs2/dlm/dlmthread.c res = lock->lockres; lockres 630 fs/ocfs2/dlm/dlmthread.c res = lock->lockres; lockres 610 fs/ocfs2/dlm/dlmunlock.c if (!lksb->lockid || !lksb->lockid->lockres) { lockres 619 fs/ocfs2/dlm/dlmunlock.c res = lock->lockres; lockres 37 fs/ocfs2/dlmfs/userdlm.c static inline int user_check_wait_flag(struct user_lock_res *lockres, lockres 42 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 43 fs/ocfs2/dlmfs/userdlm.c ret = lockres->l_flags & flag; lockres 44 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 49 fs/ocfs2/dlmfs/userdlm.c static inline void user_wait_on_busy_lock(struct user_lock_res *lockres) lockres 52 fs/ocfs2/dlmfs/userdlm.c wait_event(lockres->l_event, lockres 53 fs/ocfs2/dlmfs/userdlm.c !user_check_wait_flag(lockres, USER_LOCK_BUSY)); lockres 56 fs/ocfs2/dlmfs/userdlm.c static inline void user_wait_on_blocked_lock(struct user_lock_res *lockres) lockres 59 fs/ocfs2/dlmfs/userdlm.c wait_event(lockres->l_event, lockres 60 fs/ocfs2/dlmfs/userdlm.c !user_check_wait_flag(lockres, USER_LOCK_BLOCKED)); lockres 65 fs/ocfs2/dlmfs/userdlm.c cluster_connection_from_user_lockres(struct user_lock_res *lockres) lockres 69 fs/ocfs2/dlmfs/userdlm.c ip = container_of(lockres, lockres 76 fs/ocfs2/dlmfs/userdlm.c user_dlm_inode_from_user_lockres(struct user_lock_res *lockres) lockres 80 fs/ocfs2/dlmfs/userdlm.c ip = container_of(lockres, lockres 86 fs/ocfs2/dlmfs/userdlm.c static inline void user_recover_from_dlm_error(struct user_lock_res *lockres) lockres 88 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 89 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags &= ~USER_LOCK_BUSY; lockres 90 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 115 fs/ocfs2/dlmfs/userdlm.c struct user_lock_res *lockres = user_lksb_to_lock_res(lksb); lockres 119 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name, lockres->l_level, lockres 120 fs/ocfs2/dlmfs/userdlm.c lockres->l_requested); lockres 122 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 124 fs/ocfs2/dlmfs/userdlm.c status = ocfs2_dlm_lock_status(&lockres->l_lksb); lockres 127 fs/ocfs2/dlmfs/userdlm.c status, lockres->l_namelen, lockres->l_name); lockres 128 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 132 fs/ocfs2/dlmfs/userdlm.c mlog_bug_on_msg(lockres->l_requested == DLM_LOCK_IV, lockres 134 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name, lockres->l_flags); lockres 137 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_requested < lockres->l_level) { lockres 138 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_requested <= lockres 139 fs/ocfs2/dlmfs/userdlm.c user_highest_compat_lock_level(lockres->l_blocking)) { lockres 140 fs/ocfs2/dlmfs/userdlm.c lockres->l_blocking = DLM_LOCK_NL; lockres 141 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags &= ~USER_LOCK_BLOCKED; lockres 145 fs/ocfs2/dlmfs/userdlm.c lockres->l_level = lockres->l_requested; lockres 146 fs/ocfs2/dlmfs/userdlm.c lockres->l_requested = DLM_LOCK_IV; lockres 147 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags |= USER_LOCK_ATTACHED; lockres 148 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags &= ~USER_LOCK_BUSY; lockres 150 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 152 fs/ocfs2/dlmfs/userdlm.c wake_up(&lockres->l_event); lockres 155 fs/ocfs2/dlmfs/userdlm.c static inline void user_dlm_grab_inode_ref(struct user_lock_res *lockres) lockres 158 fs/ocfs2/dlmfs/userdlm.c inode = user_dlm_inode_from_user_lockres(lockres); lockres 165 fs/ocfs2/dlmfs/userdlm.c static void __user_dlm_queue_lockres(struct user_lock_res *lockres) lockres 167 fs/ocfs2/dlmfs/userdlm.c if (!(lockres->l_flags & USER_LOCK_QUEUED)) { lockres 168 fs/ocfs2/dlmfs/userdlm.c user_dlm_grab_inode_ref(lockres); lockres 170 fs/ocfs2/dlmfs/userdlm.c INIT_WORK(&lockres->l_work, user_dlm_unblock_lock); lockres 172 fs/ocfs2/dlmfs/userdlm.c queue_work(user_dlm_worker, &lockres->l_work); lockres 173 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags |= USER_LOCK_QUEUED; lockres 177 fs/ocfs2/dlmfs/userdlm.c static void __user_dlm_cond_queue_lockres(struct user_lock_res *lockres) lockres 181 fs/ocfs2/dlmfs/userdlm.c if (!(lockres->l_flags & USER_LOCK_BLOCKED)) lockres 184 fs/ocfs2/dlmfs/userdlm.c switch (lockres->l_blocking) { lockres 186 fs/ocfs2/dlmfs/userdlm.c if (!lockres->l_ex_holders && !lockres->l_ro_holders) lockres 190 fs/ocfs2/dlmfs/userdlm.c if (!lockres->l_ex_holders) lockres 198 fs/ocfs2/dlmfs/userdlm.c __user_dlm_queue_lockres(lockres); lockres 203 fs/ocfs2/dlmfs/userdlm.c struct user_lock_res *lockres = user_lksb_to_lock_res(lksb); lockres 206 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name, level, lockres->l_level); lockres 208 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 209 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags |= USER_LOCK_BLOCKED; lockres 210 fs/ocfs2/dlmfs/userdlm.c if (level > lockres->l_blocking) lockres 211 fs/ocfs2/dlmfs/userdlm.c lockres->l_blocking = level; lockres 213 fs/ocfs2/dlmfs/userdlm.c __user_dlm_queue_lockres(lockres); lockres 214 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 216 fs/ocfs2/dlmfs/userdlm.c wake_up(&lockres->l_event); lockres 221 fs/ocfs2/dlmfs/userdlm.c struct user_lock_res *lockres = user_lksb_to_lock_res(lksb); lockres 224 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name, lockres->l_flags); lockres 229 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 233 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_flags & USER_LOCK_IN_TEARDOWN lockres 234 fs/ocfs2/dlmfs/userdlm.c && !(lockres->l_flags & USER_LOCK_IN_CANCEL)) { lockres 235 fs/ocfs2/dlmfs/userdlm.c lockres->l_level = DLM_LOCK_IV; lockres 240 fs/ocfs2/dlmfs/userdlm.c BUG_ON(!(lockres->l_flags & USER_LOCK_IN_CANCEL)); lockres 241 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags &= ~USER_LOCK_IN_CANCEL; lockres 244 fs/ocfs2/dlmfs/userdlm.c BUG_ON(!(lockres->l_flags & USER_LOCK_IN_CANCEL)); lockres 246 fs/ocfs2/dlmfs/userdlm.c lockres->l_requested = DLM_LOCK_IV; /* cancel an lockres 249 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags &= ~USER_LOCK_IN_CANCEL; lockres 252 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_flags & USER_LOCK_BLOCKED) lockres 253 fs/ocfs2/dlmfs/userdlm.c __user_dlm_queue_lockres(lockres); lockres 256 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags &= ~USER_LOCK_BUSY; lockres 258 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 260 fs/ocfs2/dlmfs/userdlm.c wake_up(&lockres->l_event); lockres 278 fs/ocfs2/dlmfs/userdlm.c static inline void user_dlm_drop_inode_ref(struct user_lock_res *lockres) lockres 281 fs/ocfs2/dlmfs/userdlm.c inode = user_dlm_inode_from_user_lockres(lockres); lockres 288 fs/ocfs2/dlmfs/userdlm.c struct user_lock_res *lockres = lockres 291 fs/ocfs2/dlmfs/userdlm.c cluster_connection_from_user_lockres(lockres); lockres 293 fs/ocfs2/dlmfs/userdlm.c mlog(0, "lockres %.*s\n", lockres->l_namelen, lockres->l_name); lockres 295 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 297 fs/ocfs2/dlmfs/userdlm.c mlog_bug_on_msg(!(lockres->l_flags & USER_LOCK_QUEUED), lockres 299 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name, lockres->l_flags); lockres 303 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags &= ~USER_LOCK_QUEUED; lockres 310 fs/ocfs2/dlmfs/userdlm.c if (!(lockres->l_flags & USER_LOCK_BLOCKED)) { lockres 312 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name); lockres 313 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 317 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_flags & USER_LOCK_IN_TEARDOWN) { lockres 319 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name); lockres 320 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 324 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_flags & USER_LOCK_BUSY) { lockres 325 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_flags & USER_LOCK_IN_CANCEL) { lockres 327 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name); lockres 328 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 332 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags |= USER_LOCK_IN_CANCEL; lockres 333 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 335 fs/ocfs2/dlmfs/userdlm.c status = ocfs2_dlm_unlock(conn, &lockres->l_lksb, lockres 338 fs/ocfs2/dlmfs/userdlm.c user_log_dlm_error("ocfs2_dlm_unlock", status, lockres); lockres 345 fs/ocfs2/dlmfs/userdlm.c if ((lockres->l_blocking == DLM_LOCK_EX) lockres 346 fs/ocfs2/dlmfs/userdlm.c && (lockres->l_ex_holders || lockres->l_ro_holders)) { lockres 347 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 349 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name, lockres 350 fs/ocfs2/dlmfs/userdlm.c lockres->l_ex_holders, lockres->l_ro_holders); lockres 354 fs/ocfs2/dlmfs/userdlm.c if ((lockres->l_blocking == DLM_LOCK_PR) lockres 355 fs/ocfs2/dlmfs/userdlm.c && lockres->l_ex_holders) { lockres 356 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 358 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name, lockres 359 fs/ocfs2/dlmfs/userdlm.c lockres->l_ex_holders); lockres 364 fs/ocfs2/dlmfs/userdlm.c new_level = user_highest_compat_lock_level(lockres->l_blocking); lockres 365 fs/ocfs2/dlmfs/userdlm.c lockres->l_requested = new_level; lockres 366 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags |= USER_LOCK_BUSY; lockres 368 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name, lockres->l_level, new_level); lockres 369 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 372 fs/ocfs2/dlmfs/userdlm.c status = ocfs2_dlm_lock(conn, new_level, &lockres->l_lksb, lockres 374 fs/ocfs2/dlmfs/userdlm.c lockres->l_name, lockres 375 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen); lockres 377 fs/ocfs2/dlmfs/userdlm.c user_log_dlm_error("ocfs2_dlm_lock", status, lockres); lockres 378 fs/ocfs2/dlmfs/userdlm.c user_recover_from_dlm_error(lockres); lockres 382 fs/ocfs2/dlmfs/userdlm.c user_dlm_drop_inode_ref(lockres); lockres 385 fs/ocfs2/dlmfs/userdlm.c static inline void user_dlm_inc_holders(struct user_lock_res *lockres, lockres 390 fs/ocfs2/dlmfs/userdlm.c lockres->l_ex_holders++; lockres 393 fs/ocfs2/dlmfs/userdlm.c lockres->l_ro_holders++; lockres 404 fs/ocfs2/dlmfs/userdlm.c user_may_continue_on_blocked_lock(struct user_lock_res *lockres, lockres 407 fs/ocfs2/dlmfs/userdlm.c BUG_ON(!(lockres->l_flags & USER_LOCK_BLOCKED)); lockres 409 fs/ocfs2/dlmfs/userdlm.c return wanted <= user_highest_compat_lock_level(lockres->l_blocking); lockres 412 fs/ocfs2/dlmfs/userdlm.c int user_dlm_cluster_lock(struct user_lock_res *lockres, lockres 418 fs/ocfs2/dlmfs/userdlm.c cluster_connection_from_user_lockres(lockres); lockres 423 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name); lockres 429 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name, level, lkm_flags); lockres 437 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 442 fs/ocfs2/dlmfs/userdlm.c if ((lockres->l_flags & USER_LOCK_BUSY) && lockres 443 fs/ocfs2/dlmfs/userdlm.c (level > lockres->l_level)) { lockres 446 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 448 fs/ocfs2/dlmfs/userdlm.c user_wait_on_busy_lock(lockres); lockres 452 fs/ocfs2/dlmfs/userdlm.c if ((lockres->l_flags & USER_LOCK_BLOCKED) && lockres 453 fs/ocfs2/dlmfs/userdlm.c (!user_may_continue_on_blocked_lock(lockres, level))) { lockres 456 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 458 fs/ocfs2/dlmfs/userdlm.c user_wait_on_blocked_lock(lockres); lockres 462 fs/ocfs2/dlmfs/userdlm.c if (level > lockres->l_level) { lockres 464 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_level != DLM_LOCK_IV) lockres 467 fs/ocfs2/dlmfs/userdlm.c lockres->l_requested = level; lockres 468 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags |= USER_LOCK_BUSY; lockres 469 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 475 fs/ocfs2/dlmfs/userdlm.c status = ocfs2_dlm_lock(conn, level, &lockres->l_lksb, lockres 476 fs/ocfs2/dlmfs/userdlm.c local_flags, lockres->l_name, lockres 477 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen); lockres 482 fs/ocfs2/dlmfs/userdlm.c status, lockres); lockres 483 fs/ocfs2/dlmfs/userdlm.c user_recover_from_dlm_error(lockres); lockres 487 fs/ocfs2/dlmfs/userdlm.c user_wait_on_busy_lock(lockres); lockres 491 fs/ocfs2/dlmfs/userdlm.c user_dlm_inc_holders(lockres, level); lockres 492 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 499 fs/ocfs2/dlmfs/userdlm.c static inline void user_dlm_dec_holders(struct user_lock_res *lockres, lockres 504 fs/ocfs2/dlmfs/userdlm.c BUG_ON(!lockres->l_ex_holders); lockres 505 fs/ocfs2/dlmfs/userdlm.c lockres->l_ex_holders--; lockres 508 fs/ocfs2/dlmfs/userdlm.c BUG_ON(!lockres->l_ro_holders); lockres 509 fs/ocfs2/dlmfs/userdlm.c lockres->l_ro_holders--; lockres 516 fs/ocfs2/dlmfs/userdlm.c void user_dlm_cluster_unlock(struct user_lock_res *lockres, lockres 522 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen, lockres->l_name); lockres 526 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 527 fs/ocfs2/dlmfs/userdlm.c user_dlm_dec_holders(lockres, level); lockres 528 fs/ocfs2/dlmfs/userdlm.c __user_dlm_cond_queue_lockres(lockres); lockres 529 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 536 fs/ocfs2/dlmfs/userdlm.c struct user_lock_res *lockres = &DLMFS_I(inode)->ip_lockres; lockres 541 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 543 fs/ocfs2/dlmfs/userdlm.c BUG_ON(lockres->l_level < DLM_LOCK_EX); lockres 544 fs/ocfs2/dlmfs/userdlm.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 547 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 554 fs/ocfs2/dlmfs/userdlm.c struct user_lock_res *lockres = &DLMFS_I(inode)->ip_lockres; lockres 560 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 562 fs/ocfs2/dlmfs/userdlm.c BUG_ON(lockres->l_level < DLM_LOCK_PR); lockres 563 fs/ocfs2/dlmfs/userdlm.c if (ocfs2_dlm_lvb_valid(&lockres->l_lksb)) { lockres 564 fs/ocfs2/dlmfs/userdlm.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 569 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 573 fs/ocfs2/dlmfs/userdlm.c void user_dlm_lock_res_init(struct user_lock_res *lockres, lockres 576 fs/ocfs2/dlmfs/userdlm.c memset(lockres, 0, sizeof(*lockres)); lockres 578 fs/ocfs2/dlmfs/userdlm.c spin_lock_init(&lockres->l_lock); lockres 579 fs/ocfs2/dlmfs/userdlm.c init_waitqueue_head(&lockres->l_event); lockres 580 fs/ocfs2/dlmfs/userdlm.c lockres->l_level = DLM_LOCK_IV; lockres 581 fs/ocfs2/dlmfs/userdlm.c lockres->l_requested = DLM_LOCK_IV; lockres 582 fs/ocfs2/dlmfs/userdlm.c lockres->l_blocking = DLM_LOCK_IV; lockres 587 fs/ocfs2/dlmfs/userdlm.c memcpy(lockres->l_name, lockres 590 fs/ocfs2/dlmfs/userdlm.c lockres->l_namelen = dentry->d_name.len; lockres 593 fs/ocfs2/dlmfs/userdlm.c int user_dlm_destroy_lock(struct user_lock_res *lockres) lockres 597 fs/ocfs2/dlmfs/userdlm.c cluster_connection_from_user_lockres(lockres); lockres 599 fs/ocfs2/dlmfs/userdlm.c mlog(ML_BASTS, "lockres %.*s\n", lockres->l_namelen, lockres->l_name); lockres 601 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 602 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_flags & USER_LOCK_IN_TEARDOWN) { lockres 603 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 607 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags |= USER_LOCK_IN_TEARDOWN; lockres 609 fs/ocfs2/dlmfs/userdlm.c while (lockres->l_flags & USER_LOCK_BUSY) { lockres 610 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 612 fs/ocfs2/dlmfs/userdlm.c user_wait_on_busy_lock(lockres); lockres 614 fs/ocfs2/dlmfs/userdlm.c spin_lock(&lockres->l_lock); lockres 617 fs/ocfs2/dlmfs/userdlm.c if (lockres->l_ro_holders || lockres->l_ex_holders) { lockres 618 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 623 fs/ocfs2/dlmfs/userdlm.c if (!(lockres->l_flags & USER_LOCK_ATTACHED)) { lockres 624 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 628 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags &= ~USER_LOCK_ATTACHED; lockres 629 fs/ocfs2/dlmfs/userdlm.c lockres->l_flags |= USER_LOCK_BUSY; lockres 630 fs/ocfs2/dlmfs/userdlm.c spin_unlock(&lockres->l_lock); lockres 632 fs/ocfs2/dlmfs/userdlm.c status = ocfs2_dlm_unlock(conn, &lockres->l_lksb, DLM_LKF_VALBLK); lockres 634 fs/ocfs2/dlmfs/userdlm.c user_log_dlm_error("ocfs2_dlm_unlock", status, lockres); lockres 638 fs/ocfs2/dlmfs/userdlm.c user_wait_on_busy_lock(lockres); lockres 58 fs/ocfs2/dlmfs/userdlm.h void user_dlm_lock_res_init(struct user_lock_res *lockres, lockres 60 fs/ocfs2/dlmfs/userdlm.h int user_dlm_destroy_lock(struct user_lock_res *lockres); lockres 61 fs/ocfs2/dlmfs/userdlm.h int user_dlm_cluster_lock(struct user_lock_res *lockres, lockres 64 fs/ocfs2/dlmfs/userdlm.h void user_dlm_cluster_unlock(struct user_lock_res *lockres, lockres 59 fs/ocfs2/dlmglue.c static struct ocfs2_super *ocfs2_get_dentry_osb(struct ocfs2_lock_res *lockres); lockres 60 fs/ocfs2/dlmglue.c static struct ocfs2_super *ocfs2_get_inode_osb(struct ocfs2_lock_res *lockres); lockres 61 fs/ocfs2/dlmglue.c static struct ocfs2_super *ocfs2_get_file_osb(struct ocfs2_lock_res *lockres); lockres 62 fs/ocfs2/dlmglue.c static struct ocfs2_super *ocfs2_get_qinfo_osb(struct ocfs2_lock_res *lockres); lockres 89 fs/ocfs2/dlmglue.c static int ocfs2_check_meta_downconvert(struct ocfs2_lock_res *lockres, lockres 91 fs/ocfs2/dlmglue.c static void ocfs2_set_meta_lvb(struct ocfs2_lock_res *lockres); lockres 93 fs/ocfs2/dlmglue.c static int ocfs2_data_convert_worker(struct ocfs2_lock_res *lockres, lockres 96 fs/ocfs2/dlmglue.c static int ocfs2_dentry_convert_worker(struct ocfs2_lock_res *lockres, lockres 100 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres); lockres 102 fs/ocfs2/dlmglue.c static void ocfs2_set_qinfo_lvb(struct ocfs2_lock_res *lockres); lockres 104 fs/ocfs2/dlmglue.c static int ocfs2_check_refcount_downconvert(struct ocfs2_lock_res *lockres, lockres 106 fs/ocfs2/dlmglue.c static int ocfs2_refcount_convert_worker(struct ocfs2_lock_res *lockres, lockres 115 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 117 fs/ocfs2/dlmglue.c struct ocfs2_meta_lvb *lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 120 fs/ocfs2/dlmglue.c lockres->l_name, function, line); lockres 287 fs/ocfs2/dlmglue.c static inline int ocfs2_is_inode_lock(struct ocfs2_lock_res *lockres) lockres 289 fs/ocfs2/dlmglue.c return lockres->l_type == OCFS2_LOCK_TYPE_META || lockres 290 fs/ocfs2/dlmglue.c lockres->l_type == OCFS2_LOCK_TYPE_RW || lockres 291 fs/ocfs2/dlmglue.c lockres->l_type == OCFS2_LOCK_TYPE_OPEN; lockres 299 fs/ocfs2/dlmglue.c static inline struct inode *ocfs2_lock_res_inode(struct ocfs2_lock_res *lockres) lockres 301 fs/ocfs2/dlmglue.c BUG_ON(!ocfs2_is_inode_lock(lockres)); lockres 303 fs/ocfs2/dlmglue.c return (struct inode *) lockres->l_priv; lockres 306 fs/ocfs2/dlmglue.c static inline struct ocfs2_dentry_lock *ocfs2_lock_res_dl(struct ocfs2_lock_res *lockres) lockres 308 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_type != OCFS2_LOCK_TYPE_DENTRY); lockres 310 fs/ocfs2/dlmglue.c return (struct ocfs2_dentry_lock *)lockres->l_priv; lockres 313 fs/ocfs2/dlmglue.c static inline struct ocfs2_mem_dqinfo *ocfs2_lock_res_qinfo(struct ocfs2_lock_res *lockres) lockres 315 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_type != OCFS2_LOCK_TYPE_QINFO); lockres 317 fs/ocfs2/dlmglue.c return (struct ocfs2_mem_dqinfo *)lockres->l_priv; lockres 326 fs/ocfs2/dlmglue.c static inline struct ocfs2_super *ocfs2_get_lockres_osb(struct ocfs2_lock_res *lockres) lockres 328 fs/ocfs2/dlmglue.c if (lockres->l_ops->get_osb) lockres 329 fs/ocfs2/dlmglue.c return lockres->l_ops->get_osb(lockres); lockres 331 fs/ocfs2/dlmglue.c return (struct ocfs2_super *)lockres->l_priv; lockres 335 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 338 fs/ocfs2/dlmglue.c static inline int ocfs2_may_continue_on_blocked_lock(struct ocfs2_lock_res *lockres, lockres 341 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 344 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 347 fs/ocfs2/dlmglue.c __ocfs2_cluster_unlock(osb, lockres, level, _RET_IP_); lockres 350 fs/ocfs2/dlmglue.c static inline void ocfs2_generic_handle_downconvert_action(struct ocfs2_lock_res *lockres); lockres 351 fs/ocfs2/dlmglue.c static inline void ocfs2_generic_handle_convert_action(struct ocfs2_lock_res *lockres); lockres 352 fs/ocfs2/dlmglue.c static inline void ocfs2_generic_handle_attach_action(struct ocfs2_lock_res *lockres); lockres 353 fs/ocfs2/dlmglue.c static int ocfs2_generic_handle_bast(struct ocfs2_lock_res *lockres, int level); lockres 355 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres); lockres 356 fs/ocfs2/dlmglue.c static inline void ocfs2_recover_from_dlm_error(struct ocfs2_lock_res *lockres, lockres 369 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres); lockres 374 fs/ocfs2/dlmglue.c static unsigned int ocfs2_prepare_downconvert(struct ocfs2_lock_res *lockres, lockres 377 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 382 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres); lockres 384 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres); lockres 468 fs/ocfs2/dlmglue.c static inline void ocfs2_track_lock_refresh(struct ocfs2_lock_res *lockres) lockres 470 fs/ocfs2/dlmglue.c lockres->l_lock_refresh++; lockres 473 fs/ocfs2/dlmglue.c static inline void ocfs2_track_lock_wait(struct ocfs2_lock_res *lockres) lockres 477 fs/ocfs2/dlmglue.c if (list_empty(&lockres->l_mask_waiters)) { lockres 478 fs/ocfs2/dlmglue.c lockres->l_lock_wait = 0; lockres 482 fs/ocfs2/dlmglue.c mw = list_first_entry(&lockres->l_mask_waiters, lockres 484 fs/ocfs2/dlmglue.c lockres->l_lock_wait = lockres 500 fs/ocfs2/dlmglue.c static inline void ocfs2_track_lock_refresh(struct ocfs2_lock_res *lockres) lockres 503 fs/ocfs2/dlmglue.c static inline void ocfs2_track_lock_wait(struct ocfs2_lock_res *lockres) lockres 580 fs/ocfs2/dlmglue.c static struct ocfs2_super *ocfs2_get_inode_osb(struct ocfs2_lock_res *lockres) lockres 582 fs/ocfs2/dlmglue.c struct inode *inode = ocfs2_lock_res_inode(lockres); lockres 587 fs/ocfs2/dlmglue.c static struct ocfs2_super *ocfs2_get_qinfo_osb(struct ocfs2_lock_res *lockres) lockres 589 fs/ocfs2/dlmglue.c struct ocfs2_mem_dqinfo *info = lockres->l_priv; lockres 594 fs/ocfs2/dlmglue.c static struct ocfs2_super *ocfs2_get_file_osb(struct ocfs2_lock_res *lockres) lockres 596 fs/ocfs2/dlmglue.c struct ocfs2_file_private *fp = lockres->l_priv; lockres 601 fs/ocfs2/dlmglue.c static __u64 ocfs2_get_dentry_lock_ino(struct ocfs2_lock_res *lockres) lockres 605 fs/ocfs2/dlmglue.c memcpy(&inode_blkno_be, &lockres->l_name[OCFS2_DENTRY_LOCK_INO_START], lockres 611 fs/ocfs2/dlmglue.c static struct ocfs2_super *ocfs2_get_dentry_osb(struct ocfs2_lock_res *lockres) lockres 613 fs/ocfs2/dlmglue.c struct ocfs2_dentry_lock *dl = lockres->l_priv; lockres 624 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &dl->dl_lockres; lockres 626 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_once(lockres); lockres 643 fs/ocfs2/dlmglue.c len = snprintf(lockres->l_name, OCFS2_DENTRY_LOCK_INO_START, lockres 650 fs/ocfs2/dlmglue.c memcpy(&lockres->l_name[OCFS2_DENTRY_LOCK_INO_START], &inode_blkno_be, lockres 653 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_common(OCFS2_SB(inode->i_sb), lockres, lockres 694 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_trim_fs_lockres; lockres 699 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_once(lockres); lockres 700 fs/ocfs2/dlmglue.c ocfs2_build_lock_name(OCFS2_LOCK_TYPE_TRIM_FS, 0, 0, lockres->l_name); lockres 701 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_common(osb, lockres, OCFS2_LOCK_TYPE_TRIM_FS, lockres 707 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_trim_fs_lockres; lockres 709 fs/ocfs2/dlmglue.c ocfs2_simple_drop_lockres(osb, lockres); lockres 710 fs/ocfs2/dlmglue.c ocfs2_lock_res_free(lockres); lockres 724 fs/ocfs2/dlmglue.c void ocfs2_file_lock_res_init(struct ocfs2_lock_res *lockres, lockres 730 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_once(lockres); lockres 732 fs/ocfs2/dlmglue.c inode->i_generation, lockres->l_name); lockres 733 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_common(OCFS2_SB(inode->i_sb), lockres, lockres 736 fs/ocfs2/dlmglue.c lockres->l_flags |= OCFS2_LOCK_NOCACHE; lockres 739 fs/ocfs2/dlmglue.c void ocfs2_qinfo_lock_res_init(struct ocfs2_lock_res *lockres, lockres 742 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_once(lockres); lockres 744 fs/ocfs2/dlmglue.c 0, lockres->l_name); lockres 745 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_common(OCFS2_SB(info->dqi_gi.dqi_sb), lockres, lockres 750 fs/ocfs2/dlmglue.c void ocfs2_refcount_lock_res_init(struct ocfs2_lock_res *lockres, lockres 754 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_once(lockres); lockres 756 fs/ocfs2/dlmglue.c generation, lockres->l_name); lockres 757 fs/ocfs2/dlmglue.c ocfs2_lock_res_init_common(osb, lockres, OCFS2_LOCK_TYPE_REFCOUNT, lockres 794 fs/ocfs2/dlmglue.c static inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres, lockres 800 fs/ocfs2/dlmglue.c spin_lock(&lockres->l_lock); lockres 801 fs/ocfs2/dlmglue.c list_add_tail(&oh->oh_list, &lockres->l_holders); lockres 802 fs/ocfs2/dlmglue.c spin_unlock(&lockres->l_lock); lockres 806 fs/ocfs2/dlmglue.c ocfs2_pid_holder(struct ocfs2_lock_res *lockres, lockres 811 fs/ocfs2/dlmglue.c spin_lock(&lockres->l_lock); lockres 812 fs/ocfs2/dlmglue.c list_for_each_entry(oh, &lockres->l_holders, oh_list) { lockres 814 fs/ocfs2/dlmglue.c spin_unlock(&lockres->l_lock); lockres 818 fs/ocfs2/dlmglue.c spin_unlock(&lockres->l_lock); lockres 822 fs/ocfs2/dlmglue.c static inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres, lockres 825 fs/ocfs2/dlmglue.c spin_lock(&lockres->l_lock); lockres 827 fs/ocfs2/dlmglue.c spin_unlock(&lockres->l_lock); lockres 833 fs/ocfs2/dlmglue.c static inline void ocfs2_inc_holders(struct ocfs2_lock_res *lockres, lockres 836 fs/ocfs2/dlmglue.c BUG_ON(!lockres); lockres 840 fs/ocfs2/dlmglue.c lockres->l_ex_holders++; lockres 843 fs/ocfs2/dlmglue.c lockres->l_ro_holders++; lockres 850 fs/ocfs2/dlmglue.c static inline void ocfs2_dec_holders(struct ocfs2_lock_res *lockres, lockres 853 fs/ocfs2/dlmglue.c BUG_ON(!lockres); lockres 857 fs/ocfs2/dlmglue.c BUG_ON(!lockres->l_ex_holders); lockres 858 fs/ocfs2/dlmglue.c lockres->l_ex_holders--; lockres 861 fs/ocfs2/dlmglue.c BUG_ON(!lockres->l_ro_holders); lockres 862 fs/ocfs2/dlmglue.c lockres->l_ro_holders--; lockres 883 fs/ocfs2/dlmglue.c static void lockres_set_flags(struct ocfs2_lock_res *lockres, lockres 888 fs/ocfs2/dlmglue.c assert_spin_locked(&lockres->l_lock); lockres 890 fs/ocfs2/dlmglue.c lockres->l_flags = newflags; lockres 892 fs/ocfs2/dlmglue.c list_for_each_entry_safe(mw, tmp, &lockres->l_mask_waiters, mw_item) { lockres 893 fs/ocfs2/dlmglue.c if ((lockres->l_flags & mw->mw_mask) != mw->mw_goal) lockres 899 fs/ocfs2/dlmglue.c ocfs2_track_lock_wait(lockres); lockres 902 fs/ocfs2/dlmglue.c static void lockres_or_flags(struct ocfs2_lock_res *lockres, unsigned long or) lockres 904 fs/ocfs2/dlmglue.c lockres_set_flags(lockres, lockres->l_flags | or); lockres 906 fs/ocfs2/dlmglue.c static void lockres_clear_flags(struct ocfs2_lock_res *lockres, lockres 909 fs/ocfs2/dlmglue.c lockres_set_flags(lockres, lockres->l_flags & ~clear); lockres 912 fs/ocfs2/dlmglue.c static inline void ocfs2_generic_handle_downconvert_action(struct ocfs2_lock_res *lockres) lockres 914 fs/ocfs2/dlmglue.c BUG_ON(!(lockres->l_flags & OCFS2_LOCK_BUSY)); lockres 915 fs/ocfs2/dlmglue.c BUG_ON(!(lockres->l_flags & OCFS2_LOCK_ATTACHED)); lockres 916 fs/ocfs2/dlmglue.c BUG_ON(!(lockres->l_flags & OCFS2_LOCK_BLOCKED)); lockres 917 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_blocking <= DLM_LOCK_NL); lockres 919 fs/ocfs2/dlmglue.c lockres->l_level = lockres->l_requested; lockres 920 fs/ocfs2/dlmglue.c if (lockres->l_level <= lockres 921 fs/ocfs2/dlmglue.c ocfs2_highest_compat_lock_level(lockres->l_blocking)) { lockres 922 fs/ocfs2/dlmglue.c lockres->l_blocking = DLM_LOCK_NL; lockres 923 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_BLOCKED); lockres 925 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_BUSY); lockres 928 fs/ocfs2/dlmglue.c static inline void ocfs2_generic_handle_convert_action(struct ocfs2_lock_res *lockres) lockres 930 fs/ocfs2/dlmglue.c BUG_ON(!(lockres->l_flags & OCFS2_LOCK_BUSY)); lockres 931 fs/ocfs2/dlmglue.c BUG_ON(!(lockres->l_flags & OCFS2_LOCK_ATTACHED)); lockres 937 fs/ocfs2/dlmglue.c if (lockres->l_level == DLM_LOCK_NL && lockres 938 fs/ocfs2/dlmglue.c lockres->l_ops->flags & LOCK_TYPE_REQUIRES_REFRESH) lockres 939 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_NEEDS_REFRESH); lockres 941 fs/ocfs2/dlmglue.c lockres->l_level = lockres->l_requested; lockres 950 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_NONBLOCK_FINISHED)) lockres 951 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING); lockres 953 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_NONBLOCK_FINISHED); lockres 955 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_BUSY); lockres 958 fs/ocfs2/dlmglue.c static inline void ocfs2_generic_handle_attach_action(struct ocfs2_lock_res *lockres) lockres 960 fs/ocfs2/dlmglue.c BUG_ON((!(lockres->l_flags & OCFS2_LOCK_BUSY))); lockres 961 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_flags & OCFS2_LOCK_ATTACHED); lockres 963 fs/ocfs2/dlmglue.c if (lockres->l_requested > DLM_LOCK_NL && lockres 964 fs/ocfs2/dlmglue.c !(lockres->l_flags & OCFS2_LOCK_LOCAL) && lockres 965 fs/ocfs2/dlmglue.c lockres->l_ops->flags & LOCK_TYPE_REQUIRES_REFRESH) lockres 966 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_NEEDS_REFRESH); lockres 968 fs/ocfs2/dlmglue.c lockres->l_level = lockres->l_requested; lockres 969 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_ATTACHED); lockres 970 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_BUSY); lockres 973 fs/ocfs2/dlmglue.c static int ocfs2_generic_handle_bast(struct ocfs2_lock_res *lockres, lockres 978 fs/ocfs2/dlmglue.c assert_spin_locked(&lockres->l_lock); lockres 980 fs/ocfs2/dlmglue.c if (level > lockres->l_blocking) { lockres 986 fs/ocfs2/dlmglue.c ocfs2_highest_compat_lock_level(lockres->l_blocking)) lockres 989 fs/ocfs2/dlmglue.c lockres->l_blocking = level; lockres 993 fs/ocfs2/dlmglue.c lockres->l_name, level, lockres->l_level, lockres->l_blocking, lockres 997 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_BLOCKED); lockres 1061 fs/ocfs2/dlmglue.c static void __lockres_clear_pending(struct ocfs2_lock_res *lockres, lockres 1065 fs/ocfs2/dlmglue.c assert_spin_locked(&lockres->l_lock); lockres 1071 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_PENDING) || lockres 1072 fs/ocfs2/dlmglue.c (lockres->l_pending_gen != generation)) lockres 1075 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_PENDING); lockres 1076 fs/ocfs2/dlmglue.c lockres->l_pending_gen++; lockres 1082 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_BLOCKED) lockres 1087 fs/ocfs2/dlmglue.c static void lockres_clear_pending(struct ocfs2_lock_res *lockres, lockres 1093 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1094 fs/ocfs2/dlmglue.c __lockres_clear_pending(lockres, generation, osb); lockres 1095 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1098 fs/ocfs2/dlmglue.c static unsigned int lockres_set_pending(struct ocfs2_lock_res *lockres) lockres 1100 fs/ocfs2/dlmglue.c assert_spin_locked(&lockres->l_lock); lockres 1101 fs/ocfs2/dlmglue.c BUG_ON(!(lockres->l_flags & OCFS2_LOCK_BUSY)); lockres 1103 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_PENDING); lockres 1105 fs/ocfs2/dlmglue.c return lockres->l_pending_gen; lockres 1110 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = ocfs2_lksb_to_lock_res(lksb); lockres 1111 fs/ocfs2/dlmglue.c struct ocfs2_super *osb = ocfs2_get_lockres_osb(lockres); lockres 1118 fs/ocfs2/dlmglue.c "type %s\n", lockres->l_name, level, lockres->l_level, lockres 1119 fs/ocfs2/dlmglue.c ocfs2_lock_type_string(lockres->l_type)); lockres 1125 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_NOCACHE) lockres 1128 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1129 fs/ocfs2/dlmglue.c needs_downconvert = ocfs2_generic_handle_bast(lockres, level); lockres 1131 fs/ocfs2/dlmglue.c ocfs2_schedule_blocked_lock(osb, lockres); lockres 1132 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1134 fs/ocfs2/dlmglue.c wake_up(&lockres->l_event); lockres 1141 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = ocfs2_lksb_to_lock_res(lksb); lockres 1142 fs/ocfs2/dlmglue.c struct ocfs2_super *osb = ocfs2_get_lockres_osb(lockres); lockres 1146 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1148 fs/ocfs2/dlmglue.c status = ocfs2_dlm_lock_status(&lockres->l_lksb); lockres 1151 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_BUSY); lockres 1157 fs/ocfs2/dlmglue.c lockres->l_name, status); lockres 1158 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1163 fs/ocfs2/dlmglue.c "level %d => %d\n", lockres->l_name, lockres->l_action, lockres 1164 fs/ocfs2/dlmglue.c lockres->l_unlock_action, lockres->l_level, lockres->l_requested); lockres 1166 fs/ocfs2/dlmglue.c switch(lockres->l_action) { lockres 1168 fs/ocfs2/dlmglue.c ocfs2_generic_handle_attach_action(lockres); lockres 1169 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_LOCAL); lockres 1172 fs/ocfs2/dlmglue.c ocfs2_generic_handle_convert_action(lockres); lockres 1175 fs/ocfs2/dlmglue.c ocfs2_generic_handle_downconvert_action(lockres); lockres 1180 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_action, lockres->l_flags, lockres 1181 fs/ocfs2/dlmglue.c lockres->l_unlock_action); lockres 1187 fs/ocfs2/dlmglue.c lockres->l_action = OCFS2_AST_INVALID; lockres 1190 fs/ocfs2/dlmglue.c if (lockres->l_unlock_action == OCFS2_UNLOCK_CANCEL_CONVERT) lockres 1191 fs/ocfs2/dlmglue.c lockres->l_unlock_action = OCFS2_UNLOCK_INVALID; lockres 1199 fs/ocfs2/dlmglue.c __lockres_clear_pending(lockres, lockres->l_pending_gen, osb); lockres 1201 fs/ocfs2/dlmglue.c wake_up(&lockres->l_event); lockres 1202 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1207 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = ocfs2_lksb_to_lock_res(lksb); lockres 1211 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_unlock_action); lockres 1213 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1216 fs/ocfs2/dlmglue.c "unlock_action %d\n", error, lockres->l_name, lockres 1217 fs/ocfs2/dlmglue.c lockres->l_unlock_action); lockres 1218 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1222 fs/ocfs2/dlmglue.c switch(lockres->l_unlock_action) { lockres 1224 fs/ocfs2/dlmglue.c mlog(0, "Cancel convert success for %s\n", lockres->l_name); lockres 1225 fs/ocfs2/dlmglue.c lockres->l_action = OCFS2_AST_INVALID; lockres 1228 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_BLOCKED) lockres 1229 fs/ocfs2/dlmglue.c ocfs2_wake_downconvert_thread(ocfs2_get_lockres_osb(lockres)); lockres 1232 fs/ocfs2/dlmglue.c lockres->l_level = DLM_LOCK_IV; lockres 1238 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_BUSY); lockres 1239 fs/ocfs2/dlmglue.c lockres->l_unlock_action = OCFS2_UNLOCK_INVALID; lockres 1240 fs/ocfs2/dlmglue.c wake_up(&lockres->l_event); lockres 1241 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1282 fs/ocfs2/dlmglue.c static inline void ocfs2_recover_from_dlm_error(struct ocfs2_lock_res *lockres, lockres 1287 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1288 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_BUSY); lockres 1289 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING); lockres 1291 fs/ocfs2/dlmglue.c lockres->l_action = OCFS2_AST_INVALID; lockres 1293 fs/ocfs2/dlmglue.c lockres->l_unlock_action = OCFS2_UNLOCK_INVALID; lockres 1294 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1296 fs/ocfs2/dlmglue.c wake_up(&lockres->l_event); lockres 1304 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 1312 fs/ocfs2/dlmglue.c mlog(0, "lock %s, level = %d, flags = %u\n", lockres->l_name, level, lockres 1315 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1316 fs/ocfs2/dlmglue.c if ((lockres->l_flags & OCFS2_LOCK_ATTACHED) || lockres 1317 fs/ocfs2/dlmglue.c (lockres->l_flags & OCFS2_LOCK_BUSY)) { lockres 1318 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1322 fs/ocfs2/dlmglue.c lockres->l_action = OCFS2_AST_ATTACH; lockres 1323 fs/ocfs2/dlmglue.c lockres->l_requested = level; lockres 1324 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_BUSY); lockres 1325 fs/ocfs2/dlmglue.c gen = lockres_set_pending(lockres); lockres 1326 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1330 fs/ocfs2/dlmglue.c &lockres->l_lksb, lockres 1332 fs/ocfs2/dlmglue.c lockres->l_name, lockres 1334 fs/ocfs2/dlmglue.c lockres_clear_pending(lockres, gen, osb); lockres 1336 fs/ocfs2/dlmglue.c ocfs2_log_dlm_error("ocfs2_dlm_lock", ret, lockres); lockres 1337 fs/ocfs2/dlmglue.c ocfs2_recover_from_dlm_error(lockres, 1); lockres 1340 fs/ocfs2/dlmglue.c mlog(0, "lock %s, return from ocfs2_dlm_lock\n", lockres->l_name); lockres 1346 fs/ocfs2/dlmglue.c static inline int ocfs2_check_wait_flag(struct ocfs2_lock_res *lockres, lockres 1352 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1353 fs/ocfs2/dlmglue.c ret = lockres->l_flags & flag; lockres 1354 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1359 fs/ocfs2/dlmglue.c static inline void ocfs2_wait_on_busy_lock(struct ocfs2_lock_res *lockres) lockres 1362 fs/ocfs2/dlmglue.c wait_event(lockres->l_event, lockres 1363 fs/ocfs2/dlmglue.c !ocfs2_check_wait_flag(lockres, OCFS2_LOCK_BUSY)); lockres 1366 fs/ocfs2/dlmglue.c static inline void ocfs2_wait_on_refreshing_lock(struct ocfs2_lock_res *lockres) lockres 1369 fs/ocfs2/dlmglue.c wait_event(lockres->l_event, lockres 1370 fs/ocfs2/dlmglue.c !ocfs2_check_wait_flag(lockres, OCFS2_LOCK_REFRESHING)); lockres 1376 fs/ocfs2/dlmglue.c static inline int ocfs2_may_continue_on_blocked_lock(struct ocfs2_lock_res *lockres, lockres 1379 fs/ocfs2/dlmglue.c BUG_ON(!(lockres->l_flags & OCFS2_LOCK_BLOCKED)); lockres 1381 fs/ocfs2/dlmglue.c return wanted <= ocfs2_highest_compat_lock_level(lockres->l_blocking); lockres 1399 fs/ocfs2/dlmglue.c static void lockres_add_mask_waiter(struct ocfs2_lock_res *lockres, lockres 1406 fs/ocfs2/dlmglue.c assert_spin_locked(&lockres->l_lock); lockres 1408 fs/ocfs2/dlmglue.c list_add_tail(&mw->mw_item, &lockres->l_mask_waiters); lockres 1411 fs/ocfs2/dlmglue.c ocfs2_track_lock_wait(lockres); lockres 1416 fs/ocfs2/dlmglue.c static int __lockres_remove_mask_waiter(struct ocfs2_lock_res *lockres, lockres 1421 fs/ocfs2/dlmglue.c assert_spin_locked(&lockres->l_lock); lockres 1423 fs/ocfs2/dlmglue.c if ((lockres->l_flags & mw->mw_mask) != mw->mw_goal) lockres 1428 fs/ocfs2/dlmglue.c ocfs2_track_lock_wait(lockres); lockres 1434 fs/ocfs2/dlmglue.c static int lockres_remove_mask_waiter(struct ocfs2_lock_res *lockres, lockres 1440 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1441 fs/ocfs2/dlmglue.c ret = __lockres_remove_mask_waiter(lockres, mw); lockres 1442 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1449 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 1455 fs/ocfs2/dlmglue.c lockres_remove_mask_waiter(lockres, mw); lockres 1464 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 1480 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_INITIALIZED)) { lockres 1487 fs/ocfs2/dlmglue.c if (lockres->l_ops->flags & LOCK_TYPE_USES_LVB) lockres 1493 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1500 fs/ocfs2/dlmglue.c mlog_bug_on_msg(lockres->l_flags & OCFS2_LOCK_FREEING, lockres 1502 fs/ocfs2/dlmglue.c "0x%lx\n", lockres->l_name, lockres->l_flags); lockres 1507 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_BUSY && lockres 1508 fs/ocfs2/dlmglue.c level > lockres->l_level) { lockres 1511 fs/ocfs2/dlmglue.c lockres_add_mask_waiter(lockres, &mw, OCFS2_LOCK_BUSY, 0); lockres 1516 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_UPCONVERT_FINISHING) { lockres 1531 fs/ocfs2/dlmglue.c if (level <= lockres->l_level) lockres 1535 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_BLOCKED && lockres 1536 fs/ocfs2/dlmglue.c !ocfs2_may_continue_on_blocked_lock(lockres, level)) { lockres 1539 fs/ocfs2/dlmglue.c lockres_add_mask_waiter(lockres, &mw, OCFS2_LOCK_BLOCKED, 0); lockres 1544 fs/ocfs2/dlmglue.c if (level > lockres->l_level) { lockres 1552 fs/ocfs2/dlmglue.c if (lockres->l_action != OCFS2_AST_INVALID) lockres 1554 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_action); lockres 1556 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_ATTACHED)) { lockres 1557 fs/ocfs2/dlmglue.c lockres->l_action = OCFS2_AST_ATTACH; lockres 1560 fs/ocfs2/dlmglue.c lockres->l_action = OCFS2_AST_CONVERT; lockres 1564 fs/ocfs2/dlmglue.c lockres->l_requested = level; lockres 1565 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_BUSY); lockres 1566 fs/ocfs2/dlmglue.c gen = lockres_set_pending(lockres); lockres 1567 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1573 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_level, level); lockres 1578 fs/ocfs2/dlmglue.c &lockres->l_lksb, lockres 1580 fs/ocfs2/dlmglue.c lockres->l_name, lockres 1582 fs/ocfs2/dlmglue.c lockres_clear_pending(lockres, gen, osb); lockres 1587 fs/ocfs2/dlmglue.c ret, lockres); lockres 1589 fs/ocfs2/dlmglue.c ocfs2_recover_from_dlm_error(lockres, 1); lockres 1595 fs/ocfs2/dlmglue.c lockres->l_name); lockres 1607 fs/ocfs2/dlmglue.c ocfs2_inc_holders(lockres, level); lockres 1611 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING); lockres 1614 fs/ocfs2/dlmglue.c kick_dc = (lockres->l_flags & OCFS2_LOCK_BLOCKED); lockres 1616 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1631 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1632 fs/ocfs2/dlmglue.c if (__lockres_remove_mask_waiter(lockres, &mw)) { lockres 1634 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, lockres 1636 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1639 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1649 fs/ocfs2/dlmglue.c ocfs2_update_lock_stats(lockres, level, &mw, ret); lockres 1652 fs/ocfs2/dlmglue.c if (!ret && lockres->l_lockdep_map.key != NULL) { lockres 1654 fs/ocfs2/dlmglue.c rwsem_acquire_read(&lockres->l_lockdep_map, l_subclass, lockres 1658 fs/ocfs2/dlmglue.c rwsem_acquire(&lockres->l_lockdep_map, l_subclass, lockres 1667 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 1672 fs/ocfs2/dlmglue.c return __ocfs2_cluster_lock(osb, lockres, level, lkm_flags, arg_flags, lockres 1678 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 1684 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1685 fs/ocfs2/dlmglue.c ocfs2_dec_holders(lockres, level); lockres 1686 fs/ocfs2/dlmglue.c ocfs2_downconvert_on_unlock(osb, lockres); lockres 1687 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1689 fs/ocfs2/dlmglue.c if (lockres->l_lockdep_map.key != NULL) lockres 1690 fs/ocfs2/dlmglue.c rwsem_release(&lockres->l_lockdep_map, 1, caller_ip); lockres 1695 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 1703 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1704 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_flags & OCFS2_LOCK_ATTACHED); lockres 1705 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_LOCAL); lockres 1706 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1708 fs/ocfs2/dlmglue.c return ocfs2_lock_create(osb, lockres, level, lkm_flags); lockres 1761 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres; lockres 1771 fs/ocfs2/dlmglue.c lockres = &OCFS2_I(inode)->ip_rw_lockres; lockres 1775 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, level, 0, 0); lockres 1785 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres; lockres 1795 fs/ocfs2/dlmglue.c lockres = &OCFS2_I(inode)->ip_rw_lockres; lockres 1799 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, level, DLM_LKF_NOQUEUE, 0); lockres 1806 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &OCFS2_I(inode)->ip_rw_lockres; lockres 1814 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, level); lockres 1823 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres; lockres 1832 fs/ocfs2/dlmglue.c lockres = &OCFS2_I(inode)->ip_open_lockres; lockres 1834 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, DLM_LOCK_PR, 0, 0); lockres 1845 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres; lockres 1861 fs/ocfs2/dlmglue.c lockres = &OCFS2_I(inode)->ip_open_lockres; lockres 1871 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, level, DLM_LKF_NOQUEUE, 0); lockres 1882 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &OCFS2_I(inode)->ip_open_lockres; lockres 1891 fs/ocfs2/dlmglue.c if(lockres->l_ro_holders) lockres 1892 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, DLM_LOCK_PR); lockres 1893 fs/ocfs2/dlmglue.c if(lockres->l_ex_holders) lockres 1894 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, DLM_LOCK_EX); lockres 1900 fs/ocfs2/dlmglue.c static int ocfs2_flock_handle_signal(struct ocfs2_lock_res *lockres, lockres 1904 fs/ocfs2/dlmglue.c struct ocfs2_super *osb = ocfs2_get_lockres_osb(lockres); lockres 1911 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1912 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_BUSY) { lockres 1913 fs/ocfs2/dlmglue.c ret = ocfs2_prepare_cancel_convert(osb, lockres); lockres 1915 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1916 fs/ocfs2/dlmglue.c ret = ocfs2_cancel_convert(osb, lockres); lockres 1923 fs/ocfs2/dlmglue.c lockres_add_mask_waiter(lockres, &mw, OCFS2_LOCK_BUSY, 0); lockres 1924 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1935 fs/ocfs2/dlmglue.c if (lockres->l_level == level) lockres 1939 fs/ocfs2/dlmglue.c lockres->l_flags, lockres->l_level, lockres->l_action); lockres 1941 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1974 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &fp->fp_flock; lockres 1980 fs/ocfs2/dlmglue.c if ((lockres->l_flags & OCFS2_LOCK_BUSY) || lockres 1981 fs/ocfs2/dlmglue.c (lockres->l_level > DLM_LOCK_NL)) { lockres 1984 fs/ocfs2/dlmglue.c "level: %u\n", lockres->l_name, lockres->l_flags, lockres 1985 fs/ocfs2/dlmglue.c lockres->l_level); lockres 1989 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 1990 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_ATTACHED)) { lockres 1991 fs/ocfs2/dlmglue.c lockres_add_mask_waiter(lockres, &mw, OCFS2_LOCK_BUSY, 0); lockres 1992 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 1998 fs/ocfs2/dlmglue.c ret = ocfs2_lock_create(osb, lockres, DLM_LOCK_NL, 0); lockres 2009 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 2012 fs/ocfs2/dlmglue.c lockres->l_action = OCFS2_AST_CONVERT; lockres 2014 fs/ocfs2/dlmglue.c lockres->l_requested = level; lockres 2015 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_BUSY); lockres 2017 fs/ocfs2/dlmglue.c lockres_add_mask_waiter(lockres, &mw, OCFS2_LOCK_BUSY, 0); lockres 2018 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 2020 fs/ocfs2/dlmglue.c ret = ocfs2_dlm_lock(osb->cconn, level, &lockres->l_lksb, lkm_flags, lockres 2021 fs/ocfs2/dlmglue.c lockres->l_name, OCFS2_LOCK_ID_MAX_LEN - 1); lockres 2024 fs/ocfs2/dlmglue.c ocfs2_log_dlm_error("ocfs2_dlm_lock", ret, lockres); lockres 2028 fs/ocfs2/dlmglue.c ocfs2_recover_from_dlm_error(lockres, 1); lockres 2029 fs/ocfs2/dlmglue.c lockres_remove_mask_waiter(lockres, &mw); lockres 2033 fs/ocfs2/dlmglue.c ret = ocfs2_wait_for_mask_interruptible(&mw, lockres); lockres 2050 fs/ocfs2/dlmglue.c ret = ocfs2_flock_handle_signal(lockres, level); lockres 2051 fs/ocfs2/dlmglue.c } else if (!ret && (level > lockres->l_level)) { lockres 2060 fs/ocfs2/dlmglue.c lockres->l_name, ex, trylock, ret); lockres 2070 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &fp->fp_flock; lockres 2076 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_ATTACHED)) lockres 2079 fs/ocfs2/dlmglue.c if (lockres->l_level == DLM_LOCK_NL) lockres 2083 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_flags, lockres->l_level, lockres 2084 fs/ocfs2/dlmglue.c lockres->l_action); lockres 2086 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 2090 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_BLOCKED); lockres 2091 fs/ocfs2/dlmglue.c lockres->l_blocking = DLM_LOCK_EX; lockres 2093 fs/ocfs2/dlmglue.c gen = ocfs2_prepare_downconvert(lockres, DLM_LOCK_NL); lockres 2094 fs/ocfs2/dlmglue.c lockres_add_mask_waiter(lockres, &mw, OCFS2_LOCK_BUSY, 0); lockres 2095 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 2097 fs/ocfs2/dlmglue.c ret = ocfs2_downconvert_lock(osb, lockres, DLM_LOCK_NL, 0, gen); lockres 2109 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 2116 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_BLOCKED) { lockres 2117 fs/ocfs2/dlmglue.c switch(lockres->l_blocking) { lockres 2119 fs/ocfs2/dlmglue.c if (!lockres->l_ex_holders && !lockres->l_ro_holders) lockres 2123 fs/ocfs2/dlmglue.c if (!lockres->l_ex_holders) lockres 2158 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres; lockres 2161 fs/ocfs2/dlmglue.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 2191 fs/ocfs2/dlmglue.c mlog_meta_lvb(0, lockres); lockres 2204 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres; lockres 2207 fs/ocfs2/dlmglue.c mlog_meta_lvb(0, lockres); lockres 2209 fs/ocfs2/dlmglue.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 2240 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 2242 fs/ocfs2/dlmglue.c struct ocfs2_meta_lvb *lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 2244 fs/ocfs2/dlmglue.c if (ocfs2_dlm_lvb_valid(&lockres->l_lksb) lockres 2258 fs/ocfs2/dlmglue.c static int ocfs2_should_refresh_lock_res(struct ocfs2_lock_res *lockres) lockres 2264 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 2265 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_NEEDS_REFRESH)) { lockres 2266 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 2270 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_REFRESHING) { lockres 2271 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 2273 fs/ocfs2/dlmglue.c ocfs2_wait_on_refreshing_lock(lockres); lockres 2278 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_REFRESHING); lockres 2279 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 2289 fs/ocfs2/dlmglue.c static inline void ocfs2_complete_lock_res_refresh(struct ocfs2_lock_res *lockres, lockres 2294 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 2295 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_REFRESHING); lockres 2297 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_NEEDS_REFRESH); lockres 2298 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 2300 fs/ocfs2/dlmglue.c wake_up(&lockres->l_event); lockres 2309 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres; lockres 2327 fs/ocfs2/dlmglue.c if (!ocfs2_should_refresh_lock_res(lockres)) lockres 2336 fs/ocfs2/dlmglue.c if (ocfs2_meta_lvb_is_trustable(inode, lockres)) { lockres 2374 fs/ocfs2/dlmglue.c ocfs2_track_lock_refresh(lockres); lockres 2379 fs/ocfs2/dlmglue.c ocfs2_complete_lock_res_refresh(lockres, status); lockres 2418 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = NULL; lockres 2443 fs/ocfs2/dlmglue.c lockres = &OCFS2_I(inode)->ip_inode_lockres; lockres 2449 fs/ocfs2/dlmglue.c status = __ocfs2_cluster_lock(osb, lockres, level, dlm_flags, lockres 2476 fs/ocfs2/dlmglue.c if (lockres) lockres 2477 fs/ocfs2/dlmglue.c ocfs2_complete_lock_res_refresh(lockres, 0); lockres 2605 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &OCFS2_I(inode)->ip_inode_lockres; lockres 2614 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, level); lockres 2664 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres; lockres 2669 fs/ocfs2/dlmglue.c lockres = &OCFS2_I(inode)->ip_inode_lockres; lockres 2670 fs/ocfs2/dlmglue.c tmp_oh = ocfs2_pid_holder(lockres, pid); lockres 2685 fs/ocfs2/dlmglue.c ocfs2_add_holder(lockres, oh); lockres 2720 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres; lockres 2722 fs/ocfs2/dlmglue.c lockres = &OCFS2_I(inode)->ip_inode_lockres; lockres 2730 fs/ocfs2/dlmglue.c ocfs2_remove_holder(lockres, oh); lockres 2736 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres; lockres 2746 fs/ocfs2/dlmglue.c lockres = &osb->osb_orphan_scan.os_lockres; lockres 2747 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, DLM_LOCK_EX, 0, 0); lockres 2751 fs/ocfs2/dlmglue.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 2752 fs/ocfs2/dlmglue.c if (ocfs2_dlm_lvb_valid(&lockres->l_lksb) && lockres 2763 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres; lockres 2767 fs/ocfs2/dlmglue.c lockres = &osb->osb_orphan_scan.os_lockres; lockres 2768 fs/ocfs2/dlmglue.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 2771 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, DLM_LOCK_EX); lockres 2780 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_super_lockres; lockres 2788 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, level, 0, 0); lockres 2798 fs/ocfs2/dlmglue.c status = ocfs2_should_refresh_lock_res(lockres); lockres 2802 fs/ocfs2/dlmglue.c ocfs2_complete_lock_res_refresh(lockres, status); lockres 2805 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, level); lockres 2808 fs/ocfs2/dlmglue.c ocfs2_track_lock_refresh(lockres); lockres 2818 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_super_lockres; lockres 2821 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, level); lockres 2827 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_rename_lockres; lockres 2835 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, DLM_LOCK_EX, 0, 0); lockres 2844 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_rename_lockres; lockres 2847 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, DLM_LOCK_EX); lockres 2853 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_nfs_sync_lockres; lockres 2861 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, ex ? LKM_EXMODE : LKM_PRMODE, lockres 2871 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_nfs_sync_lockres; lockres 2874 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, lockres 2883 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_trim_fs_lockres; lockres 2894 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, DLM_LOCK_EX, lockres 2903 fs/ocfs2/dlmglue.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 2904 fs/ocfs2/dlmglue.c if (ocfs2_dlm_lvb_valid(&lockres->l_lksb) && lockres 2923 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &osb->osb_trim_fs_lockres; lockres 2929 fs/ocfs2/dlmglue.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 2939 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, DLM_LOCK_EX); lockres 3111 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = v; lockres 3118 fs/ocfs2/dlmglue.c if (!lockres) lockres 3122 fs/ocfs2/dlmglue.c if (!lockres->l_lock_wait && dlm_debug->d_filter_secs) { lockres 3124 fs/ocfs2/dlmglue.c if (lockres->l_lock_prmode.ls_last > lockres 3125 fs/ocfs2/dlmglue.c lockres->l_lock_exmode.ls_last) lockres 3126 fs/ocfs2/dlmglue.c last = lockres->l_lock_prmode.ls_last; lockres 3128 fs/ocfs2/dlmglue.c last = lockres->l_lock_exmode.ls_last; lockres 3142 fs/ocfs2/dlmglue.c if (lockres->l_type == OCFS2_LOCK_TYPE_DENTRY) lockres 3144 fs/ocfs2/dlmglue.c lockres->l_name, lockres 3145 fs/ocfs2/dlmglue.c (unsigned int)ocfs2_get_dentry_lock_ino(lockres)); lockres 3147 fs/ocfs2/dlmglue.c seq_printf(m, "%.*s\t", OCFS2_LOCK_ID_MAX_LEN, lockres->l_name); lockres 3157 fs/ocfs2/dlmglue.c lockres->l_level, lockres 3158 fs/ocfs2/dlmglue.c lockres->l_flags, lockres 3159 fs/ocfs2/dlmglue.c lockres->l_action, lockres 3160 fs/ocfs2/dlmglue.c lockres->l_unlock_action, lockres 3161 fs/ocfs2/dlmglue.c lockres->l_ro_holders, lockres 3162 fs/ocfs2/dlmglue.c lockres->l_ex_holders, lockres 3163 fs/ocfs2/dlmglue.c lockres->l_requested, lockres 3164 fs/ocfs2/dlmglue.c lockres->l_blocking); lockres 3167 fs/ocfs2/dlmglue.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 3211 fs/ocfs2/dlmglue.c lock_num_prmode(lockres), lockres 3212 fs/ocfs2/dlmglue.c lock_num_exmode(lockres), lockres 3213 fs/ocfs2/dlmglue.c lock_num_prmode_failed(lockres), lockres 3214 fs/ocfs2/dlmglue.c lock_num_exmode_failed(lockres), lockres 3215 fs/ocfs2/dlmglue.c lock_total_prmode(lockres), lockres 3216 fs/ocfs2/dlmglue.c lock_total_exmode(lockres), lockres 3217 fs/ocfs2/dlmglue.c lock_max_prmode(lockres), lockres 3218 fs/ocfs2/dlmglue.c lock_max_exmode(lockres), lockres 3219 fs/ocfs2/dlmglue.c lock_refresh(lockres), lockres 3220 fs/ocfs2/dlmglue.c lock_last_prmode(lockres), lockres 3221 fs/ocfs2/dlmglue.c lock_last_exmode(lockres), lockres 3222 fs/ocfs2/dlmglue.c lock_wait(lockres)); lockres 3385 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 3392 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_INITIALIZED)) lockres 3395 fs/ocfs2/dlmglue.c if (lockres->l_ops->flags & LOCK_TYPE_USES_LVB) lockres 3398 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 3400 fs/ocfs2/dlmglue.c mlog_bug_on_msg(!(lockres->l_flags & OCFS2_LOCK_FREEING), lockres 3402 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_flags); lockres 3404 fs/ocfs2/dlmglue.c while (lockres->l_flags & OCFS2_LOCK_BUSY) { lockres 3407 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_flags, lockres->l_action, lockres 3408 fs/ocfs2/dlmglue.c lockres->l_unlock_action); lockres 3410 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3415 fs/ocfs2/dlmglue.c ocfs2_wait_on_busy_lock(lockres); lockres 3417 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 3420 fs/ocfs2/dlmglue.c if (lockres->l_ops->flags & LOCK_TYPE_USES_LVB) { lockres 3421 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_ATTACHED && lockres 3422 fs/ocfs2/dlmglue.c lockres->l_level == DLM_LOCK_EX && lockres 3423 fs/ocfs2/dlmglue.c !(lockres->l_flags & OCFS2_LOCK_NEEDS_REFRESH)) lockres 3424 fs/ocfs2/dlmglue.c lockres->l_ops->set_lvb(lockres); lockres 3427 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_BUSY) lockres 3429 fs/ocfs2/dlmglue.c lockres->l_name); lockres 3430 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_BLOCKED) lockres 3431 fs/ocfs2/dlmglue.c mlog(0, "destroying blocked lock: \"%s\"\n", lockres->l_name); lockres 3433 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_ATTACHED)) { lockres 3434 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3438 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_ATTACHED); lockres 3442 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_action != OCFS2_AST_INVALID); lockres 3445 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_BUSY); lockres 3446 fs/ocfs2/dlmglue.c lockres->l_unlock_action = OCFS2_UNLOCK_DROP_LOCK; lockres 3447 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3449 fs/ocfs2/dlmglue.c mlog(0, "lock %s\n", lockres->l_name); lockres 3451 fs/ocfs2/dlmglue.c ret = ocfs2_dlm_unlock(osb->cconn, &lockres->l_lksb, lkm_flags); lockres 3453 fs/ocfs2/dlmglue.c ocfs2_log_dlm_error("ocfs2_dlm_unlock", ret, lockres); lockres 3454 fs/ocfs2/dlmglue.c mlog(ML_ERROR, "lockres flags: %lu\n", lockres->l_flags); lockres 3455 fs/ocfs2/dlmglue.c ocfs2_dlm_dump_lksb(&lockres->l_lksb); lockres 3459 fs/ocfs2/dlmglue.c lockres->l_name); lockres 3461 fs/ocfs2/dlmglue.c ocfs2_wait_on_busy_lock(lockres); lockres 3467 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres); lockres 3476 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 3484 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 3485 fs/ocfs2/dlmglue.c lockres->l_flags |= OCFS2_LOCK_FREEING; lockres 3486 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_QUEUED && current == osb->dc_task) { lockres 3504 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3506 fs/ocfs2/dlmglue.c list_del_init(&lockres->l_blocked_list); lockres 3515 fs/ocfs2/dlmglue.c WARN_ON_ONCE(lockres->l_ops->post_unlock); lockres 3517 fs/ocfs2/dlmglue.c ocfs2_process_blocked_lock(osb, lockres); lockres 3520 fs/ocfs2/dlmglue.c while (lockres->l_flags & OCFS2_LOCK_QUEUED) { lockres 3521 fs/ocfs2/dlmglue.c lockres_add_mask_waiter(lockres, &mw, OCFS2_LOCK_QUEUED, 0); lockres 3522 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3524 fs/ocfs2/dlmglue.c mlog(0, "Waiting on lockres %s\n", lockres->l_name); lockres 3530 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 3532 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3536 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 3540 fs/ocfs2/dlmglue.c ocfs2_mark_lockres_freeing(osb, lockres); lockres 3541 fs/ocfs2/dlmglue.c ret = ocfs2_drop_lock(osb, lockres); lockres 3585 fs/ocfs2/dlmglue.c static unsigned int ocfs2_prepare_downconvert(struct ocfs2_lock_res *lockres, lockres 3588 fs/ocfs2/dlmglue.c assert_spin_locked(&lockres->l_lock); lockres 3590 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_blocking <= DLM_LOCK_NL); lockres 3592 fs/ocfs2/dlmglue.c if (lockres->l_level <= new_level) { lockres 3595 fs/ocfs2/dlmglue.c "block %d, pgen %d\n", lockres->l_name, lockres->l_level, lockres 3596 fs/ocfs2/dlmglue.c new_level, list_empty(&lockres->l_blocked_list), lockres 3597 fs/ocfs2/dlmglue.c list_empty(&lockres->l_mask_waiters), lockres->l_type, lockres 3598 fs/ocfs2/dlmglue.c lockres->l_flags, lockres->l_ro_holders, lockres 3599 fs/ocfs2/dlmglue.c lockres->l_ex_holders, lockres->l_action, lockres 3600 fs/ocfs2/dlmglue.c lockres->l_unlock_action, lockres->l_requested, lockres 3601 fs/ocfs2/dlmglue.c lockres->l_blocking, lockres->l_pending_gen); lockres 3606 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_level, new_level, lockres->l_blocking); lockres 3608 fs/ocfs2/dlmglue.c lockres->l_action = OCFS2_AST_DOWNCONVERT; lockres 3609 fs/ocfs2/dlmglue.c lockres->l_requested = new_level; lockres 3610 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_BUSY); lockres 3611 fs/ocfs2/dlmglue.c return lockres_set_pending(lockres); lockres 3615 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 3623 fs/ocfs2/dlmglue.c mlog(ML_BASTS, "lockres %s, level %d => %d\n", lockres->l_name, lockres 3624 fs/ocfs2/dlmglue.c lockres->l_level, new_level); lockres 3633 fs/ocfs2/dlmglue.c lockres->l_ops->flags & LOCK_TYPE_USES_LVB) lockres 3641 fs/ocfs2/dlmglue.c &lockres->l_lksb, lockres 3643 fs/ocfs2/dlmglue.c lockres->l_name, lockres 3645 fs/ocfs2/dlmglue.c lockres_clear_pending(lockres, generation, osb); lockres 3647 fs/ocfs2/dlmglue.c ocfs2_log_dlm_error("ocfs2_dlm_lock", ret, lockres); lockres 3648 fs/ocfs2/dlmglue.c ocfs2_recover_from_dlm_error(lockres, 1); lockres 3659 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 3661 fs/ocfs2/dlmglue.c assert_spin_locked(&lockres->l_lock); lockres 3663 fs/ocfs2/dlmglue.c if (lockres->l_unlock_action == OCFS2_UNLOCK_CANCEL_CONVERT) { lockres 3667 fs/ocfs2/dlmglue.c mlog(ML_BASTS, "lockres %s, skip convert\n", lockres->l_name); lockres 3672 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_action != OCFS2_AST_CONVERT && lockres 3673 fs/ocfs2/dlmglue.c lockres->l_action != OCFS2_AST_DOWNCONVERT); lockres 3676 fs/ocfs2/dlmglue.c lockres->l_unlock_action = OCFS2_UNLOCK_CANCEL_CONVERT; lockres 3678 fs/ocfs2/dlmglue.c mlog_bug_on_msg(!(lockres->l_flags & OCFS2_LOCK_BUSY), lockres 3680 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_flags); lockres 3682 fs/ocfs2/dlmglue.c mlog(ML_BASTS, "lockres %s\n", lockres->l_name); lockres 3688 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 3692 fs/ocfs2/dlmglue.c ret = ocfs2_dlm_unlock(osb->cconn, &lockres->l_lksb, lockres 3695 fs/ocfs2/dlmglue.c ocfs2_log_dlm_error("ocfs2_dlm_unlock", ret, lockres); lockres 3696 fs/ocfs2/dlmglue.c ocfs2_recover_from_dlm_error(lockres, 0); lockres 3699 fs/ocfs2/dlmglue.c mlog(ML_BASTS, "lockres %s\n", lockres->l_name); lockres 3705 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 3716 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 3722 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_BLOCKED)) { lockres 3723 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_blocking != DLM_LOCK_NL); lockres 3724 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3729 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_BUSY) { lockres 3753 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_PENDING) { lockres 3755 fs/ocfs2/dlmglue.c lockres->l_name); lockres 3760 fs/ocfs2/dlmglue.c ret = ocfs2_prepare_cancel_convert(osb, lockres); lockres 3761 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3763 fs/ocfs2/dlmglue.c ret = ocfs2_cancel_convert(osb, lockres); lockres 3779 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_UPCONVERT_FINISHING) lockres 3787 fs/ocfs2/dlmglue.c if (lockres->l_level == DLM_LOCK_NL) { lockres 3788 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_ex_holders || lockres->l_ro_holders); lockres 3789 fs/ocfs2/dlmglue.c mlog(ML_BASTS, "lockres %s, Aborting dc\n", lockres->l_name); lockres 3790 fs/ocfs2/dlmglue.c lockres->l_blocking = DLM_LOCK_NL; lockres 3791 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_BLOCKED); lockres 3792 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3798 fs/ocfs2/dlmglue.c if ((lockres->l_blocking == DLM_LOCK_EX) lockres 3799 fs/ocfs2/dlmglue.c && (lockres->l_ex_holders || lockres->l_ro_holders)) { lockres 3801 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_ex_holders, lockres 3802 fs/ocfs2/dlmglue.c lockres->l_ro_holders); lockres 3808 fs/ocfs2/dlmglue.c if (lockres->l_blocking == DLM_LOCK_PR && lockres 3809 fs/ocfs2/dlmglue.c lockres->l_ex_holders) { lockres 3811 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_ex_holders); lockres 3819 fs/ocfs2/dlmglue.c if ((lockres->l_ops->flags & LOCK_TYPE_REQUIRES_REFRESH) lockres 3820 fs/ocfs2/dlmglue.c && (lockres->l_flags & OCFS2_LOCK_REFRESHING)) { lockres 3822 fs/ocfs2/dlmglue.c lockres->l_name); lockres 3826 fs/ocfs2/dlmglue.c new_level = ocfs2_highest_compat_lock_level(lockres->l_blocking); lockres 3828 fs/ocfs2/dlmglue.c if (lockres->l_ops->check_downconvert lockres 3829 fs/ocfs2/dlmglue.c && !lockres->l_ops->check_downconvert(lockres, new_level)) { lockres 3831 fs/ocfs2/dlmglue.c lockres->l_name); lockres 3838 fs/ocfs2/dlmglue.c if (!lockres->l_ops->downconvert_worker) lockres 3845 fs/ocfs2/dlmglue.c blocking = lockres->l_blocking; lockres 3846 fs/ocfs2/dlmglue.c level = lockres->l_level; lockres 3847 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3849 fs/ocfs2/dlmglue.c ctl->unblock_action = lockres->l_ops->downconvert_worker(lockres, blocking); lockres 3853 fs/ocfs2/dlmglue.c lockres->l_name); lockres 3857 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 3858 fs/ocfs2/dlmglue.c if ((blocking != lockres->l_blocking) || (level != lockres->l_level)) { lockres 3862 fs/ocfs2/dlmglue.c "Recheck\n", lockres->l_name, blocking, lockres 3863 fs/ocfs2/dlmglue.c lockres->l_blocking, level, lockres->l_level); lockres 3870 fs/ocfs2/dlmglue.c if (lockres->l_ops->flags & LOCK_TYPE_USES_LVB) { lockres 3871 fs/ocfs2/dlmglue.c if (lockres->l_level == DLM_LOCK_EX) lockres 3880 fs/ocfs2/dlmglue.c if (set_lvb && !(lockres->l_flags & OCFS2_LOCK_NEEDS_REFRESH)) lockres 3881 fs/ocfs2/dlmglue.c lockres->l_ops->set_lvb(lockres); lockres 3884 fs/ocfs2/dlmglue.c gen = ocfs2_prepare_downconvert(lockres, new_level); lockres 3885 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3886 fs/ocfs2/dlmglue.c ret = ocfs2_downconvert_lock(osb, lockres, new_level, set_lvb, lockres 3895 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 3901 fs/ocfs2/dlmglue.c static int ocfs2_data_convert_worker(struct ocfs2_lock_res *lockres, lockres 3908 fs/ocfs2/dlmglue.c inode = ocfs2_lock_res_inode(lockres); lockres 3953 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres, lockres 3959 fs/ocfs2/dlmglue.c BUG_ON(lockres->l_level != DLM_LOCK_EX && !checkpointed); lockres 3968 fs/ocfs2/dlmglue.c static int ocfs2_check_meta_downconvert(struct ocfs2_lock_res *lockres, lockres 3971 fs/ocfs2/dlmglue.c struct inode *inode = ocfs2_lock_res_inode(lockres); lockres 3973 fs/ocfs2/dlmglue.c return ocfs2_ci_checkpointed(INODE_CACHE(inode), lockres, new_level); lockres 3976 fs/ocfs2/dlmglue.c static void ocfs2_set_meta_lvb(struct ocfs2_lock_res *lockres) lockres 3978 fs/ocfs2/dlmglue.c struct inode *inode = ocfs2_lock_res_inode(lockres); lockres 3989 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 3991 fs/ocfs2/dlmglue.c struct ocfs2_dentry_lock *dl = ocfs2_lock_res_dl(lockres); lockres 4014 fs/ocfs2/dlmglue.c static int ocfs2_dentry_convert_worker(struct ocfs2_lock_res *lockres, lockres 4017 fs/ocfs2/dlmglue.c struct ocfs2_dentry_lock *dl = ocfs2_lock_res_dl(lockres); lockres 4049 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 4051 fs/ocfs2/dlmglue.c if (!(lockres->l_flags & OCFS2_LOCK_FREEING) lockres 4057 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 4107 fs/ocfs2/dlmglue.c static int ocfs2_check_refcount_downconvert(struct ocfs2_lock_res *lockres, lockres 4111 fs/ocfs2/dlmglue.c ocfs2_lock_res_refcount_tree(lockres); lockres 4113 fs/ocfs2/dlmglue.c return ocfs2_ci_checkpointed(&tree->rf_ci, lockres, new_level); lockres 4116 fs/ocfs2/dlmglue.c static int ocfs2_refcount_convert_worker(struct ocfs2_lock_res *lockres, lockres 4120 fs/ocfs2/dlmglue.c ocfs2_lock_res_refcount_tree(lockres); lockres 4127 fs/ocfs2/dlmglue.c static void ocfs2_set_qinfo_lvb(struct ocfs2_lock_res *lockres) lockres 4130 fs/ocfs2/dlmglue.c struct ocfs2_mem_dqinfo *oinfo = ocfs2_lock_res_qinfo(lockres); lockres 4134 fs/ocfs2/dlmglue.c lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 4146 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &oinfo->dqi_gqlock; lockres 4151 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, level); lockres 4158 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &oinfo->dqi_gqlock; lockres 4159 fs/ocfs2/dlmglue.c struct ocfs2_qinfo_lvb *lvb = ocfs2_dlm_lvb(&lockres->l_lksb); lockres 4164 fs/ocfs2/dlmglue.c if (ocfs2_dlm_lvb_valid(&lockres->l_lksb) && lockres 4190 fs/ocfs2/dlmglue.c ocfs2_track_lock_refresh(lockres); lockres 4201 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &oinfo->dqi_gqlock; lockres 4215 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, level, 0, 0); lockres 4220 fs/ocfs2/dlmglue.c if (!ocfs2_should_refresh_lock_res(lockres)) lockres 4226 fs/ocfs2/dlmglue.c ocfs2_complete_lock_res_refresh(lockres, status); lockres 4235 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &ref_tree->rf_lockres; lockres 4236 fs/ocfs2/dlmglue.c struct ocfs2_super *osb = lockres->l_priv; lockres 4245 fs/ocfs2/dlmglue.c status = ocfs2_cluster_lock(osb, lockres, level, 0, 0); lockres 4255 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres = &ref_tree->rf_lockres; lockres 4256 fs/ocfs2/dlmglue.c struct ocfs2_super *osb = lockres->l_priv; lockres 4259 fs/ocfs2/dlmglue.c ocfs2_cluster_unlock(osb, lockres, level); lockres 4263 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 4273 fs/ocfs2/dlmglue.c BUG_ON(!lockres); lockres 4274 fs/ocfs2/dlmglue.c BUG_ON(!lockres->l_ops); lockres 4276 fs/ocfs2/dlmglue.c mlog(ML_BASTS, "lockres %s blocked\n", lockres->l_name); lockres 4283 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 4284 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_FREEING) lockres 4286 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 4288 fs/ocfs2/dlmglue.c status = ocfs2_unblock_lock(osb, lockres, &ctl); lockres 4292 fs/ocfs2/dlmglue.c spin_lock_irqsave(&lockres->l_lock, flags); lockres 4294 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_FREEING || !ctl.requeue) { lockres 4295 fs/ocfs2/dlmglue.c lockres_clear_flags(lockres, OCFS2_LOCK_QUEUED); lockres 4297 fs/ocfs2/dlmglue.c ocfs2_schedule_blocked_lock(osb, lockres); lockres 4299 fs/ocfs2/dlmglue.c mlog(ML_BASTS, "lockres %s, requeue = %s.\n", lockres->l_name, lockres 4301 fs/ocfs2/dlmglue.c spin_unlock_irqrestore(&lockres->l_lock, flags); lockres 4304 fs/ocfs2/dlmglue.c && lockres->l_ops->post_unlock) lockres 4305 fs/ocfs2/dlmglue.c lockres->l_ops->post_unlock(osb, lockres); lockres 4309 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres) lockres 4313 fs/ocfs2/dlmglue.c assert_spin_locked(&lockres->l_lock); lockres 4315 fs/ocfs2/dlmglue.c if (lockres->l_flags & OCFS2_LOCK_FREEING) { lockres 4320 fs/ocfs2/dlmglue.c lockres->l_name, lockres->l_flags); lockres 4324 fs/ocfs2/dlmglue.c lockres_or_flags(lockres, OCFS2_LOCK_QUEUED); lockres 4327 fs/ocfs2/dlmglue.c if (list_empty(&lockres->l_blocked_list)) { lockres 4328 fs/ocfs2/dlmglue.c list_add_tail(&lockres->l_blocked_list, lockres 4339 fs/ocfs2/dlmglue.c struct ocfs2_lock_res *lockres; lockres 4354 fs/ocfs2/dlmglue.c lockres = list_entry(osb->blocked_lock_list.next, lockres 4356 fs/ocfs2/dlmglue.c list_del_init(&lockres->l_blocked_list); lockres 4363 fs/ocfs2/dlmglue.c ocfs2_process_blocked_lock(osb, lockres); lockres 117 fs/ocfs2/dlmglue.h void ocfs2_file_lock_res_init(struct ocfs2_lock_res *lockres, lockres 120 fs/ocfs2/dlmglue.h void ocfs2_qinfo_lock_res_init(struct ocfs2_lock_res *lockres, lockres 122 fs/ocfs2/dlmglue.h void ocfs2_refcount_lock_res_init(struct ocfs2_lock_res *lockres, lockres 188 fs/ocfs2/dlmglue.h struct ocfs2_lock_res *lockres); lockres 190 fs/ocfs2/dlmglue.h struct ocfs2_lock_res *lockres); lockres 29 fs/ocfs2/locks.c struct ocfs2_lock_res *lockres = &fp->fp_flock; lockres 38 fs/ocfs2/locks.c if (lockres->l_flags & OCFS2_LOCK_ATTACHED && lockres 39 fs/ocfs2/locks.c lockres->l_level > LKM_NLMODE) { lockres 43 fs/ocfs2/locks.c if (lockres->l_level == LKM_EXMODE)