Lines Matching refs:dlm
36 static void dlm_update_lvb(struct dlm_ctxt *dlm, struct dlm_lock_resource *res,
38 static int dlm_should_cancel_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock);
49 static int dlm_should_cancel_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in dlm_should_cancel_bast() argument
51 assert_spin_locked(&dlm->ast_lock); in dlm_should_cancel_bast()
76 void __dlm_queue_ast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in __dlm_queue_ast() argument
80 BUG_ON(!dlm); in __dlm_queue_ast()
85 assert_spin_locked(&dlm->ast_lock); in __dlm_queue_ast()
90 dlm->name, res->lockname.len, res->lockname.name, in __dlm_queue_ast()
98 dlm->name, res->lockname.len, res->lockname.name, in __dlm_queue_ast()
107 if (dlm_should_cancel_bast(dlm, lock)) { in __dlm_queue_ast()
109 dlm->name, res->lockname.len, res->lockname.name, in __dlm_queue_ast()
124 dlm_lockres_release_ast(dlm, res); in __dlm_queue_ast()
126 list_add_tail(&lock->ast_list, &dlm->pending_asts); in __dlm_queue_ast()
131 void dlm_queue_ast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in dlm_queue_ast() argument
133 BUG_ON(!dlm); in dlm_queue_ast()
136 spin_lock(&dlm->ast_lock); in dlm_queue_ast()
137 __dlm_queue_ast(dlm, lock); in dlm_queue_ast()
138 spin_unlock(&dlm->ast_lock); in dlm_queue_ast()
142 void __dlm_queue_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in __dlm_queue_bast() argument
146 BUG_ON(!dlm); in __dlm_queue_bast()
149 assert_spin_locked(&dlm->ast_lock); in __dlm_queue_bast()
156 dlm->name, res->lockname.len, res->lockname.name, in __dlm_queue_bast()
163 list_add_tail(&lock->bast_list, &dlm->pending_basts); in __dlm_queue_bast()
168 void dlm_queue_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in dlm_queue_bast() argument
170 BUG_ON(!dlm); in dlm_queue_bast()
173 spin_lock(&dlm->ast_lock); in dlm_queue_bast()
174 __dlm_queue_bast(dlm, lock); in dlm_queue_bast()
175 spin_unlock(&dlm->ast_lock); in dlm_queue_bast()
178 static void dlm_update_lvb(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_update_lvb() argument
186 if (res->owner == dlm->node_num) { in dlm_update_lvb()
190 lock->ml.node == dlm->node_num ? "master" : in dlm_update_lvb()
208 void dlm_do_local_ast(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_do_local_ast() argument
213 mlog(0, "%s: res %.*s, lock %u:%llu, Local AST\n", dlm->name, in dlm_do_local_ast()
219 BUG_ON(lock->ml.node != dlm->node_num); in dlm_do_local_ast()
221 dlm_update_lvb(dlm, res, lock); in dlm_do_local_ast()
226 int dlm_do_remote_ast(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_do_remote_ast() argument
233 mlog(0, "%s: res %.*s, lock %u:%llu, Remote AST\n", dlm->name, in dlm_do_remote_ast()
239 BUG_ON(lock->ml.node == dlm->node_num); in dlm_do_remote_ast()
242 dlm_update_lvb(dlm, res, lock); in dlm_do_remote_ast()
246 ret = dlm_send_proxy_ast(dlm, res, lock, lksbflags); in dlm_do_remote_ast()
250 void dlm_do_local_bast(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_do_local_bast() argument
255 BUG_ON(lock->ml.node != dlm->node_num); in dlm_do_local_bast()
258 dlm->name, res->lockname.len, res->lockname.name, in dlm_do_local_bast()
273 struct dlm_ctxt *dlm = data; in dlm_proxy_ast_handler() local
283 if (!dlm_grab(dlm)) { in dlm_proxy_ast_handler()
288 mlog_bug_on_msg(!dlm_domain_fully_joined(dlm), in dlm_proxy_ast_handler()
289 "Domain %s not fully joined!\n", dlm->name); in dlm_proxy_ast_handler()
328 res = dlm_lookup_lockres(dlm, name, locklen); in dlm_proxy_ast_handler()
340 BUG_ON(res->owner == dlm->node_num); in dlm_proxy_ast_handler()
342 mlog(0, "%s: res %.*s\n", dlm->name, res->lockname.len, in dlm_proxy_ast_handler()
396 dlm->name, res->lockname.len, res->lockname.name, in dlm_proxy_ast_handler()
419 dlm_do_local_ast(dlm, res, lock); in dlm_proxy_ast_handler()
421 dlm_do_local_bast(dlm, res, lock, past->blocked_type); in dlm_proxy_ast_handler()
427 dlm_put(dlm); in dlm_proxy_ast_handler()
433 int dlm_send_proxy_ast_msg(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_send_proxy_ast_msg() argument
443 mlog(0, "%s: res %.*s, to %u, type %d, blocked_type %d\n", dlm->name, in dlm_send_proxy_ast_msg()
448 past.node_idx = dlm->node_num; in dlm_send_proxy_ast_msg()
464 ret = o2net_send_message_vec(DLM_PROXY_AST_MSG, dlm->key, vec, veclen, in dlm_send_proxy_ast_msg()
468 dlm->name, res->lockname.len, res->lockname.name, ret, in dlm_send_proxy_ast_msg()