Lines Matching refs:res
39 * needs a spinlock held on entry (res->spinlock) and it is the
40 * only one that holds a lock on exit (res->spinlock).
44 struct dlm_lock_resource *res,
49 struct dlm_lock_resource *res,
57 * taken: takes and drops res->spinlock
62 struct dlm_lock_resource *res,
68 spin_lock(&res->spinlock);
70 __dlm_wait_on_lockres(res);
71 __dlm_lockres_reserve_ast(res);
72 res->state |= DLM_LOCK_RES_IN_PROGRESS;
74 status = __dlmconvert_master(dlm, res, lock, flags, type,
77 res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
78 spin_unlock(&res->spinlock);
79 wake_up(&res->wq);
87 dlm_lockres_release_ast(dlm, res);
90 dlm_kick_thread(dlm, res);
97 * caller needs: res->spinlock
99 * held on exit: res->spinlock
105 struct dlm_lock_resource *res,
113 assert_spin_locked(&res->spinlock);
129 if (!dlm_lock_on_list(&res->granted, lock)) {
172 list_for_each_entry(tmplock, &res->granted, list) {
179 list_for_each_entry(tmplock, &res->converting, list) {
190 mlog(0, "res %.*s, granting %s lock\n", res->lockname.len,
191 res->lockname.name, dlm_lock_mode_name(type));
198 memcpy(res->lvb, lock->lksb->lvb, DLM_LVB_LEN);
204 list_move_tail(&lock->list, &res->granted);
213 "%d to %d...\n", res->lockname.len, res->lockname.name,
218 mlog(0, "res %.*s, queueing...\n", res->lockname.len,
219 res->lockname.name);
223 list_move_tail(&lock->list, &res->converting);
228 __dlm_print_one_lock_resource(res);
235 void dlm_revert_pending_convert(struct dlm_lock_resource *res,
239 list_move_tail(&lock->list, &res->granted);
247 * taken: takes and drops res->spinlock, uses DLM_LOCK_RES_IN_PROGRESS
252 struct dlm_lock_resource *res,
258 lock->ml.convert_type, res->state & DLM_LOCK_RES_IN_PROGRESS);
260 spin_lock(&res->spinlock);
261 if (res->state & DLM_LOCK_RES_RECOVERING) {
262 mlog(0, "bailing out early since res is RECOVERING "
264 /* __dlm_print_one_lock_resource(res); */
269 __dlm_wait_on_lockres(res);
272 __dlm_print_one_lock_resource(res);
284 "owner has already queued and sent ast to me. res %.*s, "
286 res->lockname.len, res->lockname.name,
294 res->state |= DLM_LOCK_RES_IN_PROGRESS;
297 list_move_tail(&lock->list, &res->converting);
314 spin_unlock(&res->spinlock);
318 status = dlm_send_remote_convert_request(dlm, res, lock, flags, type);
320 spin_lock(&res->spinlock);
321 res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
329 dlm_revert_pending_convert(res, lock);
331 mlog(0, "%s: res %.*s, owner died and lock has been moved back "
333 dlm->name, res->lockname.len, res->lockname.name);
339 spin_unlock(&res->spinlock);
343 wake_up(&res->wq);
356 struct dlm_lock_resource *res,
366 mlog(0, "%.*s\n", res->lockname.len, res->lockname.name);
372 convert.namelen = res->lockname.len;
374 memcpy(convert.name, res->lockname.name, convert.namelen);
387 vec, veclen, res->owner, &status);
393 "message!\n", res->owner);
396 "message!\n", res->owner);
399 "message!\n", res->owner);
405 res->owner);
410 dlm_wait_for_node_death(dlm, res->owner,
414 "from convert message!\n", res->owner);
426 * taken: takes and drop res->spinlock
436 struct dlm_lock_resource *res = NULL;
471 res = dlm_lookup_lockres(dlm, cnv->name, cnv->namelen);
472 if (!res) {
477 spin_lock(&res->spinlock);
478 status = __dlm_lockres_state_to_status(res);
480 spin_unlock(&res->spinlock);
484 list_for_each_entry(tmp_lock, &res->granted, list) {
492 spin_unlock(&res->spinlock);
499 dlm_print_one_lock_resource(res);
516 spin_lock(&res->spinlock);
517 status = __dlm_lockres_state_to_status(res);
519 __dlm_lockres_reserve_ast(res);
521 res->state |= DLM_LOCK_RES_IN_PROGRESS;
522 status = __dlmconvert_master(dlm, res, lock, flags,
525 res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
528 spin_unlock(&res->spinlock);
530 wake_up(&res->wq);
546 dlm_lockres_release_ast(dlm, res);
549 dlm_kick_thread(dlm, res);
551 if (res)
552 dlm_lockres_put(res);