287}
288
289void dlm_recoverd_kick(struct dlm_ls *ls)
290{
291 set_bit(LSFL_WORK, &ls->ls_flags);
292 wake_up_process(ls->ls_recoverd_task);
293}
294
295int dlm_recoverd_start(struct dlm_ls *ls)
296{
297 struct task_struct *p;
298 int error = 0;
299
300 p = kthread_run(dlm_recoverd, ls, "dlm_recoverd");
301 if (IS_ERR(p))
302 error = PTR_ERR(p);
303 else
304 ls->ls_recoverd_task = p;
305 return error;
306}
307
308void dlm_recoverd_stop(struct dlm_ls *ls)
309{
310 kthread_stop(ls->ls_recoverd_task);
311}
312
313void dlm_recoverd_suspend(struct dlm_ls *ls)
314{
315 wake_up(&ls->ls_wait_general);
316 mutex_lock(&ls->ls_recoverd_active);
317}
318
319void dlm_recoverd_resume(struct dlm_ls *ls)
320{
321 mutex_unlock(&ls->ls_recoverd_active);
322}
323