On Fri, Sep 05, 2025 at 10:56:25AM +0200, Marco Crivellari wrote: > Currently if a user enqueue a work item using schedule_delayed_work() the > used wq is "system_wq" (per-cpu wq) while queue_delayed_work() use > WORK_CPU_UNBOUND (used when a cpu is not specified). The same applies to > schedule_work() that is using system_wq and queue_work(), that makes use > again of WORK_CPU_UNBOUND. > > This lack of consistentcy cannot be addressed without refactoring the API. > > system_wq is a per-CPU worqueue, yet nothing in its name tells about that > CPU affinity constraint, which is very often not required by users. Make > it clear by adding a system_percpu_wq. > > queue_work() / queue_delayed_work() mod_delayed_work() will now use the > new per-cpu wq: whether the user still stick on the old name a warn will > be printed along a wq redirect to the new one. > > This patch add the new system_percpu_wq except for mm, fs and net > subsystem, whom are handled in separated patches. > > The old wq will be kept for a few release cylces. > > Suggested-by: Tejun Heo <[email protected]> > Signed-off-by: Marco Crivellari <[email protected]> > --- > include/linux/closure.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/closure.h b/include/linux/closure.h > index 880fe85e35e9..959b3c584254 100644 > --- a/include/linux/closure.h > +++ b/include/linux/closure.h > @@ -58,7 +58,7 @@ > * bio2->bi_endio = foo_endio; > * bio_submit(bio2); > * > - * continue_at(cl, complete_some_read, system_wq); > + * continue_at(cl, complete_some_read, system_percpu_wq); > * > * If closure's refcount started at 0, complete_some_read() could run before > the > * second bio was submitted - which is almost always not what you want! More > -- > 2.51.0 >
I was confused until I realized you're updating a comment. Acked-by: Kent Overstreet <[email protected]>
