Lines Matching defs:pctl
42 struct xfs_pwork_ctl *pctl;
46 pctl = pwork->pctl;
47 error = pctl->work_fn(pctl->mp, pwork);
48 if (error && !pctl->error)
49 pctl->error = error;
50 if (atomic_dec_and_test(&pctl->nr_work))
51 wake_up(&pctl->poll_wait);
62 struct xfs_pwork_ctl *pctl,
73 pctl->wq = alloc_workqueue("%s-%d", WQ_FREEZABLE, nr_threads, tag,
75 if (!pctl->wq)
77 pctl->work_fn = work_fn;
78 pctl->error = 0;
79 pctl->mp = mp;
80 atomic_set(&pctl->nr_work, 0);
81 init_waitqueue_head(&pctl->poll_wait);
89 struct xfs_pwork_ctl *pctl,
93 pwork->pctl = pctl;
94 atomic_inc(&pctl->nr_work);
95 queue_work(pctl->wq, &pwork->work);
101 struct xfs_pwork_ctl *pctl)
103 destroy_workqueue(pctl->wq);
104 pctl->wq = NULL;
105 return pctl->error;
114 struct xfs_pwork_ctl *pctl)
116 while (wait_event_timeout(pctl->poll_wait,
117 atomic_read(&pctl->nr_work) == 0, HZ) == 0)