Messages in this thread | | | From | Lai Jiangshan <> | Subject | [PATCH 0/7] workqueue: cleanups for schedule callbacks | Date | Tue, 7 Dec 2021 15:35:36 +0800 |
| |
From: Lai Jiangshan <laijs@linux.alibaba.com>
The commit 6d25be5782e4 ("sched/core, workqueues: Distangle worker accounting from rq lock") changed the schedule callbacks for workqueue.
It simplified the connection between scheduler and workqueue. But it caused some code uselss and some comments outdated in workqueue. This patchset clean them up.
Patch1 is unrelated to 6d25be5782e4, it is related to a recent change to make wq_worker_sleeping() not being called in preempt disabled section.
Patch2 is cleanup for 6d25be5782e4 not calling schedule callbacks in deeper sleeping path with local-wake-up fashion.
Patch3 is unrelated to 6d25be5782e4, but weakly prepared for patch4.
Patch4-6 are cleanup for 6d25be5782e4 not calling schedule callbacks in wakeup code, so cacheline_aligned for nr_running and schedule() in unbind_workers() is unneeded.
6d25be5782e4 also changed to use pool lock in wq_worker_sleeping(), and patch 7 changes it back to use preemption disabling. This patch is marked for 'RFC' because using pool lock in slow (sleeping) path is OK for me and paves the road to remove "X:" protection.
There are several further cleanups depended on if patch7 is accepted or not. For example, mb() in insert_work() can be removed if pool lock wins.
Lai Jiangshan (7): workqueue: Remove the outdated comment before wq_worker_sleeping() workqueue: Remove the advanced kicking of the idle workers in rebind_workers() workqueue: Remove outdated comment about exceptional workers in unbind_workers() workqueue: Remove schedule() in unbind_workers() workqueue: Move the code of waking a worker up in unbind_workers() workqueue: Remove the cacheline_aligned for nr_running workqueue: Replace pool lock with preemption disabling in wq_worker_sleeping()
kernel/workqueue.c | 102 +++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 64 deletions(-)
-- 2.19.1.6.gb485710b
| |