Lines Matching defs:res
46 struct dlm_lock_resource *res,
70 * caller needs: res->spinlock
75 static int dlm_can_grant_new_lock(struct dlm_lock_resource *res,
80 list_for_each_entry(tmplock, &res->granted, list) {
85 list_for_each_entry(tmplock, &res->converting, list) {
99 * taken: takes and drops res->spinlock
104 struct dlm_lock_resource *res,
112 spin_lock(&res->spinlock);
115 status = __dlm_lockres_state_to_status(res);
119 spin_unlock(&res->spinlock);
123 __dlm_wait_on_lockres(res);
124 __dlm_lockres_reserve_ast(res);
126 if (dlm_can_grant_new_lock(res, lock)) {
132 list_add_tail(&lock->list, &res->granted);
139 if (!dlm_is_recovery_lock(res->lockname.name,
140 res->lockname.len)) {
153 if (dlm_is_recovery_lock(res->lockname.name,
154 res->lockname.len)) {
162 list_add_tail(&lock->list, &res->blocked);
167 spin_unlock(&res->spinlock);
168 wake_up(&res->wq);
174 dlm_lockres_release_ast(dlm, res);
176 dlm_lockres_calc_usage(dlm, res);
178 dlm_kick_thread(dlm, res);
183 void dlm_revert_pending_lock(struct dlm_lock_resource *res,
195 * taken: takes and drops res->spinlock
200 struct dlm_lock_resource *res,
207 lock->ml.type, res->lockname.len,
208 res->lockname.name, flags);
214 spin_lock(&res->spinlock);
215 __dlm_wait_on_lockres(res);
216 if (res->owner == dlm->node_num) {
217 spin_unlock(&res->spinlock);
220 res->state |= DLM_LOCK_RES_IN_PROGRESS;
224 list_add_tail(&lock->list, &res->blocked);
226 spin_unlock(&res->spinlock);
230 status = dlm_send_remote_lock_request(dlm, res, lock, flags);
232 spin_lock(&res->spinlock);
233 res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
237 dlm_is_recovery_lock(res->lockname.name,
238 res->lockname.len)) {
244 dlm->name, res->owner);
255 dlm_revert_pending_lock(res, lock);
257 } else if (dlm_is_recovery_lock(res->lockname.name,
258 res->lockname.len)) {
265 dlm->name, dlm->node_num, res->owner);
266 list_move_tail(&lock->list, &res->granted);
268 spin_unlock(&res->spinlock);
271 dlm_lockres_calc_usage(dlm, res);
273 wake_up(&res->wq);
280 * caller needs: none, but need res->state & DLM_LOCK_RES_IN_PROGRESS
286 struct dlm_lock_resource *res,
297 create.namelen = res->lockname.len;
299 memcpy(create.name, res->lockname.name, create.namelen);
302 sizeof(create), res->owner, &status);
306 mlog(ML_ERROR, "%s: res %.*s, Stale lockres no longer "
309 create.name, res->owner);
310 dlm_print_one_lock_resource(res);
314 mlog(ML_ERROR, "%s: res %.*s, Error %d send CREATE LOCK to "
316 tmpret, res->owner);
359 struct dlm_lock_resource *res)
361 dlm_lockres_get(res);
362 lock->lockres = res;
368 struct dlm_lock_resource *res;
370 res = lock->lockres;
371 if (res) {
374 dlm_lockres_put(res);
438 * taken: takes and drops res->spinlock
447 struct dlm_lock_resource *res = NULL;
493 res = dlm_lookup_lockres(dlm, name, namelen);
494 if (!res) {
499 spin_lock(&res->spinlock);
500 status = __dlm_lockres_state_to_status(res);
501 spin_unlock(&res->spinlock);
508 dlm_lock_attach_lockres(newlock, res);
510 status = dlmlock_master(dlm, res, newlock, be32_to_cpu(create->flags));
516 if (res)
517 dlm_lockres_put(res);
548 struct dlm_lock_resource *res = NULL;
595 res = lock->lockres;
596 if (!res) {
601 dlm_lockres_get(res);
621 if (res->owner == dlm->node_num)
622 status = dlmconvert_master(dlm, res, lock, flags, mode);
624 status = dlmconvert_remote(dlm, res, lock, flags, mode);
663 res = dlm_get_lock_resource(dlm, name, namelen, flags);
664 if (!res) {
671 mlog(0, "creating lock: lock=%p res=%p\n", lock, res);
673 dlm_lock_attach_lockres(lock, res);
692 if (res->owner == dlm->node_num)
693 status = dlmlock_master(dlm, res, lock, flags);
695 status = dlmlock_remote(dlm, res, lock, flags);
706 dlm_wait_for_node_death(dlm, res->owner,
715 spin_lock(&res->spinlock);
716 dlm_lockres_drop_inflight_ref(dlm, res);
717 spin_unlock(&res->spinlock);
719 dlm_lockres_calc_usage(dlm, res);
720 dlm_kick_thread(dlm, res);
740 if (res)
741 dlm_lockres_put(res);