Lines Matching refs:res
46 struct dlm_lock_resource *res,
75 static int dlm_can_grant_new_lock(struct dlm_lock_resource *res, in dlm_can_grant_new_lock() argument
80 list_for_each_entry(tmplock, &res->granted, list) { in dlm_can_grant_new_lock()
85 list_for_each_entry(tmplock, &res->converting, list) { in dlm_can_grant_new_lock()
104 struct dlm_lock_resource *res, in dlmlock_master() argument
112 spin_lock(&res->spinlock); in dlmlock_master()
115 status = __dlm_lockres_state_to_status(res); in dlmlock_master()
119 spin_unlock(&res->spinlock); in dlmlock_master()
123 __dlm_wait_on_lockres(res); in dlmlock_master()
124 __dlm_lockres_reserve_ast(res); in dlmlock_master()
126 if (dlm_can_grant_new_lock(res, lock)) { in dlmlock_master()
132 list_add_tail(&lock->list, &res->granted); in dlmlock_master()
139 if (!dlm_is_recovery_lock(res->lockname.name, in dlmlock_master()
140 res->lockname.len)) { in dlmlock_master()
153 if (dlm_is_recovery_lock(res->lockname.name, in dlmlock_master()
154 res->lockname.len)) { in dlmlock_master()
162 list_add_tail(&lock->list, &res->blocked); in dlmlock_master()
167 spin_unlock(&res->spinlock); in dlmlock_master()
168 wake_up(&res->wq); in dlmlock_master()
174 dlm_lockres_release_ast(dlm, res); in dlmlock_master()
176 dlm_lockres_calc_usage(dlm, res); in dlmlock_master()
178 dlm_kick_thread(dlm, res); in dlmlock_master()
183 void dlm_revert_pending_lock(struct dlm_lock_resource *res, in dlm_revert_pending_lock() argument
200 struct dlm_lock_resource *res, in dlmlock_remote() argument
207 lock->ml.type, res->lockname.len, in dlmlock_remote()
208 res->lockname.name, flags); in dlmlock_remote()
214 spin_lock(&res->spinlock); in dlmlock_remote()
215 __dlm_wait_on_lockres(res); in dlmlock_remote()
216 if (res->owner == dlm->node_num) { in dlmlock_remote()
217 spin_unlock(&res->spinlock); in dlmlock_remote()
220 res->state |= DLM_LOCK_RES_IN_PROGRESS; in dlmlock_remote()
224 list_add_tail(&lock->list, &res->blocked); in dlmlock_remote()
226 spin_unlock(&res->spinlock); in dlmlock_remote()
230 status = dlm_send_remote_lock_request(dlm, res, lock, flags); in dlmlock_remote()
232 spin_lock(&res->spinlock); in dlmlock_remote()
233 res->state &= ~DLM_LOCK_RES_IN_PROGRESS; in dlmlock_remote()
237 dlm_is_recovery_lock(res->lockname.name, in dlmlock_remote()
238 res->lockname.len)) { in dlmlock_remote()
244 dlm->name, res->owner); in dlmlock_remote()
255 dlm_revert_pending_lock(res, lock); in dlmlock_remote()
257 } else if (dlm_is_recovery_lock(res->lockname.name, in dlmlock_remote()
258 res->lockname.len)) { in dlmlock_remote()
265 dlm->name, dlm->node_num, res->owner); in dlmlock_remote()
266 list_move_tail(&lock->list, &res->granted); in dlmlock_remote()
268 spin_unlock(&res->spinlock); in dlmlock_remote()
271 dlm_lockres_calc_usage(dlm, res); in dlmlock_remote()
273 wake_up(&res->wq); in dlmlock_remote()
286 struct dlm_lock_resource *res, in dlm_send_remote_lock_request() argument
297 create.namelen = res->lockname.len; in dlm_send_remote_lock_request()
299 memcpy(create.name, res->lockname.name, create.namelen); in dlm_send_remote_lock_request()
302 sizeof(create), res->owner, &status); in dlm_send_remote_lock_request()
309 create.name, res->owner); in dlm_send_remote_lock_request()
310 dlm_print_one_lock_resource(res); in dlm_send_remote_lock_request()
316 tmpret, res->owner); in dlm_send_remote_lock_request()
359 struct dlm_lock_resource *res) in dlm_lock_attach_lockres() argument
361 dlm_lockres_get(res); in dlm_lock_attach_lockres()
362 lock->lockres = res; in dlm_lock_attach_lockres()
368 struct dlm_lock_resource *res; in dlm_lock_detach_lockres() local
370 res = lock->lockres; in dlm_lock_detach_lockres()
371 if (res) { in dlm_lock_detach_lockres()
374 dlm_lockres_put(res); in dlm_lock_detach_lockres()
447 struct dlm_lock_resource *res = NULL; in dlm_create_lock_handler() local
493 res = dlm_lookup_lockres(dlm, name, namelen); in dlm_create_lock_handler()
494 if (!res) { in dlm_create_lock_handler()
499 spin_lock(&res->spinlock); in dlm_create_lock_handler()
500 status = __dlm_lockres_state_to_status(res); in dlm_create_lock_handler()
501 spin_unlock(&res->spinlock); in dlm_create_lock_handler()
508 dlm_lock_attach_lockres(newlock, res); in dlm_create_lock_handler()
510 status = dlmlock_master(dlm, res, newlock, be32_to_cpu(create->flags)); in dlm_create_lock_handler()
516 if (res) in dlm_create_lock_handler()
517 dlm_lockres_put(res); in dlm_create_lock_handler()
548 struct dlm_lock_resource *res = NULL; in dlmlock() local
595 res = lock->lockres; in dlmlock()
596 if (!res) { in dlmlock()
601 dlm_lockres_get(res); in dlmlock()
621 if (res->owner == dlm->node_num) in dlmlock()
622 status = dlmconvert_master(dlm, res, lock, flags, mode); in dlmlock()
624 status = dlmconvert_remote(dlm, res, lock, flags, mode); in dlmlock()
663 res = dlm_get_lock_resource(dlm, name, namelen, flags); in dlmlock()
664 if (!res) { 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()
692 if (res->owner == dlm->node_num) in dlmlock()
693 status = dlmlock_master(dlm, res, lock, flags); in dlmlock()
695 status = dlmlock_remote(dlm, res, lock, flags); in dlmlock()
706 dlm_wait_for_node_death(dlm, res->owner, in dlmlock()
715 spin_lock(&res->spinlock); in dlmlock()
716 dlm_lockres_drop_inflight_ref(dlm, res); in dlmlock()
717 spin_unlock(&res->spinlock); in dlmlock()
719 dlm_lockres_calc_usage(dlm, res); in dlmlock()
720 dlm_kick_thread(dlm, res); in dlmlock()
740 if (res) in dlmlock()
741 dlm_lockres_put(res); in dlmlock()