Re: [PATCH] workqueue: don't use wq_select_unbound_cpu() for bound works

From: Tejun Heo
Date: Wed Feb 12 2020 - 16:08:36 EST


On Fri, Jan 24, 2020 at 08:14:45PM -0500, Daniel Jordan wrote:
> From: Hillf Danton <hdanton@xxxxxxxx>
>
> wq_select_unbound_cpu() is designed for unbound workqueues only, but
> it's wrongly called when using a bound workqueue too.
>
> Fixing this ensures work queued to a bound workqueue with
> cpu=WORK_CPU_UNBOUND always runs on the local CPU.
>
> Before, that would happen only if wq_unbound_cpumask happened to include
> it (likely almost always the case), or was empty, or we got lucky with
> forced round-robin placement. So restricting
> /sys/devices/virtual/workqueue/cpumask to a small subset of a machine's
> CPUs would cause some bound work items to run unexpectedly there.
>
> Fixes: ef557180447f ("workqueue: schedule WORK_CPU_UNBOUND work on wq_unbound_cpumask CPUs")
> Signed-off-by: Hillf Danton <hdanton@xxxxxxxx>
> [dj: massage changelog]
> Signed-off-by: Daniel Jordan <daniel.m.jordan@xxxxxxxxxx>
> Cc: Tejun Heo <tj@xxxxxxxxxx>
> Cc: Lai Jiangshan <jiangshanlai@xxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx

Applied to wq/for-5.6-fixes.

Thanks.

--
tejun