Lines Matching refs:dlm
34 static void dlm_update_lvb(struct dlm_ctxt *dlm, struct dlm_lock_resource *res,
36 static int dlm_should_cancel_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock);
47 static int dlm_should_cancel_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in dlm_should_cancel_bast() argument
49 assert_spin_locked(&dlm->ast_lock); in dlm_should_cancel_bast()
74 void __dlm_queue_ast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in __dlm_queue_ast() argument
78 BUG_ON(!dlm); in __dlm_queue_ast()
83 assert_spin_locked(&dlm->ast_lock); in __dlm_queue_ast()
88 dlm->name, res->lockname.len, res->lockname.name, in __dlm_queue_ast()
96 dlm->name, res->lockname.len, res->lockname.name, in __dlm_queue_ast()
105 if (dlm_should_cancel_bast(dlm, lock)) { in __dlm_queue_ast()
107 dlm->name, res->lockname.len, res->lockname.name, in __dlm_queue_ast()
122 dlm_lockres_release_ast(dlm, res); in __dlm_queue_ast()
124 list_add_tail(&lock->ast_list, &dlm->pending_asts); in __dlm_queue_ast()
129 void dlm_queue_ast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in dlm_queue_ast() argument
131 BUG_ON(!dlm); in dlm_queue_ast()
134 spin_lock(&dlm->ast_lock); in dlm_queue_ast()
135 __dlm_queue_ast(dlm, lock); in dlm_queue_ast()
136 spin_unlock(&dlm->ast_lock); in dlm_queue_ast()
140 void __dlm_queue_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in __dlm_queue_bast() argument
144 BUG_ON(!dlm); in __dlm_queue_bast()
147 assert_spin_locked(&dlm->ast_lock); in __dlm_queue_bast()
154 dlm->name, res->lockname.len, res->lockname.name, in __dlm_queue_bast()
161 list_add_tail(&lock->bast_list, &dlm->pending_basts); in __dlm_queue_bast()
166 static void dlm_update_lvb(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_update_lvb() argument
174 if (res->owner == dlm->node_num) { in dlm_update_lvb()
178 lock->ml.node == dlm->node_num ? "master" : in dlm_update_lvb()
196 void dlm_do_local_ast(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_do_local_ast() argument
201 mlog(0, "%s: res %.*s, lock %u:%llu, Local AST\n", dlm->name, in dlm_do_local_ast()
207 BUG_ON(lock->ml.node != dlm->node_num); in dlm_do_local_ast()
209 dlm_update_lvb(dlm, res, lock); in dlm_do_local_ast()
214 int dlm_do_remote_ast(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_do_remote_ast() argument
221 mlog(0, "%s: res %.*s, lock %u:%llu, Remote AST\n", dlm->name, in dlm_do_remote_ast()
227 BUG_ON(lock->ml.node == dlm->node_num); in dlm_do_remote_ast()
230 dlm_update_lvb(dlm, res, lock); in dlm_do_remote_ast()
234 ret = dlm_send_proxy_ast(dlm, res, lock, lksbflags); in dlm_do_remote_ast()
238 void dlm_do_local_bast(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_do_local_bast() argument
243 BUG_ON(lock->ml.node != dlm->node_num); in dlm_do_local_bast()
246 dlm->name, res->lockname.len, res->lockname.name, in dlm_do_local_bast()
261 struct dlm_ctxt *dlm = data; in dlm_proxy_ast_handler() local
271 if (!dlm_grab(dlm)) { in dlm_proxy_ast_handler()
276 mlog_bug_on_msg(!dlm_domain_fully_joined(dlm), in dlm_proxy_ast_handler()
277 "Domain %s not fully joined!\n", dlm->name); in dlm_proxy_ast_handler()
316 res = dlm_lookup_lockres(dlm, name, locklen); in dlm_proxy_ast_handler()
328 BUG_ON(res->owner == dlm->node_num); in dlm_proxy_ast_handler()
330 mlog(0, "%s: res %.*s\n", dlm->name, res->lockname.len, in dlm_proxy_ast_handler()
384 dlm->name, res->lockname.len, res->lockname.name, in dlm_proxy_ast_handler()
407 dlm_do_local_ast(dlm, res, lock); in dlm_proxy_ast_handler()
409 dlm_do_local_bast(dlm, res, lock, past->blocked_type); in dlm_proxy_ast_handler()
415 dlm_put(dlm); in dlm_proxy_ast_handler()
421 int dlm_send_proxy_ast_msg(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_send_proxy_ast_msg() argument
431 mlog(0, "%s: res %.*s, to %u, type %d, blocked_type %d\n", dlm->name, in dlm_send_proxy_ast_msg()
436 past.node_idx = dlm->node_num; in dlm_send_proxy_ast_msg()
452 ret = o2net_send_message_vec(DLM_PROXY_AST_MSG, dlm->key, vec, veclen, in dlm_send_proxy_ast_msg()
456 dlm->name, res->lockname.len, res->lockname.name, ret, in dlm_send_proxy_ast_msg()