[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20211207073543.61092-1-jiangshanlai@gmail.com>
Date: Tue, 7 Dec 2021 15:35:36 +0800
From: Lai Jiangshan <jiangshanlai@...il.com>
To: linux-kernel@...r.kernel.org, Tejun Heo <tj@...nel.org>
Cc: Lai Jiangshan <laijs@...ux.alibaba.com>
Subject: [PATCH 0/7] workqueue: cleanups for schedule callbacks
From: Lai Jiangshan <laijs@...ux.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
Powered by blists - more mailing lists