Re: [PATCH v10 0/5] shut down devices asynchronously
From: stuart hayes
Date: Thu Jul 03 2025 - 12:00:01 EST
On 7/3/2025 6:46 AM, Christoph Hellwig wrote:
On Wed, Jun 25, 2025 at 03:18:48PM -0500, Stuart Hayes wrote:
Address resource and timing issues when spawning a unique async thread
for every device during shutdown:
* Make the asynchronous threads able to shut down multiple devices,
instead of spawning a unique thread for every device.
* Modify core kernel async code with a custom wake function so it
doesn't wake up threads waiting to synchronize every time the cookie
changes
Given all these thread spawning issues, why can't we just go back
to the approach that kicks off shutdown asynchronously and then waits
for it without spawning all these threads?
If you mean for drivers to have an extra call like shutdown_start()
that's called for all devices before waiting for any of them to finish,
it seems like that would just push the work of spawning a shutdown
thread onto the individual drivers (unless they just had a single
command they issue to the device that takes all the time), and
synchronization might be more of an issue since shutdown_start() could
be called on a device before that device's children or dependents have
finished shutting down.
With the async shutdown code from this patch set in place, any driver
can be fully enabled to shut down devices asynchronously with no work
other than setting a flag to allow it, and no device will start shutting
down until its children and dependents have finished.
I think the main issue in the previous version of this patch was just
that it was taking too long on smaller systems to spawn a thread for
every single device shutdown, when most or all of those devices were
shutting down synchronously anyway. This version of the patch solves
that issue... it should only spawn on the order of roughly 2N threads on
systems with N async shutdown devices, and it improves the kernel async
code to make synchronizing to a cookie faster, too.