[dm-devel] [PATCH 21/31] 11-dm-mpath.rules: Remember DM_ACTIVATION
Martin Wilck
mwilck at suse.com
Sat Sep 2 22:38:50 UTC 2017
If DM_ACTIVATION is set by the general dm rules, we need to
bring up this device. But if the mpath device is not ready,
that would be dangerous; it could hang or produce lots of IO
errors. So remember this state, and try to activate when the
map becomes usable later.
Signed-off-by: Martin Wilck <mwilck at suse.com>
---
multipath/11-dm-mpath.rules | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/multipath/11-dm-mpath.rules b/multipath/11-dm-mpath.rules
index 3f47744f..9bfd75f8 100644
--- a/multipath/11-dm-mpath.rules
+++ b/multipath/11-dm-mpath.rules
@@ -4,6 +4,7 @@ ENV{DM_UUID}!="mpath-?*", GOTO="mpath_end"
IMPORT{db}="DM_DISABLE_OTHER_RULES_FLAG_OLD"
IMPORT{db}="MPATH_DEVICE_READY"
+IMPORT{db}="MPATH_NEEDS_ACTIVATION"
# If this uevent didn't come from dm, don't try to update the
# device state
@@ -55,6 +56,13 @@ ENV{DM_SUBSYSTEM_UDEV_FLAG0}=="1", ENV{DM_ACTIVATION}="0"
# We'd like to avoid this, especially within udev processing.
ENV{MPATH_DEVICE_READY}=="0", ENV{DM_NOSCAN}="1"
+# If DM_ACTIVATION is set, but can't be satisfied, remember it
+# in MPATH_NEEDS_ACTIVATION, and activate at the next opportunity.
+ENV{MPATH_DEVICE_READY}=="0", ENV{DM_ACTIVATION}=="1", \
+ ENV{MPATH_NEEDS_ACTIVATION}="1", ENV{DM_ACTIVATION}="0"
+ENV{MPATH_DEVICE_READY}!="0", ENV{MPATH_NEEDS_ACTIVATION}=="1", \
+ ENV{DM_ACTIVATION}="1", ENV{MPATH_NEEDS_ACTIVATION}=""
+
# Also skip all foreign rules if no path is available.
# Remember the original value of DM_DISABLE_OTHER_RULES_FLAG
# and restore it back once we have at least one path available.
--
2.14.0
More information about the dm-devel
mailing list