On Mon, Oct 05, 2026 at 04:57:25AM +0000, Suresh Thelkar wrote: > On a failed DM_DEVICE_REMOVE, dm_flush_map__() classified anything that > was not DM_IS_MPATH_YES as "removed externally" and returned DM_FLUSH_OK > without resuming the map it had just suspended. dm_is_mpath() also > returns DM_IS_MPATH_ERR (-1) when the status query itself fails, which > happens transiently under a heavy ioctl load (e.g. LUN-number recycling > plus ALUA transitions). A transient error was thus misread as a > successful external removal, and the map was left suspended > indefinitely, wedging later I/O node-wide via sync(). > > Only DM_IS_MPATH_NO now counts as "removed externally". A query error is > logged and falls through to the resume path instead of being reported as > success. > > Signed-off-by: Suresh Thelkar <[email protected]>
Reviewed-by: Benjamin Marzinski <[email protected]>
