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]>
