multipath: do not check daemon from udev rules
authorHannes Reinecke <hare@suse.de>
Tue, 28 Feb 2017 16:23:00 +0000 (17:23 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Thu, 16 Mar 2017 06:57:16 +0000 (07:57 +0100)
commit13aa088efdcb86e2df9a410a5fc3346a5ed85af8
treea95894fe11a46cb4999fb2073a7909d4bf8fc4d4
parentcd3184e107c8f068f299f6e8091081803c161373
multipath: do not check daemon from udev rules

As stated previously, multipathd needs to start after udev trigger
has run as otherwise it won't be able to find any devices.
However, this also means that during udevadm trigger the daemon
wouldn't run, and consequently the check in the udev rules will
always be false, causing the device not to be marked as multipath
capable.

As it turns out, calling 'multipath' from udev rules has quite some
challenges. It _should_ check if a device is eligible for multipathing.
But it needs to work under all circumstances, even if the daemon isn't
running yet, as the program will be called from uevents which might
(and will) come in before the daemon is running.
To check if the daemon _should_ be run I'm checking the various
'.wants' directories from systemd, which carries links to the services
systemd will enable eventually. So if the multipathd.service is
listed in there it will be started, even if it isn't started yet.

Signed-off-by: Hannes Reinecke <hare@suse.com>
libmultipath/util.c
libmultipath/util.h
multipath/main.c