Lines Matching refs:res
44 struct dlm_lock_resource *res,
73 static int dlm_can_grant_new_lock(struct dlm_lock_resource *res, in dlm_can_grant_new_lock() argument
78 list_for_each_entry(tmplock, &res->granted, list) { in dlm_can_grant_new_lock()
83 list_for_each_entry(tmplock, &res->converting, list) { in dlm_can_grant_new_lock()
102 struct dlm_lock_resource *res, in dlmlock_master() argument
110 spin_lock(&res->spinlock); in dlmlock_master()
113 status = __dlm_lockres_state_to_status(res); in dlmlock_master()
117 spin_unlock(&res->spinlock); in dlmlock_master()
121 __dlm_wait_on_lockres(res); in dlmlock_master()
122 __dlm_lockres_reserve_ast(res); in dlmlock_master()
124 if (dlm_can_grant_new_lock(res, lock)) { in dlmlock_master()
130 list_add_tail(&lock->list, &res->granted); in dlmlock_master()
137 if (!dlm_is_recovery_lock(res->lockname.name, in dlmlock_master()
138 res->lockname.len)) { in dlmlock_master()
151 if (dlm_is_recovery_lock(res->lockname.name, in dlmlock_master()
152 res->lockname.len)) { in dlmlock_master()
160 list_add_tail(&lock->list, &res->blocked); in dlmlock_master()
165 spin_unlock(&res->spinlock); in dlmlock_master()
166 wake_up(&res->wq); in dlmlock_master()
172 dlm_lockres_release_ast(dlm, res); in dlmlock_master()
174 dlm_lockres_calc_usage(dlm, res); in dlmlock_master()
176 dlm_kick_thread(dlm, res); in dlmlock_master()
181 void dlm_revert_pending_lock(struct dlm_lock_resource *res, in dlm_revert_pending_lock() argument
198 struct dlm_lock_resource *res, in dlmlock_remote() argument
205 lock->ml.type, res->lockname.len, in dlmlock_remote()
206 res->lockname.name, flags); in dlmlock_remote()
212 spin_lock(&res->spinlock); in dlmlock_remote()
213 __dlm_wait_on_lockres(res); in dlmlock_remote()
214 if (res->owner == dlm->node_num) { in dlmlock_remote()
215 spin_unlock(&res->spinlock); in dlmlock_remote()
218 res->state |= DLM_LOCK_RES_IN_PROGRESS; in dlmlock_remote()
222 list_add_tail(&lock->list, &res->blocked); in dlmlock_remote()
224 spin_unlock(&res->spinlock); in dlmlock_remote()
228 status = dlm_send_remote_lock_request(dlm, res, lock, flags); in dlmlock_remote()
230 spin_lock(&res->spinlock); in dlmlock_remote()
231 res->state &= ~DLM_LOCK_RES_IN_PROGRESS; in dlmlock_remote()
235 dlm_is_recovery_lock(res->lockname.name, in dlmlock_remote()
236 res->lockname.len)) { in dlmlock_remote()
242 dlm->name, res->owner); in dlmlock_remote()
253 dlm_revert_pending_lock(res, lock); in dlmlock_remote()
255 } else if (dlm_is_recovery_lock(res->lockname.name, in dlmlock_remote()
256 res->lockname.len)) { in dlmlock_remote()
263 dlm->name, dlm->node_num, res->owner); in dlmlock_remote()
264 list_move_tail(&lock->list, &res->granted); in dlmlock_remote()
266 spin_unlock(&res->spinlock); in dlmlock_remote()
269 dlm_lockres_calc_usage(dlm, res); in dlmlock_remote()
271 wake_up(&res->wq); in dlmlock_remote()
284 struct dlm_lock_resource *res, in dlm_send_remote_lock_request() argument
295 create.namelen = res->lockname.len; in dlm_send_remote_lock_request()
297 memcpy(create.name, res->lockname.name, create.namelen); in dlm_send_remote_lock_request()
300 sizeof(create), res->owner, &status); in dlm_send_remote_lock_request()
307 create.name, res->owner); in dlm_send_remote_lock_request()
308 dlm_print_one_lock_resource(res); in dlm_send_remote_lock_request()
314 tmpret, res->owner); in dlm_send_remote_lock_request()
357 struct dlm_lock_resource *res) in dlm_lock_attach_lockres() argument
359 dlm_lockres_get(res); in dlm_lock_attach_lockres()
360 lock->lockres = res; in dlm_lock_attach_lockres()
366 struct dlm_lock_resource *res; in dlm_lock_detach_lockres() local
368 res = lock->lockres; in dlm_lock_detach_lockres()
369 if (res) { in dlm_lock_detach_lockres()
372 dlm_lockres_put(res); in dlm_lock_detach_lockres()
445 struct dlm_lock_resource *res = NULL; in dlm_create_lock_handler() local
491 res = dlm_lookup_lockres(dlm, name, namelen); in dlm_create_lock_handler()
492 if (!res) { in dlm_create_lock_handler()
497 spin_lock(&res->spinlock); in dlm_create_lock_handler()
498 status = __dlm_lockres_state_to_status(res); in dlm_create_lock_handler()
499 spin_unlock(&res->spinlock); in dlm_create_lock_handler()
506 dlm_lock_attach_lockres(newlock, res); in dlm_create_lock_handler()
508 status = dlmlock_master(dlm, res, newlock, be32_to_cpu(create->flags)); in dlm_create_lock_handler()
514 if (res) in dlm_create_lock_handler()
515 dlm_lockres_put(res); in dlm_create_lock_handler()
546 struct dlm_lock_resource *res = NULL; in dlmlock() local
593 res = lock->lockres; in dlmlock()
594 if (!res) { in dlmlock()
599 dlm_lockres_get(res); in dlmlock()
619 if (res->owner == dlm->node_num) in dlmlock()
620 status = dlmconvert_master(dlm, res, lock, flags, mode); in dlmlock()
622 status = dlmconvert_remote(dlm, res, lock, flags, mode); in dlmlock()
661 res = dlm_get_lock_resource(dlm, name, namelen, flags); in dlmlock()
662 if (!res) { in dlmlock()
669 mlog(0, "creating lock: lock=%p res=%p\n", lock, res); in dlmlock()
671 dlm_lock_attach_lockres(lock, res); in dlmlock()
690 if (res->owner == dlm->node_num) in dlmlock()
691 status = dlmlock_master(dlm, res, lock, flags); in dlmlock()
693 status = dlmlock_remote(dlm, res, lock, flags); in dlmlock()
704 dlm_wait_for_node_death(dlm, res->owner, in dlmlock()
713 spin_lock(&res->spinlock); in dlmlock()
714 dlm_lockres_drop_inflight_ref(dlm, res); in dlmlock()
715 spin_unlock(&res->spinlock); in dlmlock()
717 dlm_lockres_calc_usage(dlm, res); in dlmlock()
718 dlm_kick_thread(dlm, res); in dlmlock()
738 if (res) in dlmlock()
739 dlm_lockres_put(res); in dlmlock()