The first 3 patches and patch 5 are minor fixes for the udev rules. Patch 4 fixes an issue that was observed in partner tests. Since we dropped the dependency on systemd-udev-settle.service, it's more common that multipath sees paths being added to existing maps during boot and reloads the maps. If this happens while udev is executing rules for an uevent related to the map in question (most importantly, a coldplug event), the rules may see the map as suspended, and will refrain from scanning the device content. https://systemd.io/BLOCK_DEVICE_LOCKING/ doesn't help us here. We would need to take an exclusive lock an lock_multipath() to achieve that, but since 5ec07b3 ("libmultipath: use a shared lock to co-operate with udev") we don't. We _might_ consider re-introducing exclusive locking, because the main reason we don't was that udev would discard events for which it couldn't obtain the lock. Since systemd 250, udev has a retry logic for such events which would avoid this problem. We would also need to implement similar retry logic in multipathd, though. For now, and because we need to support systemd < 250 anyway, I've come up with the workaround in patch 4 (first tests went well, but more testing is still needed). Patch 5 is a partial fix for the the problem that multipathd socket activation starts multipathd also on systems that don't need it. See https://github.com/opensvc/multipath-tools/issues/76. More far-reaching approaches have been discussed to avoid that the user needs to enable multipathd explicitly if multipath hardware is present (https://github.com/opensvc/multipath-tools/pull/78) but no solid solution for that has emerged yet. Reviews and comments welcome. Martin Wilck (6): 11-dm-mpath.rules: don't import properties that are already set 11-dm-mpath.rules: fix list of imported properties 11-dm-mpath.rules: use import logic like 13-dm-disk.rules 11-dm-mpath.rules: handle reloads during coldplug events multipath: udev rules: use configured $(bindir) in udev rules multipathd: don't activate socket activation by default .gitignore | 1 + Makefile.inc | 2 +- ...11-dm-mpath.rules => 11-dm-mpath.rules.in} | 49 ++++++++++++++----- multipath/Makefile | 2 +- multipath/multipath.rules.in | 5 +- multipathd/multipathd.socket | 4 +- 6 files changed, 45 insertions(+), 18 deletions(-) rename multipath/{11-dm-mpath.rules => 11-dm-mpath.rules.in} (73%) -- 2.43.0