multipath -u: don't grab devices already passed to system
authorMartin Wilck <mwilck@suse.com>
Fri, 13 Apr 2018 22:00:12 +0000 (00:00 +0200)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Fri, 11 May 2018 08:48:54 +0000 (10:48 +0200)
commitb28c406364edbf593a5f0e63cb514c61509322da
treef8c61cdda6b16c195ba36ceb8610900889f6119f
parent41c4ac0f85b0b20ae0b4e61d8035b573475c4635
multipath -u: don't grab devices already passed to system

Setting SYSTEMD_READY=0 on a device that has previously been passed to
systemd is dangerous - already mounted file systems might be unmounted by
systemd.

Avoid that by checking for previously set DM_MULTIPATH_DEVICE_PATH
environment variable.

This requires to change the exit status of multipath -u - it needs to exit
with status 0 even if the path is not a multipath device path, otherwise
udev doesn't import the printed key-value pairs. We do this only for
"multipath -u"; legacy "multipath -c", which is more likely to be run in user
scripts, still exits with 1 for non-multipath devices.

The condition ENV{DM_MULTIPATH_DEVICE_PATH}!="1" before the "multipath -u"
statement in multipath.rules needs to be removed. This condition was
pointless anyway, because until this patch, DM_MULTIPATH_DEVICE_PATH hadn't
been imported from the db and thus was never set, and "multipath -u" was
always invoked. We want to keep this behavior.

Signed-off-by: Martin Wilck <mwilck@suse.com>
multipath/main.c
multipath/multipath.rules