[dm-devel] [PATCH 20/31] 11-dm-mpath.rules: don't set READY->ACTIVATION

Martin Wilck mwilck at suse.com
Wed Sep 13 21:33:10 UTC 2017


On Wed, 2017-09-13 at 16:19 -0500, Benjamin Marzinski wrote:
> On Sun, Sep 03, 2017 at 12:38:49AM +0200, Martin Wilck wrote:
> > The fact alone that a map changes from not ready to ready does
> > not imply that it is activating.
> 
> NAK on this one and
> [PATCH 21/31] 11-dm-mpath.rules: Remember DM_ACTIVATION
> 
> This breaks things. It's often the case that there are devices
> stacked
> on top of multipath.  When multipath loses all of its paths, if it
> doesn't have queue_if_no_path set, it can fail IO up to these higher
> devices, forcing them to react to the failure.  There is no way that
> I
> know of to be able to check in udev to see if this has occured. The
> only
> safe course of action is to assume the worst and notify lvm that
> things
> are better now.

You are right, thanks. I didn't consider the case without queueing.
I see no problem with just skipping these two.

Best,
Martin

> 
> A simple reproducer of the problem is something like:
> 
> - create 2 multipath devices (call them mpatha and mpathb)
> - set up raid1 on top of them
> 
> # pvcreate /dev/mapper/mpatha
> # pvcreate /dev/mapper/mpathc
> # vgcreate test /dev/mapper/mpathb /dev/mapper/mpatha
> # lvcreate --type raid1 -m 1 -L 1G -n raid test
> 
> - verify that everything is o.k.
> 
> # dd if=/dev/zero of=/dev/test/raid bs=1M count=100
> # multipath -ll
> # pvs
> # vgs
> # lvs
> 
> - remove all of the path devices from mpatha
> - verify that the raid device is in partial mode
> 
> # dd if=/dev/zero of=/dev/test/raid bs=1M count=100 
> # multipath -ll
> # pvs
> # vgs
> # lvs
> 
> - add the path devices back to the system
> - check if the raid device has recovered
> 
> # multipath -ll
> # pvs
> # vgs
> # lvs
> 
> With these patches, the raid device remains in partial mode, and the
> mpatha pv is still listed as unknown. If I revert these two patches,
> everything works fine again.
> 
> -Ben
> 
> > Signed-off-by: Martin Wilck <mwilck at suse.com>
> > ---
> >  multipath/11-dm-mpath.rules | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/multipath/11-dm-mpath.rules b/multipath/11-dm-
> > mpath.rules
> > index 0be22ae4..3f47744f 100644
> > --- a/multipath/11-dm-mpath.rules
> > +++ b/multipath/11-dm-mpath.rules
> > @@ -64,8 +64,7 @@ ENV{MPATH_DEVICE_READY}=="0",
> > ENV{.MPATH_DEVICE_READY_OLD}=="1",\
> >  ENV{MPATH_DEVICE_READY}=="0",
> > ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1"
> >  ENV{MPATH_DEVICE_READY}!="0", ENV{.MPATH_DEVICE_READY_OLD}=="0",\
> >  	ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="$env{DM_DISABLE_OTH
> > ER_RULES_FLAG_OLD}",\
> > -	ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}="",\
> > -	ENV{DM_ACTIVATION}="1"
> > +	ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}=""
> >  
> >  LABEL="scan_import"
> >  ENV{DM_NOSCAN}!="1", GOTO="mpath_end"
> > -- 
> > 2.14.0
> 
> 

-- 
Dr. Martin Wilck <mwilck at suse.com>, Tel. +49 (0)911 74053 2107
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)




More information about the dm-devel mailing list