Lines Matching full:ls
61 struct dlm_ls *ls = rsb->res_ls; in dlm_may_skip_callback() local
73 log_debug(ls, "skip %x bast mode %d for cast mode %d", in dlm_may_skip_callback()
92 log_debug(ls, "skip %x add bast mode %d for bast mode %d", in dlm_may_skip_callback()
126 struct dlm_ls *ls = rsb->res_ls; in dlm_get_cb() local
134 (*cb)->ls_id = ls->ls_global_id; in dlm_get_cb()
169 struct dlm_ls *ls = rsb->res_ls; in dlm_add_cb() local
181 spin_lock_bh(&ls->ls_cb_lock); in dlm_add_cb()
182 if (test_bit(LSFL_CB_DELAY, &ls->ls_flags)) { in dlm_add_cb()
185 list_add(&cb->list, &ls->ls_cb_delay); in dlm_add_cb()
187 if (test_bit(LSFL_SOFTIRQ, &ls->ls_flags)) { in dlm_add_cb()
188 dlm_run_callback(ls->ls_global_id, lkb->lkb_id, mode, flags, in dlm_add_cb()
196 queue_work(ls->ls_callback_wq, &cb->work); in dlm_add_cb()
199 spin_unlock_bh(&ls->ls_cb_lock); in dlm_add_cb()
202 int dlm_callback_start(struct dlm_ls *ls) in dlm_callback_start() argument
204 if (!test_bit(LSFL_FS, &ls->ls_flags) || in dlm_callback_start()
205 test_bit(LSFL_SOFTIRQ, &ls->ls_flags)) in dlm_callback_start()
208 ls->ls_callback_wq = alloc_ordered_workqueue("dlm_callback", in dlm_callback_start()
210 if (!ls->ls_callback_wq) { in dlm_callback_start()
217 void dlm_callback_stop(struct dlm_ls *ls) in dlm_callback_stop() argument
219 if (ls->ls_callback_wq) in dlm_callback_stop()
220 destroy_workqueue(ls->ls_callback_wq); in dlm_callback_stop()
223 void dlm_callback_suspend(struct dlm_ls *ls) in dlm_callback_suspend() argument
225 if (!test_bit(LSFL_FS, &ls->ls_flags)) in dlm_callback_suspend()
228 spin_lock_bh(&ls->ls_cb_lock); in dlm_callback_suspend()
229 set_bit(LSFL_CB_DELAY, &ls->ls_flags); in dlm_callback_suspend()
230 spin_unlock_bh(&ls->ls_cb_lock); in dlm_callback_suspend()
232 if (ls->ls_callback_wq) in dlm_callback_suspend()
233 flush_workqueue(ls->ls_callback_wq); in dlm_callback_suspend()
238 void dlm_callback_resume(struct dlm_ls *ls) in dlm_callback_resume() argument
244 if (!test_bit(LSFL_FS, &ls->ls_flags)) in dlm_callback_resume()
248 spin_lock_bh(&ls->ls_cb_lock); in dlm_callback_resume()
249 list_for_each_entry_safe(cb, safe, &ls->ls_cb_delay, list) { in dlm_callback_resume()
251 if (test_bit(LSFL_SOFTIRQ, &ls->ls_flags)) in dlm_callback_resume()
254 queue_work(ls->ls_callback_wq, &cb->work); in dlm_callback_resume()
260 empty = list_empty(&ls->ls_cb_delay); in dlm_callback_resume()
262 clear_bit(LSFL_CB_DELAY, &ls->ls_flags); in dlm_callback_resume()
263 spin_unlock_bh(&ls->ls_cb_lock); in dlm_callback_resume()
273 log_rinfo(ls, "%s %d", __func__, sum); in dlm_callback_resume()