Lines Matching refs:res
61 struct dlm_lock_resource *res,
91 static int dlm_can_grant_new_lock(struct dlm_lock_resource *res, in dlm_can_grant_new_lock() argument
97 list_for_each(iter, &res->granted) { in dlm_can_grant_new_lock()
104 list_for_each(iter, &res->converting) { in dlm_can_grant_new_lock()
125 struct dlm_lock_resource *res, in dlmlock_master() argument
133 spin_lock(&res->spinlock); in dlmlock_master()
136 status = __dlm_lockres_state_to_status(res); in dlmlock_master()
140 spin_unlock(&res->spinlock); in dlmlock_master()
144 __dlm_wait_on_lockres(res); in dlmlock_master()
145 __dlm_lockres_reserve_ast(res); in dlmlock_master()
147 if (dlm_can_grant_new_lock(res, lock)) { in dlmlock_master()
153 list_add_tail(&lock->list, &res->granted); in dlmlock_master()
160 if (!dlm_is_recovery_lock(res->lockname.name, in dlmlock_master()
161 res->lockname.len)) { in dlmlock_master()
174 if (dlm_is_recovery_lock(res->lockname.name, in dlmlock_master()
175 res->lockname.len)) { in dlmlock_master()
182 list_add_tail(&lock->list, &res->blocked); in dlmlock_master()
187 spin_unlock(&res->spinlock); in dlmlock_master()
188 wake_up(&res->wq); in dlmlock_master()
194 dlm_lockres_release_ast(dlm, res); in dlmlock_master()
196 dlm_lockres_calc_usage(dlm, res); in dlmlock_master()
198 dlm_kick_thread(dlm, res); in dlmlock_master()
203 void dlm_revert_pending_lock(struct dlm_lock_resource *res, in dlm_revert_pending_lock() argument
220 struct dlm_lock_resource *res, in dlmlock_remote() argument
227 lock->ml.type, res->lockname.len, in dlmlock_remote()
228 res->lockname.name, flags); in dlmlock_remote()
234 spin_lock(&res->spinlock); in dlmlock_remote()
235 __dlm_wait_on_lockres(res); in dlmlock_remote()
236 if (res->owner == dlm->node_num) { in dlmlock_remote()
237 spin_unlock(&res->spinlock); in dlmlock_remote()
240 res->state |= DLM_LOCK_RES_IN_PROGRESS; in dlmlock_remote()
244 list_add_tail(&lock->list, &res->blocked); in dlmlock_remote()
246 spin_unlock(&res->spinlock); in dlmlock_remote()
250 status = dlm_send_remote_lock_request(dlm, res, lock, flags); in dlmlock_remote()
252 spin_lock(&res->spinlock); in dlmlock_remote()
253 res->state &= ~DLM_LOCK_RES_IN_PROGRESS; in dlmlock_remote()
257 dlm_is_recovery_lock(res->lockname.name, in dlmlock_remote()
258 res->lockname.len)) { in dlmlock_remote()
264 dlm->name, res->owner); in dlmlock_remote()
275 dlm_revert_pending_lock(res, lock); in dlmlock_remote()
277 } else if (dlm_is_recovery_lock(res->lockname.name, in dlmlock_remote()
278 res->lockname.len)) { in dlmlock_remote()
285 dlm->name, dlm->node_num, res->owner); in dlmlock_remote()
286 list_move_tail(&lock->list, &res->granted); in dlmlock_remote()
288 spin_unlock(&res->spinlock); in dlmlock_remote()
291 dlm_lockres_calc_usage(dlm, res); in dlmlock_remote()
293 wake_up(&res->wq); in dlmlock_remote()
306 struct dlm_lock_resource *res, in dlm_send_remote_lock_request() argument
317 create.namelen = res->lockname.len; in dlm_send_remote_lock_request()
319 memcpy(create.name, res->lockname.name, create.namelen); in dlm_send_remote_lock_request()
322 sizeof(create), res->owner, &status); in dlm_send_remote_lock_request()
329 create.name, res->owner); in dlm_send_remote_lock_request()
330 dlm_print_one_lock_resource(res); in dlm_send_remote_lock_request()
336 tmpret, res->owner); in dlm_send_remote_lock_request()
379 struct dlm_lock_resource *res) in dlm_lock_attach_lockres() argument
381 dlm_lockres_get(res); in dlm_lock_attach_lockres()
382 lock->lockres = res; in dlm_lock_attach_lockres()
388 struct dlm_lock_resource *res; in dlm_lock_detach_lockres() local
390 res = lock->lockres; in dlm_lock_detach_lockres()
391 if (res) { in dlm_lock_detach_lockres()
394 dlm_lockres_put(res); in dlm_lock_detach_lockres()
467 struct dlm_lock_resource *res = NULL; in dlm_create_lock_handler() local
513 res = dlm_lookup_lockres(dlm, name, namelen); in dlm_create_lock_handler()
514 if (!res) { in dlm_create_lock_handler()
519 spin_lock(&res->spinlock); in dlm_create_lock_handler()
520 status = __dlm_lockres_state_to_status(res); in dlm_create_lock_handler()
521 spin_unlock(&res->spinlock); in dlm_create_lock_handler()
528 dlm_lock_attach_lockres(newlock, res); in dlm_create_lock_handler()
530 status = dlmlock_master(dlm, res, newlock, be32_to_cpu(create->flags)); in dlm_create_lock_handler()
536 if (res) in dlm_create_lock_handler()
537 dlm_lockres_put(res); in dlm_create_lock_handler()
568 struct dlm_lock_resource *res = NULL; in dlmlock() local
615 res = lock->lockres; in dlmlock()
616 if (!res) { in dlmlock()
621 dlm_lockres_get(res); in dlmlock()
641 if (res->owner == dlm->node_num) in dlmlock()
642 status = dlmconvert_master(dlm, res, lock, flags, mode); in dlmlock()
644 status = dlmconvert_remote(dlm, res, lock, flags, mode); in dlmlock()
683 res = dlm_get_lock_resource(dlm, name, namelen, flags); in dlmlock()
684 if (!res) { in dlmlock()
691 mlog(0, "creating lock: lock=%p res=%p\n", lock, res); in dlmlock()
693 dlm_lock_attach_lockres(lock, res); in dlmlock()
712 if (res->owner == dlm->node_num) in dlmlock()
713 status = dlmlock_master(dlm, res, lock, flags); in dlmlock()
715 status = dlmlock_remote(dlm, res, lock, flags); in dlmlock()
726 dlm_wait_for_node_death(dlm, res->owner, in dlmlock()
735 spin_lock(&res->spinlock); in dlmlock()
736 dlm_lockres_drop_inflight_ref(dlm, res); in dlmlock()
737 spin_unlock(&res->spinlock); in dlmlock()
739 dlm_lockres_calc_usage(dlm, res); in dlmlock()
740 dlm_kick_thread(dlm, res); in dlmlock()
760 if (res) in dlmlock()
761 dlm_lockres_put(res); in dlmlock()