Re: [PATCH wq/for-6.9 v5 0/4] workqueue: Enable unbound cpumask update on ordered workqueues

From: Waiman Long
Date: Thu Feb 08 2024 - 14:38:41 EST



On 2/8/24 14:26, Tejun Heo wrote:
On Thu, Feb 08, 2024 at 11:10:10AM -0500, Waiman Long wrote:
v5:
- [v4] https://lore.kernel.org/lkml/20240207011911.975608-1-longman@xxxxxxxxxx/
- Streamline patch 2 by simplifying unplug_oldest_pwq() and calling it
only in pwq_release_workfn().

v4:
- [v3] https://lore.kernel.org/lkml/20240205194602.871505-1-longman@xxxxxxxxxx/
- Rebase on the latest for-6.9 branch again & discard the use of
__WQ_ORDERED_EXPLICIT and resetting of __WQ_ORDERED.
- Add a new patch 1 to change the ordering of pwq's in wq->pwqs from
oldest to newest.
- Change the terminalogy from freeze/thaw to plug/unplug.
- Allow more than 2 pwq's in wq->pwqs of ordered workqueue but only the
oldest one is unplugged. This eliminates the need to wait for
the draining of extra pwq in workqueue_apply_unbound_cpumask().

v3:
- [v2] https://lore.kernel.org/lkml/20240203154334.791910-1-longman@xxxxxxxxxx/
- Drop patch 1 as it has been merged into the for-6.9 branch.
- Use rcu_access_pointer() to access wq->dfl_pwq.
- Use RCU protection instead of acquiring wq->mutex in
apply_wqattrs_cleanup().
Applied the series w/ (w/ the updated second patch) to wq/for-6.9.

Thanks for working on this. It's really great that this got solved finally.

Me too. Thanks for all the good suggestions that you had given me as I don't have a full understanding of all the different pieces of the workqueue code.

Cheers,
Longman