]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
workqueue: Only assign rescuer work when really needed
authorLai Jiangshan <jiangshan.ljs@antgroup.com>
Fri, 21 Nov 2025 14:57:15 +0000 (22:57 +0800)
committerTejun Heo <tj@kernel.org>
Fri, 21 Nov 2025 19:45:36 +0000 (09:45 -1000)
If the pwq does not need rescue (normal workers have been created or
become available), the rescuer can immediately move on to other stalled
pwqs.

Signed-off-by: Lai Jiangshan <jiangshan.ljs@antgroup.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/workqueue.c

index 0e5ec6e002b1a7ee52e47211a6203b6797ff89ed..656715d216b49958619ea981542a21cfcbc5fbc4 100644 (file)
@@ -3442,6 +3442,10 @@ static bool assign_rescuer_work(struct pool_workqueue *pwq, struct worker *rescu
        struct worker_pool *pool = pwq->pool;
        struct work_struct *work, *n;
 
+       /* need rescue? */
+       if (!pwq->nr_active || !need_to_create_worker(pool))
+               return false;
+
        /*
         * Slurp in all works issued via this workqueue and
         * process'em.