[GIT PULL] workqueue: Changes for v6.11

From: Tejun Heo
Date: Mon Jul 15 2024 - 00:43:09 EST


The following changes since commit 8a92980606e3585d72d510a03b59906e96755b8a:

Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi (2024-06-06 14:40:51 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git/ tags/wq-for-6.11

for you to fetch changes up to 58629d4871e8eb2c385b16a73a8451669db59f39:

workqueue: Always queue work items to the newest PWQ for order workqueues (2024-07-14 18:20:19 -1000)

----------------------------------------------------------------
workqueue: Changes for v6.11

- Lai fixed a bug where CPU hotplug and workqueue attribute changes race
leaving some workqueues not fully updated. This involved refactoring and
changing how online CPUs are tracked. The resulting code is cleaner.

- Workqueue watchdog touch operation was causing too much cacheline
contention on very large machines. Nicholas improved scalabililty by
avoiding unnecessary global updates.

- Code cleanups and minor rescuer behavior improvement.

- The last commit 58629d4871e8 ("workqueue: Always queue work items to the
newest PWQ for order workqueues") is a cherry-picked straggler commit from
for-6.10-fixes, a fix for a bug which may not actually trigger.
Unfortunately, maybe because for-6.10-fixes was branched off at a
different point from for-6.11, I couldn't persuade git request-pull to
generate clean diffstat if pulled into for-6.11.

----------------------------------------------------------------
Julia Lawall (1):
workqueue: replace call_rcu by kfree_rcu for simple kmem_cache_free callback

Lai Jiangshan (20):
workqueue: Avoid nr_active manipulation in grabbing inactive items
workqueue: Reap workers via kthread_stop() and remove detach_completion
workqueue: Don't bind the rescuer in the last working cpu
workqueue: Detach workers directly in idle_cull_fn()
workqueue: Remove useless pool->dying_workers
workqueue: Update cpumasks after only applying it successfully
workqueue: Simplify goto statement
workqueue: Register sysfs after the whole creation of the new wq
workqueue: Make rescuer initialization as the last step of the creation of a new wq
workqueue: Move kthread_flush_worker() out of alloc_and_link_pwqs()
workqueue: Put PWQ allocation and WQ enlistment in the same lock C.S.
workqueue: Init rescuer's affinities as the wq's effective cpumask
workqueue: Add wq_online_cpumask
workqueue: Simplify wq_calc_pod_cpumask() with wq_online_cpumask
workqueue: Remove cpus_read_lock() from apply_wqattrs_lock()
workqueue: Remove the unneeded cpumask empty check in wq_calc_pod_cpumask()
workqueue: Remove the argument @cpu_going_down from wq_calc_pod_cpumask()
workqueue: Remove the arguments @hotplug_cpu and @online from wq_update_pod()
workqueue: Rename wq_update_pod() to unbound_wq_update_pwq()
workqueue: Always queue work items to the newest PWQ for order workqueues

Nicholas Piggin (2):
workqueue: wq_watchdog_touch is always called with valid CPU
workqueue: Improve scalability of workqueue watchdog touch

Wenchao Hao (1):
workqueue: Clean code in alloc_and_link_pwqs()

kernel/workqueue.c | 346 ++++++++++++++++++++++++-----------------------------
1 file changed, 157 insertions(+), 189 deletions(-)