]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
workqueue: Make send_mayday() take a PWQ argument directly
authorLai Jiangshan <jiangshan.ljs@antgroup.com>
Mon, 8 Dec 2025 13:25:17 +0000 (21:25 +0800)
committerTejun Heo <tj@kernel.org>
Mon, 8 Dec 2025 19:17:11 +0000 (09:17 -1000)
Make send_mayday() operate on a PWQ directly instead of taking a work
item, so that rescuer_thread() now calls send_mayday(pwq) instead of
open-coding the mayday list manipulation.

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

index 253311af47c6d3f09810103b96d0e238a2cacec9..f8371aa54dcadc485db6182788f4f2fde20b4a0a 100644 (file)
@@ -2976,9 +2976,8 @@ static void idle_cull_fn(struct work_struct *work)
        reap_dying_workers(&cull_list);
 }
 
-static void send_mayday(struct work_struct *work)
+static void send_mayday(struct pool_workqueue *pwq)
 {
-       struct pool_workqueue *pwq = get_work_pwq(work);
        struct workqueue_struct *wq = pwq->wq;
 
        lockdep_assert_held(&wq_mayday_lock);
@@ -3016,7 +3015,7 @@ static void pool_mayday_timeout(struct timer_list *t)
                 * rescuers.
                 */
                list_for_each_entry(work, &pool->worklist, entry)
-                       send_mayday(work);
+                       send_mayday(get_work_pwq(work));
        }
 
        raw_spin_unlock(&wq_mayday_lock);
@@ -3538,13 +3537,7 @@ repeat:
                         */
                        if (pwq->nr_active && need_to_create_worker(pool)) {
                                raw_spin_lock(&wq_mayday_lock);
-                               /*
-                                * Queue iff somebody else hasn't queued it already.
-                                */
-                               if (list_empty(&pwq->mayday_node)) {
-                                       get_pwq(pwq);
-                                       list_add_tail(&pwq->mayday_node, &wq->maydays);
-                               }
+                               send_mayday(pwq);
                                raw_spin_unlock(&wq_mayday_lock);
                        }
                }