summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLai Jiangshan <jiangshan.ljs@antgroup.com>2025-11-21 22:57:15 +0800
committerTejun Heo <tj@kernel.org>2025-11-21 09:45:36 -1000
commit7b05c90b3302cf3d830dfa6f8961376bcaf43b94 (patch)
treeefddea01e61f90bc4494b0b60c2f81b827c01a0c
parent99ed6f62a46e91dc796b785618d646eeded1b230 (diff)
workqueue: Only assign rescuer work when really needed
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>
-rw-r--r--kernel/workqueue.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 0e5ec6e002b1..656715d216b4 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -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.