On Mon, Oct 05, 2026 at 04:57:26AM +0000, Suresh Thelkar wrote:
> After a failed DM_DEVICE_REMOVE the map was suspended earlier in
> dm_flush_map__(), and the recovery path issued a single fire-and-forget
> DM_DEVICE_RESUME whose result was ignored. If that resume ioctl failed
> (possible under an ioctl storm) the map stayed suspended, which wedges
> any later task in uninterruptible D state and, because sync() walks
> every block device, hangs I/O node-wide until reboot.
> 
> Since the map is known to have been suspended at the start of the loop,
> the DM_DEVICE_RESUME return value is authoritative. Simply retry the
> resume once if the ioctl fails, so a transient failure does not leave
> the map suspended. The remove is still retried by the enclosing loop
> when retries are requested.
> 
> Signed-off-by: Suresh Thelkar <[email protected]>

Reviewed-by: Benjamin Marzinski <[email protected]>


Reply via email to