Re: [PATCH v3 0/7] Fix muitpath/multipathd flush issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2020-07-02 at 19:06 -0500, Benjamin Marzinski wrote:
> If a multipath device is removed, and check_path() checks one of its
> paths before multipathd processes either the uevent or the dm event
> from
> removing it, multipathd will recreate the removed device. This
> happens
> because check_path() will continute to check the removed device's
> former
> paths until an event arrives removing the device.  A missing multpath
> device will cause the update_multipath_strings() call to fail,
> setting
> pp->dmstate to PSTATE_UNDEF.  If the path is up, this dmstate will
> cause
> reinstate_path() to be called, which will also fail, because the
> multipath device doesn't exist.  This will trigger a reload,
> restoring
> the recently removed device.
> 
> This patchset handles this is two ways. The first two patches
> directly
> fix these issues in check_path(), so that a missing multipath device
> will no longer get recreated when checking one of its former paths.
> 
> The other 5 patches add a "multipathd del maps" command, and make the
> mutipath command delegate flush operations to multipathd so
> multipathd's
> state remains in sync with the kernel's, while doing removes.
> 
> Changes from v1:
> 0001:	This is completely different. I've change how patch 0002
> detects
> 	when a multipath device has disappeared. Instead of
> do_get_info,
> 	I need more return values on dm_get_map/status, and the
> 	update_multipath_* functions. I have used symbolic return
> 	values, which was the objection to the previous patch. I tried
> 	to picked generic enough names that they could be used for
> other
> 	devmapper.c functions as well.
> 
> 0002:	At Martin's suggestion, multipath now differentiates between dm
> 	failures and a missing multipath device in
> 	update_multipath_strings(). So there is no need to recheck if
> 	the device is missing.
> 
> 0006:	Added some man page info that was previously in patch 0007
> 
> 0007:	Removed mentions of the -D option in the man page and usage
> 	output.
> 
> Changes from v2 (all are Martin's suggestions):
> 0001:	Using dm_task_get_errno() and changed the names and values of
> 	the symbolic returns.
> 
> 0002:	Changed symbolic return names, and improved some logging.
> 
> Benjamin Marzinski (7):
>   libmultipath: make dm_get_map/status return codes symbolic
>   multipathd: fix check_path errors with removed map
>   libmultipath: make dm_flush_maps only return 0 on success
>   multipathd: add "del maps" multipathd command
>   multipath: make flushing maps work like other commands
>   multipath: delegate flushing maps to multipathd
>   multipath: add option to skip multipathd delegation
> 
>  libmultipath/config.h      |  4 ++-
>  libmultipath/configure.h   |  3 --
>  libmultipath/devmapper.c   | 63 +++++++++++++++++++++++++-----------
> --
>  libmultipath/devmapper.h   |  8 ++++-
>  libmultipath/structs_vec.c | 45 +++++++++++++++------------
>  multipath/main.c           | 44 ++++++++++++++++++--------
>  multipath/multipath.8      |  4 +--
>  multipathd/cli.c           |  1 +
>  multipathd/cli_handlers.c  | 19 ++++++++++++
>  multipathd/cli_handlers.h  |  1 +
>  multipathd/main.c          | 57 ++++++++++++++++------------------
>  multipathd/main.h          |  1 +
>  12 files changed, 160 insertions(+), 90 deletions(-)
> 

For the set:

Reviewed-by: Martin Wilck <mwilck@xxxxxxxx>

-- 
Dr. Martin Wilck <mwilck@xxxxxxxx>, Tel. +49 (0)911 74053 2107
SUSE  Software Solutions Germany GmbH
HRB 36809, AG Nürnberg GF: Felix
Imendörffer



--
dm-devel mailing list
dm-devel@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/dm-devel





[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux