• Home
  • Raw
  • Download

Lines Matching refs:lock

47 					       struct dlm_lock *lock, int flags);
51 static void dlm_lock_detach_lockres(struct dlm_lock *lock);
76 struct dlm_lock *lock) in dlm_can_grant_new_lock() argument
81 if (!dlm_lock_compatible(tmplock->ml.type, lock->ml.type)) in dlm_can_grant_new_lock()
86 if (!dlm_lock_compatible(tmplock->ml.type, lock->ml.type)) in dlm_can_grant_new_lock()
89 lock->ml.type)) in dlm_can_grant_new_lock()
105 struct dlm_lock *lock, int flags) in dlmlock_master() argument
110 mlog(0, "type=%d\n", lock->ml.type); in dlmlock_master()
117 lock->ml.node != dlm->node_num) { in dlmlock_master()
126 if (dlm_can_grant_new_lock(res, lock)) { in dlmlock_master()
129 lock->lksb->status = DLM_NORMAL; in dlmlock_master()
131 dlm_lock_get(lock); in dlmlock_master()
132 list_add_tail(&lock->list, &res->granted); in dlmlock_master()
146 lock->ml.node); in dlmlock_master()
157 lock->ml.node); in dlmlock_master()
161 dlm_lock_get(lock); in dlmlock_master()
162 list_add_tail(&lock->list, &res->blocked); in dlmlock_master()
172 dlm_queue_ast(dlm, lock); in dlmlock_master()
184 struct dlm_lock *lock) in dlm_revert_pending_lock() argument
187 list_del_init(&lock->list); in dlm_revert_pending_lock()
188 lock->lksb->flags &= ~DLM_LKSB_GET_LVB; in dlm_revert_pending_lock()
201 struct dlm_lock *lock, int flags) in dlmlock_remote() argument
207 lock->ml.type, res->lockname.len, in dlmlock_remote()
223 dlm_lock_get(lock); in dlmlock_remote()
224 list_add_tail(&lock->list, &res->blocked); in dlmlock_remote()
225 lock->lock_pending = 1; in dlmlock_remote()
230 status = dlm_send_remote_lock_request(dlm, res, lock, flags); in dlmlock_remote()
234 lock->lock_pending = 0; in dlmlock_remote()
255 dlm_revert_pending_lock(res, lock); in dlmlock_remote()
256 dlm_lock_put(lock); in dlmlock_remote()
266 list_move_tail(&lock->list, &res->granted); in dlmlock_remote()
287 struct dlm_lock *lock, int flags) in dlm_send_remote_lock_request() argument
295 create.requested_type = lock->ml.type; in dlm_send_remote_lock_request()
296 create.cookie = lock->ml.cookie; in dlm_send_remote_lock_request()
326 void dlm_lock_get(struct dlm_lock *lock) in dlm_lock_get() argument
328 kref_get(&lock->lock_refs); in dlm_lock_get()
331 void dlm_lock_put(struct dlm_lock *lock) in dlm_lock_put() argument
333 kref_put(&lock->lock_refs, dlm_lock_release); in dlm_lock_put()
338 struct dlm_lock *lock; in dlm_lock_release() local
340 lock = container_of(kref, struct dlm_lock, lock_refs); in dlm_lock_release()
342 BUG_ON(!list_empty(&lock->list)); in dlm_lock_release()
343 BUG_ON(!list_empty(&lock->ast_list)); in dlm_lock_release()
344 BUG_ON(!list_empty(&lock->bast_list)); in dlm_lock_release()
345 BUG_ON(lock->ast_pending); in dlm_lock_release()
346 BUG_ON(lock->bast_pending); in dlm_lock_release()
348 dlm_lock_detach_lockres(lock); in dlm_lock_release()
350 if (lock->lksb_kernel_allocated) { in dlm_lock_release()
352 kfree(lock->lksb); in dlm_lock_release()
354 kmem_cache_free(dlm_lock_cache, lock); in dlm_lock_release()
358 void dlm_lock_attach_lockres(struct dlm_lock *lock, in dlm_lock_attach_lockres() argument
362 lock->lockres = res; in dlm_lock_attach_lockres()
366 static void dlm_lock_detach_lockres(struct dlm_lock *lock) in dlm_lock_detach_lockres() argument
370 res = lock->lockres; in dlm_lock_detach_lockres()
372 lock->lockres = NULL; in dlm_lock_detach_lockres()
410 struct dlm_lock *lock; in dlm_new_lock() local
413 lock = kmem_cache_zalloc(dlm_lock_cache, GFP_NOFS); in dlm_new_lock()
414 if (!lock) in dlm_new_lock()
421 kmem_cache_free(dlm_lock_cache, lock); in dlm_new_lock()
427 dlm_init_lock(lock, type, node, cookie); in dlm_new_lock()
429 lock->lksb_kernel_allocated = 1; in dlm_new_lock()
430 lock->lksb = lksb; in dlm_new_lock()
431 lksb->lockid = lock; in dlm_new_lock()
432 return lock; in dlm_new_lock()
549 struct dlm_lock *lock = NULL; in dlmlock() local
588 lock = lksb->lockid; in dlmlock()
589 if (!lock) { in dlmlock()
595 res = lock->lockres; in dlmlock()
608 if (lock->lksb != lksb || lock->ast != ast || in dlmlock()
609 lock->bast != bast || lock->astdata != data) { in dlmlock()
614 "astdata=%p\n", lock->lksb, lock->ast, in dlmlock()
615 lock->bast, lock->astdata); in dlmlock()
622 status = dlmconvert_master(dlm, res, lock, flags, mode); in dlmlock()
624 status = dlmconvert_remote(dlm, res, lock, flags, mode); in dlmlock()
653 lock = dlm_new_lock(mode, dlm->node_num, tmpcookie, lksb); in dlmlock()
654 if (!lock) { in dlmlock()
671 mlog(0, "creating lock: lock=%p res=%p\n", lock, res); in dlmlock()
673 dlm_lock_attach_lockres(lock, res); in dlmlock()
674 lock->ast = ast; in dlmlock()
675 lock->bast = bast; in dlmlock()
676 lock->astdata = data; in dlmlock()
688 lock->lksb->flags |= DLM_LKSB_GET_LVB; in dlmlock()
693 status = dlmlock_master(dlm, res, lock, flags); in dlmlock()
695 status = dlmlock_remote(dlm, res, lock, flags); in dlmlock()
723 lock->lksb->flags &= ~DLM_LKSB_GET_LVB; in dlmlock()
732 if (lock && !convert) in dlmlock()
733 dlm_lock_put(lock); in dlmlock()