Lines Matching refs:lock
60 struct dlm_lock *lock,
65 struct dlm_lock *lock,
71 struct dlm_lock *lock,
100 struct dlm_lock *lock, in dlmunlock_common() argument
121 in_use = !list_empty(&lock->ast_list); in dlmunlock_common()
141 spin_lock(&lock->spinlock); in dlmunlock_common()
156 status = dlm_get_cancel_actions(dlm, res, lock, lksb, &actions); in dlmunlock_common()
158 status = dlm_get_unlock_actions(dlm, res, lock, lksb, &actions); in dlmunlock_common()
177 lock->cancel_pending = 1; in dlmunlock_common()
179 lock->unlock_pending = 1; in dlmunlock_common()
180 spin_unlock(&lock->spinlock); in dlmunlock_common()
182 status = dlm_send_remote_unlock_request(dlm, res, lock, lksb, in dlmunlock_common()
185 spin_lock(&lock->spinlock); in dlmunlock_common()
210 lock->cancel_pending = 0; in dlmunlock_common()
212 lock->unlock_pending = 0; in dlmunlock_common()
218 dlm_lock_get(lock); in dlmunlock_common()
221 list_del_init(&lock->list); in dlmunlock_common()
222 dlm_lock_put(lock); in dlmunlock_common()
225 dlm_lock_get(lock); in dlmunlock_common()
226 list_add_tail(&lock->list, &res->granted); in dlmunlock_common()
231 lock->ml.convert_type = LKM_IVMODE; in dlmunlock_common()
235 dlm_lock_put(lock); in dlmunlock_common()
239 if (!dlm_lock_on_list(&res->converting, lock)) in dlmunlock_common()
240 BUG_ON(lock->ml.convert_type != LKM_IVMODE); in dlmunlock_common()
242 BUG_ON(lock->ml.convert_type == LKM_IVMODE); in dlmunlock_common()
243 spin_unlock(&lock->spinlock); in dlmunlock_common()
252 dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)), in dlmunlock_common()
253 dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)), in dlmunlock_common()
254 atomic_read(&lock->lock_refs.refcount)-1); in dlmunlock_common()
255 dlm_lock_put(lock); in dlmunlock_common()
268 struct dlm_lock *lock) in dlm_commit_pending_unlock() argument
272 list_del_init(&lock->list); in dlm_commit_pending_unlock()
276 struct dlm_lock *lock) in dlm_commit_pending_cancel() argument
278 list_move_tail(&lock->list, &res->granted); in dlm_commit_pending_cancel()
279 lock->ml.convert_type = LKM_IVMODE; in dlm_commit_pending_cancel()
285 struct dlm_lock *lock, in dlmunlock_master() argument
290 return dlmunlock_common(dlm, res, lock, lksb, flags, call_ast, 1); in dlmunlock_master()
295 struct dlm_lock *lock, in dlmunlock_remote() argument
299 return dlmunlock_common(dlm, res, lock, lksb, flags, call_ast, 0); in dlmunlock_remote()
311 struct dlm_lock *lock, in dlm_send_remote_unlock_request() argument
338 unlock.cookie = lock->ml.cookie; in dlm_send_remote_unlock_request()
348 vec[1].iov_base = lock->lksb->lvb; in dlm_send_remote_unlock_request()
397 struct dlm_lock *lock = NULL; in dlm_unlock_lock_handler() local
466 list_for_each_entry(lock, queue, list) { in dlm_unlock_lock_handler()
467 if (lock->ml.cookie == unlock->cookie && in dlm_unlock_lock_handler()
468 lock->ml.node == unlock->node_idx) { in dlm_unlock_lock_handler()
469 dlm_lock_get(lock); in dlm_unlock_lock_handler()
486 lksb = lock->lksb; in dlm_unlock_lock_handler()
488 lock->ml.type != LKM_EXMODE) in dlm_unlock_lock_handler()
499 status = dlmunlock_master(dlm, res, lock, lksb, flags, &ignore); in dlm_unlock_lock_handler()
516 dlm_lock_put(lock); in dlm_unlock_lock_handler()
530 struct dlm_lock *lock, in dlm_get_cancel_actions() argument
536 if (dlm_lock_on_list(&res->blocked, lock)) { in dlm_get_cancel_actions()
541 } else if (dlm_lock_on_list(&res->converting, lock)) { in dlm_get_cancel_actions()
548 } else if (dlm_lock_on_list(&res->granted, lock)) { in dlm_get_cancel_actions()
562 struct dlm_lock *lock, in dlm_get_unlock_actions() argument
569 if (!dlm_lock_on_list(&res->granted, lock)) { in dlm_get_unlock_actions()
592 struct dlm_lock *lock = NULL; in dlmunlock() local
615 lock = lksb->lockid; in dlmunlock()
616 BUG_ON(!lock); in dlmunlock()
617 dlm_lock_get(lock); in dlmunlock()
619 res = lock->lockres; in dlmunlock()
625 mlog(0, "lock=%p res=%p\n", lock, res); in dlmunlock()
629 if (flags & LKM_VALBLK && lock->ml.type != LKM_EXMODE) in dlmunlock()
634 status = dlmunlock_master(dlm, res, lock, lksb, flags, in dlmunlock()
639 status = dlmunlock_remote(dlm, res, lock, lksb, flags, in dlmunlock()
676 dlm_lock_basts_flushed(dlm, lock)); in dlmunlock()
692 dlm_lock_put(lock); in dlmunlock()