DM-Devel Archive mirror
 help / color / mirror / Atom feed
From: Martin Wilck <martin.wilck@suse.com>
To: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>,
	 dm-devel@lists.linux.dev, Peter Rajnoha <prajnoha@redhat.com>
Subject: Re: [PATCH 07/11] 11-dm-mpath.rules: replace DM_SUSPENDED by .DM_SUSPENDED
Date: Thu, 04 Apr 2024 17:17:29 +0200	[thread overview]
Message-ID: <6c35748b10daff12205b778c0d8f55565410aa7c.camel@suse.com> (raw)
In-Reply-To: <ZgNcEA-pxlpvqqr6@bmarzins-01.fast.eng.rdu2.dc.redhat.com>

On Tue, 2024-03-26 at 19:36 -0400, Benjamin Marzinski wrote:
> On Sun, Mar 24, 2024 at 10:12:57PM +0100, Martin Wilck wrote:
> > With the late changes to the device mapper rules, DM_SUSPENDED
> > is not exported any more. Use .DM_SUSPENDED instead.
> > 
> > Note that although 11-dm-mpath.rules is not a part of lvm2, it
> > can be considered as part of the device-mapper layer (everything
> > before 13-dm-disk.rules can), and is thus allowed to use
> > .DM_SUSPENDED. In practice .DM_SUSPENDED is equivalent to
> > DM_UDEV_DISABLE_OTHER_RULES_FLAG for multipath devices, but
> > using .DM_SUSPENDED here makes the intention more obvious.
> > 
> > Signed-off-by: Martin Wilck <mwilck@suse.com>
> > ---
> >  multipath/11-dm-mpath.rules.in | 13 ++++++++-----
> >  1 file changed, 8 insertions(+), 5 deletions(-)
> > 
> > diff --git a/multipath/11-dm-mpath.rules.in b/multipath/11-dm-
> > mpath.rules.in
> > index 8f22954..c4b5685 100644
> > --- a/multipath/11-dm-mpath.rules.in
> > +++ b/multipath/11-dm-mpath.rules.in
> > @@ -4,8 +4,11 @@ ENV{DM_UUID}!="mpath-?*", GOTO="mpath_end"
> >  
> >  IMPORT{db}="MPATH_DEVICE_READY"
> >  
> > +# device-mapper rules v2 compatibility
> > +ENV{.DM_SUSPENDED}!="?*", ENV{.DM_SUSPENDED}="$env{DM_SUSPENDED}"
> > +
> >  # Coldplug event while device is suspended (e.g. during a reload)
> > -ACTION=="add", ENV{DM_ACTIVATION}=="1", ENV{DM_SUSPENDED}=="1", \
> > +ACTION=="add", ENV{DM_ACTIVATION}=="1", ENV{.DM_SUSPENDED}=="1", \
> >  	PROGRAM="/bin/logger -t 11-dm-mpath.rules -p
> > daemon.warning \"Coldplug event for suspended device\"", \
> >  	ENV{DM_COLDPLUG_SUSPENDED}="1", GOTO="scan_import"
> >  
> > @@ -17,7 +20,7 @@ ENV{DM_UDEV_RULES_VSN}=="3",
> > ENV{.DM_SUSPENDED}!="1", GOTO="scan_import"
> >  # from DB in 10-dm.rules. If the device is not suspended, clear
> > the flag.
> >  # This is safe for multipath where
> > DM_UDEV_DISABLE_OTHER_RULES_FLAG is basically
> >  # equivalent to DM_SUSPENDED==1 || DISK_RO==1
> > -ENV{DM_UDEV_RULES_VSN}!="3", ENV{DM_SUSPENDED}!="1",
> > ENV{DISK_RO}!="1", \
> > +ENV{DM_UDEV_RULES_VSN}!="3", ENV{.DM_SUSPENDED}!="1",
> > ENV{DISK_RO}!="1", \
> >  	ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="",
> > GOTO="scan_import"
> >  LABEL="mpath_coldplug_end"
> >  
> > @@ -68,7 +71,7 @@ LABEL="mpath_action"
> >  # Activation might have been partially skipped. Activate the
> > device now,
> >  # i.e. disable the MPATH_UNCHANGED logic and set DM_ACTIVATION=1.
> >  IMPORT{db}="DM_COLDPLUG_SUSPENDED"
> > -ENV{DM_COLDPLUG_SUSPENDED}=="1", ENV{DM_SUSPENDED}!="1", \
> > +ENV{DM_COLDPLUG_SUSPENDED}=="1", ENV{.DM_SUSPENDED}!="1", \
> 
> When I reviewed patch 0001, I wondered if it was o.k. to not force
> DM_ACTIVATION to "1" if a device had previously been suspended when
> MPATH_DEVICE_READY switched to "1". I thought it might it might be
> o.k.
> because there would be another event when the device resumed, which
> would have DM_ACTIVATION set to "1". But if that's the case then we
> shouldn't need to worry about a device being suspended when a
> coldplug
> happens. We will get an event when the device resumes, and there's
> not
> much we can do until it gets resumed at any rate. So either patch
> 0001
> is wrong or we can remove this DM_COLDPLUG_SUSPENDED forced
> activation
> code or I'm missing some important difference between the two.

