Lines Matching refs:res
37 * needs a spinlock held on entry (res->spinlock) and it is the
38 * only one that holds a lock on exit (res->spinlock).
42 struct dlm_lock_resource *res,
47 struct dlm_lock_resource *res,
55 * taken: takes and drops res->spinlock
60 struct dlm_lock_resource *res,
66 spin_lock(&res->spinlock);
68 __dlm_wait_on_lockres(res);
69 __dlm_lockres_reserve_ast(res);
70 res->state |= DLM_LOCK_RES_IN_PROGRESS;
72 status = __dlmconvert_master(dlm, res, lock, flags, type,
75 res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
76 spin_unlock(&res->spinlock);
77 wake_up(&res->wq);
85 dlm_lockres_release_ast(dlm, res);
88 dlm_kick_thread(dlm, res);
95 * caller needs: res->spinlock
97 * held on exit: res->spinlock
103 struct dlm_lock_resource *res,
111 assert_spin_locked(&res->spinlock);
127 if (!dlm_lock_on_list(&res->granted, lock)) {
170 list_for_each_entry(tmplock, &res->granted, list) {
177 list_for_each_entry(tmplock, &res->converting, list) {
188 mlog(0, "res %.*s, granting %s lock\n", res->lockname.len,
189 res->lockname.name, dlm_lock_mode_name(type));
196 memcpy(res->lvb, lock->lksb->lvb, DLM_LVB_LEN);
202 list_move_tail(&lock->list, &res->granted);
211 "%d to %d...\n", res->lockname.len, res->lockname.name,
216 mlog(0, "res %.*s, queueing...\n", res->lockname.len,
217 res->lockname.name);
221 list_move_tail(&lock->list, &res->converting);
226 __dlm_print_one_lock_resource(res);
233 void dlm_revert_pending_convert(struct dlm_lock_resource *res,
237 list_move_tail(&lock->list, &res->granted);
245 * taken: takes and drops res->spinlock, uses DLM_LOCK_RES_IN_PROGRESS
250 struct dlm_lock_resource *res,
256 lock->ml.convert_type, res->state & DLM_LOCK_RES_IN_PROGRESS);
258 spin_lock(&res->spinlock);
259 if (res->state & DLM_LOCK_RES_RECOVERING) {
260 mlog(0, "bailing out early since res is RECOVERING "
262 /* __dlm_print_one_lock_resource(res); */
267 __dlm_wait_on_lockres(res);
270 __dlm_print_one_lock_resource(res);
282 "owner has already queued and sent ast to me. res %.*s, "
284 res->lockname.len, res->lockname.name,
292 res->state |= DLM_LOCK_RES_IN_PROGRESS;
295 list_move_tail(&lock->list, &res->converting);
312 spin_unlock(&res->spinlock);
316 status = dlm_send_remote_convert_request(dlm, res, lock, flags, type);
318 spin_lock(&res->spinlock);
319 res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
327 dlm_revert_pending_convert(res, lock);
329 mlog(0, "%s: res %.*s, owner died and lock has been moved back "
331 dlm->name, res->lockname.len, res->lockname.name);
337 spin_unlock(&res->spinlock);
341 wake_up(&res->wq);
354 struct dlm_lock_resource *res,
364 mlog(0, "%.*s\n", res->lockname.len, res->lockname.name);
370 convert.namelen = res->lockname.len;
372 memcpy(convert.name, res->lockname.name, convert.namelen);
385 vec, veclen, res->owner, &status);
391 "message!\n", res->owner);
394 "message!\n", res->owner);
397 "message!\n", res->owner);
403 res->owner);
408 dlm_wait_for_node_death(dlm, res->owner,
412 "from convert message!\n", res->owner);
424 * taken: takes and drop res->spinlock
434 struct dlm_lock_resource *res = NULL;
469 res = dlm_lookup_lockres(dlm, cnv->name, cnv->namelen);
470 if (!res) {
475 spin_lock(&res->spinlock);
476 status = __dlm_lockres_state_to_status(res);
478 spin_unlock(&res->spinlock);
482 list_for_each_entry(tmp_lock, &res->granted, list) {
490 spin_unlock(&res->spinlock);
497 dlm_print_one_lock_resource(res);
514 spin_lock(&res->spinlock);
515 status = __dlm_lockres_state_to_status(res);
517 __dlm_lockres_reserve_ast(res);
519 res->state |= DLM_LOCK_RES_IN_PROGRESS;
520 status = __dlmconvert_master(dlm, res, lock, flags,
523 res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
526 spin_unlock(&res->spinlock);
528 wake_up(&res->wq);
544 dlm_lockres_release_ast(dlm, res);
547 dlm_kick_thread(dlm, res);
549 if (res)
550 dlm_lockres_put(res);