diff options
| author | Lai Jiangshan <jiangshan.ljs@antgroup.com> | 2025-11-21 22:57:15 +0800 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2025-11-21 09:45:36 -1000 |
| commit | 7b05c90b3302cf3d830dfa6f8961376bcaf43b94 (patch) | |
| tree | efddea01e61f90bc4494b0b60c2f81b827c01a0c /kernel/workqueue.c | |
| parent | 99ed6f62a46e91dc796b785618d646eeded1b230 (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>
Diffstat (limited to 'kernel/workqueue.c')
| -rw-r--r-- | kernel/workqueue.c | 4 |
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. |