On Thu, Apr 04, 2024 at 07:38:07PM +0200, Martin Wilck wrote: > With the late patches for 10-dm.rules, DM_UDEV_DISABLE_OTHER_RULES_FLAG isn't > restored from the udev database any more, so we don't need to restore > the flag to its original state before it is saved to the db. > > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> > --- > multipath/11-dm-mpath.rules.in | 22 ++++++++++++---------- > 1 file changed, 12 insertions(+), 10 deletions(-) > > diff --git a/multipath/11-dm-mpath.rules.in b/multipath/11-dm-mpath.rules.in > index 4386b6c..2f909c3 100644 > --- a/multipath/11-dm-mpath.rules.in > +++ b/multipath/11-dm-mpath.rules.in > @@ -19,7 +19,7 @@ ACTION=="add", ENV{DM_ACTIVATION}=="1", ENV{DM_SUSPENDED}!="1", ENV{DISK_RO}!="1 > # If this uevent didn't come from dm, don't try to update the > # device state > # Note that .MPATH_DEVICE_READY_OLD=="" here. Thus we won't activate the > -# device below at force_activation, which is correct. > +# device below at mpath_is_ready, which is correct. > ENV{DM_COOKIE}!="?*", ENV{DM_ACTION}!="PATH_*", \ > IMPORT{db}="DM_COLDPLUG_SUSPENDED", \ > GOTO="force_activation" > @@ -84,25 +84,27 @@ ENV{DM_ACTION}=="PATH_FAILED|PATH_REINSTATED", \ > > LABEL="force_activation" > > +ENV{MPATH_DEVICE_READY}!="0", GOTO="mpath_is_ready" > # Do not initiate scanning if no path is available, > # otherwise there would be a hang or IO error on access. > # We'd like to avoid this, especially within udev processing. > -ENV{MPATH_DEVICE_READY}=="0", ENV{DM_NOSCAN}="1" > - > -# Skip all foreign rules if no path is available. > +# This is communicated to later rules in DM_NOSCAN. > +# Likewise, skip all foreign rules if no path is available. > # Use DM_UDEV_DISABLE_OTHER_RULES_FLAG to communicate this > -# to upper layers. The original value will be restored in a late > -# udev rule. > -ENV{MPATH_DEVICE_READY}=="0", \ > - ENV{.MPATH_SAVE_DISABLE_OTHER_RULES_FLAG}="$env{DM_UDEV_DISABLE_OTHER_RULES_FLAG}", \ > - ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" > +# to upper layers. With dm rules < v3, save the original value here; > +# it will be restored in a late udev rule. > +ENV{DM_UDEV_RULES_VSN}=="1|2", \ > + ENV{.MPATH_SAVE_DISABLE_OTHER_RULES_FLAG}="$env{DM_UDEV_DISABLE_OTHER_RULES_FLAG}" > +ENV{DM_NOSCAN}="1", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" > +GOTO="dont_activate" > + > +LABEL="mpath_is_ready" > > # If the device comes back online, set DM_ACTIVATION so that > # upper layers do a rescan. If the device is currently suspended, > # we have to postpone the activation until the next event. > # In this case, we have to set MPATH_DEVICE_READY=0; otherwise, the > # MPATH_UNCHANGED logic will cause later rules to skipped in the next event. > -ENV{MPATH_DEVICE_READY}=="0", GOTO="dont_activate" > ENV{.MPATH_DEVICE_READY_OLD}!="0", GOTO="dont_activate" > ENV{DM_SUSPENDED}=="1", ENV{MPATH_DEVICE_READY}="0", GOTO="dont_activate" > > -- > 2.44.0