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
96 list_for_each_entry(tmplock, &res->granted, list) { in dlm_can_grant_new_lock()
101 list_for_each_entry(tmplock, &res->converting, list) { in dlm_can_grant_new_lock()
120 struct dlm_lock_resource *res, in dlmlock_master() argument
128 spin_lock(&res->spinlock); in dlmlock_master()
131 status = __dlm_lockres_state_to_status(res); in dlmlock_master()
135 spin_unlock(&res->spinlock); in dlmlock_master()
139 __dlm_wait_on_lockres(res); in dlmlock_master()
140 __dlm_lockres_reserve_ast(res); in dlmlock_master()
142 if (dlm_can_grant_new_lock(res, lock)) { in dlmlock_master()
148 list_add_tail(&lock->list, &res->granted); in dlmlock_master()
155 if (!dlm_is_recovery_lock(res->lockname.name, in dlmlock_master()
156 res->lockname.len)) { in dlmlock_master()
169 if (dlm_is_recovery_lock(res->lockname.name, in dlmlock_master()
170 res->lockname.len)) { in dlmlock_master()
178 list_add_tail(&lock->list, &res->blocked); in dlmlock_master()
183 spin_unlock(&res->spinlock); in dlmlock_master()
184 wake_up(&res->wq); in dlmlock_master()
190 dlm_lockres_release_ast(dlm, res); in dlmlock_master()
192 dlm_lockres_calc_usage(dlm, res); in dlmlock_master()
194 dlm_kick_thread(dlm, res); in dlmlock_master()
199 void dlm_revert_pending_lock(struct dlm_lock_resource *res, in dlm_revert_pending_lock() argument
216 struct dlm_lock_resource *res, in dlmlock_remote() argument
223 lock->ml.type, res->lockname.len, in dlmlock_remote()
224 res->lockname.name, flags); in dlmlock_remote()
230 spin_lock(&res->spinlock); in dlmlock_remote()
231 __dlm_wait_on_lockres(res); in dlmlock_remote()
232 if (res->owner == dlm->node_num) { in dlmlock_remote()
233 spin_unlock(&res->spinlock); in dlmlock_remote()
236 res->state |= DLM_LOCK_RES_IN_PROGRESS; in dlmlock_remote()
240 list_add_tail(&lock->list, &res->blocked); in dlmlock_remote()
242 spin_unlock(&res->spinlock); in dlmlock_remote()
246 status = dlm_send_remote_lock_request(dlm, res, lock, flags); in dlmlock_remote()
248 spin_lock(&res->spinlock); in dlmlock_remote()
249 res->state &= ~DLM_LOCK_RES_IN_PROGRESS; in dlmlock_remote()
253 dlm_is_recovery_lock(res->lockname.name, in dlmlock_remote()
254 res->lockname.len)) { in dlmlock_remote()
260 dlm->name, res->owner); in dlmlock_remote()
271 dlm_revert_pending_lock(res, lock); in dlmlock_remote()
273 } else if (dlm_is_recovery_lock(res->lockname.name, in dlmlock_remote()
274 res->lockname.len)) { in dlmlock_remote()
281 dlm->name, dlm->node_num, res->owner); in dlmlock_remote()
282 list_move_tail(&lock->list, &res->granted); in dlmlock_remote()
284 spin_unlock(&res->spinlock); in dlmlock_remote()
287 dlm_lockres_calc_usage(dlm, res); in dlmlock_remote()
289 wake_up(&res->wq); in dlmlock_remote()
302 struct dlm_lock_resource *res, in dlm_send_remote_lock_request() argument
313 create.namelen = res->lockname.len; in dlm_send_remote_lock_request()
315 memcpy(create.name, res->lockname.name, create.namelen); in dlm_send_remote_lock_request()
318 sizeof(create), res->owner, &status); in dlm_send_remote_lock_request()
325 create.name, res->owner); in dlm_send_remote_lock_request()
326 dlm_print_one_lock_resource(res); in dlm_send_remote_lock_request()
332 tmpret, res->owner); in dlm_send_remote_lock_request()
375 struct dlm_lock_resource *res) in dlm_lock_attach_lockres() argument
377 dlm_lockres_get(res); in dlm_lock_attach_lockres()
378 lock->lockres = res; in dlm_lock_attach_lockres()
384 struct dlm_lock_resource *res; in dlm_lock_detach_lockres() local
386 res = lock->lockres; in dlm_lock_detach_lockres()
387 if (res) { in dlm_lock_detach_lockres()
390 dlm_lockres_put(res); in dlm_lock_detach_lockres()
463 struct dlm_lock_resource *res = NULL; in dlm_create_lock_handler() local
509 res = dlm_lookup_lockres(dlm, name, namelen); in dlm_create_lock_handler()
510 if (!res) { in dlm_create_lock_handler()
515 spin_lock(&res->spinlock); in dlm_create_lock_handler()
516 status = __dlm_lockres_state_to_status(res); in dlm_create_lock_handler()
517 spin_unlock(&res->spinlock); in dlm_create_lock_handler()
524 dlm_lock_attach_lockres(newlock, res); in dlm_create_lock_handler()
526 status = dlmlock_master(dlm, res, newlock, be32_to_cpu(create->flags)); in dlm_create_lock_handler()
532 if (res) in dlm_create_lock_handler()
533 dlm_lockres_put(res); in dlm_create_lock_handler()
564 struct dlm_lock_resource *res = NULL; in dlmlock() local
611 res = lock->lockres; in dlmlock()
612 if (!res) { in dlmlock()
617 dlm_lockres_get(res); in dlmlock()
637 if (res->owner == dlm->node_num) in dlmlock()
638 status = dlmconvert_master(dlm, res, lock, flags, mode); in dlmlock()
640 status = dlmconvert_remote(dlm, res, lock, flags, mode); in dlmlock()
679 res = dlm_get_lock_resource(dlm, name, namelen, flags); in dlmlock()
680 if (!res) { in dlmlock()
687 mlog(0, "creating lock: lock=%p res=%p\n", lock, res); in dlmlock()
689 dlm_lock_attach_lockres(lock, res); in dlmlock()
708 if (res->owner == dlm->node_num) in dlmlock()
709 status = dlmlock_master(dlm, res, lock, flags); in dlmlock()
711 status = dlmlock_remote(dlm, res, lock, flags); in dlmlock()
722 dlm_wait_for_node_death(dlm, res->owner, in dlmlock()
731 spin_lock(&res->spinlock); in dlmlock()
732 dlm_lockres_drop_inflight_ref(dlm, res); in dlmlock()
733 spin_unlock(&res->spinlock); in dlmlock()
735 dlm_lockres_calc_usage(dlm, res); in dlmlock()
736 dlm_kick_thread(dlm, res); in dlmlock()
756 if (res) in dlmlock()
757 dlm_lockres_put(res); in dlmlock()