I tried to explain this in 02bbc17 ("11-dm-mpath.rules: handle reloads
during coldplug events"). But I just needed to recall the logic again
myself, it's subtle.

We will indeed get another change event when the device is resumed.
But because of our MPATH_UNCHANGED logic, we may see that the
the properties of the device haven't changed, and unset DM_ACTIVATION.
Thus follow-up rules won't get executed, neither in coldplug event
itself (device suspended) nor in the follow-up change event (device
unchanged). I hope this makes sense.

The problem that you pointed out for 0001 for this series is similar,
but it handles a different case where the device switched from 0 to one
usable path while the device was suspended. Patch 0001 of this series
is really broken, and it breaks a patch that I'd just created a month
ago, which is truly embarrassing. udev rules are confusing :-/

Regards
Martin


  reply	other threads:[~2024-04-04 15:17 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-24 21:12 [PATCH 00/11] multipath udev rules changes for dm rules V3 Martin Wilck
2024-03-24 21:12 ` [PATCH 01/11] 11-dm-mpath.rules: don't set MPATH_DEVICE_READY=0 for suspended devices Martin Wilck
2024-03-26 21:52   ` Benjamin Marzinski
2024-04-04 14:06     ` Martin Wilck
2024-03-24 21:12 ` [PATCH 02/11] 11-dm-mpath.rules: don't import DM_NOSCAN from udev db Martin Wilck
2024-03-26 22:03   ` Benjamin Marzinski
2024-03-27  0:14     ` Benjamin Marzinski
2024-04-04 13:49       ` Martin Wilck
2024-03-24 21:12 ` [PATCH 03/11] 11-dm-mpath.rules: don't import ID_FS_VERSION " Martin Wilck
2024-03-26 22:04   ` Benjamin Marzinski
2024-03-24 21:12 ` [PATCH 04/11] 11-dm-mpath.rules: adapt MPATH_DEVICE_READY=0 logic to 10-dm.rules update Martin Wilck
2024-03-26 22:17   ` Benjamin Marzinski
2024-04-04 13:45     ` Martin Wilck
2024-03-24 21:12 ` [PATCH 05/11] 11-dm-mpath.rules: adapt coldplug event handling ro " Martin Wilck
2024-03-26 22:44   ` Benjamin Marzinski
2024-03-24 21:12 ` [PATCH 06/11] 11-dm-mpath.rules: don't import properties with new 13-dm-disk.rules Martin Wilck
2024-03-26 22:58   ` Benjamin Marzinski
2024-03-24 21:12 ` [PATCH 07/11] 11-dm-mpath.rules: replace DM_SUSPENDED by .DM_SUSPENDED Martin Wilck
2024-03-26 23:36   ` Benjamin Marzinski
2024-04-04 15:17     ` Martin Wilck [this message]
2024-03-24 21:12 ` [PATCH 08/11] 11-dm-mpath.rules: replace DM_NOSCAN by .DM_NOSCAN Martin Wilck
2024-03-27  0:03   ` Benjamin Marzinski
2024-03-24 21:12 ` [PATCH 09/11] 11-dm-mpath.rules: simplify PATH_FAILED case Martin Wilck
2024-03-27  0:04   ` Benjamin Marzinski
2024-03-24 21:13 ` [PATCH 10/11] 11-dm-mpath.rules: make label names more intuitive Martin Wilck
2024-03-27  0:06   ` Benjamin Marzinski
2024-03-24 21:13 ` [PATCH 11/11] kpartx.rules: ignore DM_SUSPENDED Martin Wilck
2024-03-27  0:07   ` Benjamin Marzinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6c35748b10daff12205b778c0d8f55565410aa7c.camel@suse.com \
    --to=martin.wilck@suse.com \
    --cc=bmarzins@redhat.com \
    --cc=christophe.varoqui@opensvc.com \
    --cc=dm-devel@lists.linux.dev \
    --cc=prajnoha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).