Lines Matching refs:lock
57 #define dlm_lock_is_remote(dlm, lock) ((lock)->ml.node != (dlm)->node_num) argument
301 struct dlm_lock *lock, *target; in dlm_shuffle_lists() local
328 list_for_each_entry(lock, &res->granted, list) { in dlm_shuffle_lists()
329 if (lock==target) in dlm_shuffle_lists()
331 if (!dlm_lock_compatible(lock->ml.type, in dlm_shuffle_lists()
335 if (lock->ml.highest_blocked == LKM_IVMODE) { in dlm_shuffle_lists()
337 __dlm_queue_bast(dlm, lock); in dlm_shuffle_lists()
340 if (lock->ml.highest_blocked < target->ml.convert_type) in dlm_shuffle_lists()
341 lock->ml.highest_blocked = in dlm_shuffle_lists()
346 list_for_each_entry(lock, &res->converting, list) { in dlm_shuffle_lists()
347 if (lock==target) in dlm_shuffle_lists()
349 if (!dlm_lock_compatible(lock->ml.type, in dlm_shuffle_lists()
352 if (lock->ml.highest_blocked == LKM_IVMODE) { in dlm_shuffle_lists()
354 __dlm_queue_bast(dlm, lock); in dlm_shuffle_lists()
356 if (lock->ml.highest_blocked < target->ml.convert_type) in dlm_shuffle_lists()
357 lock->ml.highest_blocked = in dlm_shuffle_lists()
395 list_for_each_entry(lock, &res->granted, list) { in dlm_shuffle_lists()
396 if (lock==target) in dlm_shuffle_lists()
398 if (!dlm_lock_compatible(lock->ml.type, target->ml.type)) { in dlm_shuffle_lists()
400 if (lock->ml.highest_blocked == LKM_IVMODE) { in dlm_shuffle_lists()
402 __dlm_queue_bast(dlm, lock); in dlm_shuffle_lists()
404 if (lock->ml.highest_blocked < target->ml.type) in dlm_shuffle_lists()
405 lock->ml.highest_blocked = target->ml.type; in dlm_shuffle_lists()
409 list_for_each_entry(lock, &res->converting, list) { in dlm_shuffle_lists()
410 if (lock==target) in dlm_shuffle_lists()
412 if (!dlm_lock_compatible(lock->ml.type, target->ml.type)) { in dlm_shuffle_lists()
414 if (lock->ml.highest_blocked == LKM_IVMODE) { in dlm_shuffle_lists()
416 __dlm_queue_bast(dlm, lock); in dlm_shuffle_lists()
418 if (lock->ml.highest_blocked < target->ml.type) in dlm_shuffle_lists()
419 lock->ml.highest_blocked = target->ml.type; in dlm_shuffle_lists()
530 struct dlm_lock *lock; in dlm_flush_asts() local
536 lock = list_entry(dlm->pending_asts.next, in dlm_flush_asts()
539 dlm_lock_get(lock); in dlm_flush_asts()
540 res = lock->lockres; in dlm_flush_asts()
544 dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)), in dlm_flush_asts()
545 dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)), in dlm_flush_asts()
546 lock->ml.type, lock->ml.node); in dlm_flush_asts()
548 BUG_ON(!lock->ast_pending); in dlm_flush_asts()
551 list_del_init(&lock->ast_list); in dlm_flush_asts()
552 dlm_lock_put(lock); in dlm_flush_asts()
555 if (lock->ml.node != dlm->node_num) { in dlm_flush_asts()
556 ret = dlm_do_remote_ast(dlm, res, lock); in dlm_flush_asts()
560 dlm_do_local_ast(dlm, res, lock); in dlm_flush_asts()
566 if (!list_empty(&lock->ast_list)) { in dlm_flush_asts()
571 lock->ast_pending = 0; in dlm_flush_asts()
575 dlm_lock_put(lock); in dlm_flush_asts()
580 lock = list_entry(dlm->pending_basts.next, in dlm_flush_asts()
583 dlm_lock_get(lock); in dlm_flush_asts()
584 res = lock->lockres; in dlm_flush_asts()
586 BUG_ON(!lock->bast_pending); in dlm_flush_asts()
589 spin_lock(&lock->spinlock); in dlm_flush_asts()
590 BUG_ON(lock->ml.highest_blocked <= LKM_IVMODE); in dlm_flush_asts()
591 hi = lock->ml.highest_blocked; in dlm_flush_asts()
592 lock->ml.highest_blocked = LKM_IVMODE; in dlm_flush_asts()
593 spin_unlock(&lock->spinlock); in dlm_flush_asts()
596 list_del_init(&lock->bast_list); in dlm_flush_asts()
597 dlm_lock_put(lock); in dlm_flush_asts()
603 dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)), in dlm_flush_asts()
604 dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)), in dlm_flush_asts()
605 hi, lock->ml.node); in dlm_flush_asts()
607 if (lock->ml.node != dlm->node_num) { in dlm_flush_asts()
608 ret = dlm_send_proxy_bast(dlm, res, lock, hi); in dlm_flush_asts()
612 dlm_do_local_bast(dlm, res, lock, hi); in dlm_flush_asts()
618 if (!list_empty(&lock->bast_list)) { in dlm_flush_asts()
623 lock->bast_pending = 0; in dlm_flush_asts()
627 dlm_lock_put(lock); in dlm_flush_asts()