Lines Matching refs:lock
57 #define dlm_lock_is_remote(dlm, lock) ((lock)->ml.node != (dlm)->node_num) argument
291 struct dlm_lock *lock, *target; in dlm_shuffle_lists() local
318 list_for_each_entry(lock, &res->granted, list) { in dlm_shuffle_lists()
319 if (lock==target) in dlm_shuffle_lists()
321 if (!dlm_lock_compatible(lock->ml.type, in dlm_shuffle_lists()
325 if (lock->ml.highest_blocked == LKM_IVMODE) { in dlm_shuffle_lists()
327 __dlm_queue_bast(dlm, lock); in dlm_shuffle_lists()
330 if (lock->ml.highest_blocked < target->ml.convert_type) in dlm_shuffle_lists()
331 lock->ml.highest_blocked = in dlm_shuffle_lists()
336 list_for_each_entry(lock, &res->converting, list) { in dlm_shuffle_lists()
337 if (lock==target) in dlm_shuffle_lists()
339 if (!dlm_lock_compatible(lock->ml.type, in dlm_shuffle_lists()
342 if (lock->ml.highest_blocked == LKM_IVMODE) { in dlm_shuffle_lists()
344 __dlm_queue_bast(dlm, lock); in dlm_shuffle_lists()
346 if (lock->ml.highest_blocked < target->ml.convert_type) in dlm_shuffle_lists()
347 lock->ml.highest_blocked = in dlm_shuffle_lists()
385 list_for_each_entry(lock, &res->granted, list) { in dlm_shuffle_lists()
386 if (lock==target) in dlm_shuffle_lists()
388 if (!dlm_lock_compatible(lock->ml.type, target->ml.type)) { in dlm_shuffle_lists()
390 if (lock->ml.highest_blocked == LKM_IVMODE) { in dlm_shuffle_lists()
392 __dlm_queue_bast(dlm, lock); in dlm_shuffle_lists()
394 if (lock->ml.highest_blocked < target->ml.type) in dlm_shuffle_lists()
395 lock->ml.highest_blocked = target->ml.type; in dlm_shuffle_lists()
399 list_for_each_entry(lock, &res->converting, list) { in dlm_shuffle_lists()
400 if (lock==target) in dlm_shuffle_lists()
402 if (!dlm_lock_compatible(lock->ml.type, target->ml.type)) { in dlm_shuffle_lists()
404 if (lock->ml.highest_blocked == LKM_IVMODE) { in dlm_shuffle_lists()
406 __dlm_queue_bast(dlm, lock); in dlm_shuffle_lists()
408 if (lock->ml.highest_blocked < target->ml.type) in dlm_shuffle_lists()
409 lock->ml.highest_blocked = target->ml.type; in dlm_shuffle_lists()
519 struct dlm_lock *lock; in dlm_flush_asts() local
525 lock = list_entry(dlm->pending_asts.next, in dlm_flush_asts()
528 dlm_lock_get(lock); in dlm_flush_asts()
529 res = lock->lockres; in dlm_flush_asts()
533 dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)), in dlm_flush_asts()
534 dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)), in dlm_flush_asts()
535 lock->ml.type, lock->ml.node); in dlm_flush_asts()
537 BUG_ON(!lock->ast_pending); in dlm_flush_asts()
540 list_del_init(&lock->ast_list); in dlm_flush_asts()
541 dlm_lock_put(lock); in dlm_flush_asts()
544 if (lock->ml.node != dlm->node_num) { in dlm_flush_asts()
545 ret = dlm_do_remote_ast(dlm, res, lock); in dlm_flush_asts()
549 dlm_do_local_ast(dlm, res, lock); in dlm_flush_asts()
555 if (!list_empty(&lock->ast_list)) { in dlm_flush_asts()
560 lock->ast_pending = 0; in dlm_flush_asts()
564 dlm_lock_put(lock); in dlm_flush_asts()
569 lock = list_entry(dlm->pending_basts.next, in dlm_flush_asts()
572 dlm_lock_get(lock); in dlm_flush_asts()
573 res = lock->lockres; in dlm_flush_asts()
575 BUG_ON(!lock->bast_pending); in dlm_flush_asts()
578 spin_lock(&lock->spinlock); in dlm_flush_asts()
579 BUG_ON(lock->ml.highest_blocked <= LKM_IVMODE); in dlm_flush_asts()
580 hi = lock->ml.highest_blocked; in dlm_flush_asts()
581 lock->ml.highest_blocked = LKM_IVMODE; in dlm_flush_asts()
582 spin_unlock(&lock->spinlock); in dlm_flush_asts()
585 list_del_init(&lock->bast_list); in dlm_flush_asts()
586 dlm_lock_put(lock); in dlm_flush_asts()
592 dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)), in dlm_flush_asts()
593 dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)), in dlm_flush_asts()
594 hi, lock->ml.node); in dlm_flush_asts()
596 if (lock->ml.node != dlm->node_num) { in dlm_flush_asts()
597 ret = dlm_send_proxy_bast(dlm, res, lock, hi); in dlm_flush_asts()
601 dlm_do_local_bast(dlm, res, lock, hi); in dlm_flush_asts()
607 if (!list_empty(&lock->bast_list)) { in dlm_flush_asts()
612 lock->bast_pending = 0; in dlm_flush_asts()
616 dlm_lock_put(lock); in dlm_flush_asts()