On Mon, 2025-03-24 at 16:55 -0400, Benjamin Marzinski wrote:
> If a multipath device was created by the multipath command,
> multipathd
> might not agree with how the device was created. ev_add_map() can
> reload
> the device with a different table by calling add_map_without_path() -
> >
> update_map(). If this reloading of the map failed, multipathd was
> simply
> ignoring the multipath device, even though it still existed.
> 
> One way that reloading can fail is if a path that multipathd already
> has
> initialized goes offline. If a multipath device is created by the
> multipath command while the path is offline, it will not use the
> offline
> path, since multipath won't be able to get the necessary pathinfo.
> However, multipathd will already have the pathinfo for the path, and
> may
> not even know that it's offline, since the path is an orphan. When it
> tries to reload the device, it will include the offline path, and the
> reload will fail.

Am I understanding correctly that during the reload, bdev_open() failed
in the kernel because the path was offline?

I was thinking about my recent tests [1] where I'd come to the
conclusion that reload failure is hardly possible. While I'd realized
that "trying to add a path device that was not previously mapped" might
fail, I didn't think of the scenario you describe here.

[1] 
https://lore.kernel.org/dm-devel/ee6fcbda31fd1f13969653782417fbed748f5bc7.ca...@suse.com/

> 
> Instead of ignoring the device if it can't reload it, multipathd
> should
> just montior it as it is. When the path device is no longer offline,
> it
> can be added back to the multipath device by calling
> "multipathd reconfigure" or "multipathd add path <path>".


> Signed-off-by: Benjamin Marzinski <bmarz...@redhat.com>

Reviewed-by: Martin Wilck <mwi...@suse.com>


Reply via email to