Re: [PATCH v3] workqueue: introduce queue_delayed_work_on_offline_safe
From: Tejun Heo
Date: Thu Feb 06 2025 - 11:34:38 EST
On Wed, Feb 05, 2025 at 11:54:20AM +1100, imran.f.khan@xxxxxxxxxx wrote:
...
> The problem is for the cases where a CPU is already offline or in the
> middle of being offlined and past timers_dead_cpu callback. In such a
> scenario if someone puts a delayed work on this CPU, we have problem.
> The WARN_ON_ONCE in [1] can indicate this but the dwork's timer would
> still end up on the offlined cpu and will not be migrated (since CPU was
> past timer_dead state , when dwork was queued).
>
> One way to avoid this is that we ask callers to do the needful (hotplug lock,
> hotplug callbacks) and ensure dwork does not end up on such offlined CPU.
> The other way (as attempted in this patch) would be to give such users an
> interface, that can ensure that dwork never ends on on offlined CPU.
I don't think introducing a new interface makes sense here. Either the WARN
is enough or we can follow what queue_work_on() does and ensure that the
delayed work item gets executed *somewhere*.
Thanks.
--
tejun