Lines Matching defs:rescuer

248 	PWQ_STAT_MAYDAY,	/* maydays to rescuer */
249 PWQ_STAT_RESCUED, /* linked work items executed by rescuer */
353 struct worker *rescuer; /* MD: rescue worker */
3004 if (!wq->rescuer)
3012 * rescuer is done with it.
3016 wake_up_process(wq->rescuer->task);
3379 * exception is work items which belong to workqueues with a rescuer which
3458 static bool assign_rescuer_work(struct pool_workqueue *pwq, struct worker *rescuer)
3471 * The pool has idle workers and doesn't need the rescuer, so it
3503 if (get_work_pwq(work) == pwq && assign_work(work, rescuer, &n)) {
3515 * rescuer_thread - the rescuer thread function
3518 * Workqueue rescuer thread function. There's one rescuer for each
3525 * the problem rescuer solves.
3537 struct worker *rescuer = __rescuer;
3538 struct workqueue_struct *wq = rescuer->rescue_wq;
3544 * Mark rescuer as worker too. As WORKER_PREP is never cleared, it
3552 * By the time the rescuer is requested to stop, the workqueue
3554 * pwq(s) queued. This can happen by non-rescuer workers consuming
3555 * all the work items before the rescuer got to them. Go through
3575 worker_attach_to_pool(rescuer, pool);
3579 WARN_ON_ONCE(!list_empty(&rescuer->scheduled));
3581 while (assign_rescuer_work(pwq, rescuer)) {
3582 process_scheduled_works(rescuer);
3587 * let the rescuer handle the other PWQs first.
3598 /* The cursor can not be left behind without the rescuer watching it. */
3610 worker_detach_from_pool(rescuer);
3630 WARN_ON_ONCE(!(rescuer->flags & WORKER_NOT_RUNNING));
4263 * single-threaded or rescuer equipped workqueue.
4266 * is after the work issuing the flush_work(). For rescuer equipped
4267 * workqueues the deadlock happens when the rescuer stalls, blocking
4270 if (!from_cancel && (wq->saved_max_active == 1 || wq->rescuer))
5645 * Workqueues which may be used during memory reclaim should have a rescuer
5650 struct worker *rescuer;
5659 rescuer = alloc_worker(NUMA_NO_NODE);
5660 if (!rescuer) {
5661 pr_err("workqueue: Failed to allocate a rescuer for wq \"%s\"\n",
5666 rescuer->rescue_wq = wq;
5667 format_worker_id(id_buf, sizeof(id_buf), rescuer, NULL);
5669 rescuer->task = kthread_create(rescuer_thread, rescuer, "%s", id_buf);
5670 if (IS_ERR(rescuer->task)) {
5671 ret = PTR_ERR(rescuer->task);
5672 pr_err("workqueue: Failed to create a rescuer kthread for wq \"%s\": %pe",
5674 kfree(rescuer);
5678 wq->rescuer = rescuer;
5680 /* initial cpumask is consistent with the detached rescuer and unbind_worker() */
5682 kthread_bind_mask(rescuer->task, wq_unbound_cpumask);
5684 kthread_bind_mask(rescuer->task, cpu_possible_mask);
5686 wake_up_process(rescuer->task);
5968 /* kill rescuer, if sanity checks fail, leave it w/o rescuer */
5969 if (wq->rescuer) {
5970 /* rescuer will empty maydays list before exiting */
5971 kthread_stop(wq->rescuer->task);
5972 kfree(wq->rescuer);
5973 wq->rescuer = NULL;
6102 * current_is_workqueue_rescuer - is %current workqueue rescuer?
6104 * Determine whether %current is a workqueue rescuer. Can be used from
6105 * work functions to determine whether it's being run off the rescuer task.
6107 * Return: %true if %current is a workqueue rescuer. %false otherwise.
7005 /* rescuer needs to respect cpumask changes when it is not attached */
7007 if (wq->rescuer && !wq->rescuer->pool)
7008 unbind_worker(wq->rescuer);
8012 * up. Also, create a rescuer for workqueues that requested it.
8023 "workqueue: failed to create early rescuer for %s",