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


Reply via email to