libmultipath: support MPATH_UDEV_NO_PATHS_FLAG on map creation
authorMartin Wilck <mwilck@suse.com>
Sat, 2 Sep 2017 22:38:38 +0000 (00:38 +0200)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Wed, 20 Sep 2017 15:45:08 +0000 (17:45 +0200)
commitba845a6d6be5a6922fa7eedee73ed6b99f57df86
tree8c56cc94a8158b561b29d58be0c0346627d5dd5f
parent4d57b868730f2bc67ce01d78060cdfbed19e4d3d
libmultipath: support MPATH_UDEV_NO_PATHS_FLAG on map creation

Some vendor kernels (e.g. SUSE) have supported loading multipath
maps without valid paths for a long time. Without that feature,
problems can occur in failover scenarios when multipathd tries
to (re)load maps after device failure/removal, because multipathd's
attempts to reload the configuration may fail unnecessarily.
The discussion in the kernel community is ongoing
(see e.g. https://patchwork.kernel.org/patch/4579551/).

One corner case of this is creation of a map with only failed
paths. Such maps can be created if the kernel patch mentioned above
is applied. The current udev rules for dm-multipath can't detect
this situation. This patch fixes that by setting
DM_SUBSYSTEM_UDEV_FLAG2, which is already used for the "map reload"
case with no valid paths. Thus no additional udev rules are required
to detect this situation.

Signed-off-by: Martin Wilck <mwilck@suse.com>
libmultipath/devmapper.c