Linux-LVM Archive mirror
 help / color / mirror / Atom feed
From: Martin Wilck <mwilck@suse.com>
To: Peter Rajnoha <prajnoha@redhat.com>,
	Zdenek Kabelac <zkabelac@redhat.com>,
	 Benjamin Marzinski <bmarzins@redhat.com>,
	David Teigland <teigland@redhat.com>
Cc: linux-lvm@lists.linux.dev, dm-devel@lists.linux.dev,
	Hannes Reinecke <hare@suse.de>
Subject: Re: [RFC PATCH 7/7] 10-dm.rules: bump DM_UDEV_RULES_VSN to 3
Date: Tue, 05 Mar 2024 10:04:35 +0100	[thread overview]
Message-ID: <bce0b7c62e1f65286fd433ce4da864b7d5b4825f.camel@suse.com> (raw)
In-Reply-To: <a23a5d51-32fd-4e6e-a79b-901d37734d5e@redhat.com>

On Tue, 2024-03-05 at 09:26 +0100, Peter Rajnoha wrote:
> On 3/4/24 17:46, Martin Wilck wrote:
> > On Mon, 2024-03-04 at 12:09 +0100, Peter Rajnoha wrote:
> > > One thing that comes to my mind here is cooperation between the
> > > rules
> > > from initrd/initramfs and rootfs - the initrd/initramfs can have
> > > different versions of the rules installed.
> > 
> > Yes, that's a source of pain. Are there current initramfs tools
> > that
> > user DM_UDEV_RULES_VSN!=2? I think "2" should be the standard
> > today,
> > given that it has existed since 2009. dracut just installs the
> > upstream
> > rules it finds, at least for dm, AFAICT.
> > 
> > I've reviewed other rule sets I'm aware of, and the only one in
> > which I
> > needed to check DM_UDEV_RULES_VSN was 11-dm-mpath.rules. I didn't
> > have
> > a close look at the rule sets that dracut ships yet, let alone
> > other
> > tools for initramfs maintenance.
> > 
> > Regardless, my patch set changes the availability and semantics of
> > the 
> > device-mapper udev properties, and thus we should bump the version,
> > no?
> 
> Sure, that is expected if we do such changes to rules.
> 
> I just meant to be cautious about a situation where we have initramfs
> running a different version of rules, then keeping the udev database
> over the pivot-to-rootfs (which happens with dracut, not sure about
> others). Then, on coldplug running from rootfs, refreshing the state
> with the other version of rules.
> 
> Important here is that the rules running from rootfs do not get
> mislead
> with the state that was taken over from the initrams.

For udev rules, that can't happen. If any udev rules were running after
switching root, they'd be running in the context of a new uevent, 
which means that the device-mapper rules from the root FS would already
be in place. We don't import DM_SUSPENDED from the db, so this property
wouldn't survive switching root, even if it had been set pre-pivot.

Other (non-udev) system components might be confused if they read
properties directly from udev data base using
udev_device_get_property_value(). But we can't do anything about this.
For multipathd, which is one of the prime suspects in this area, I can
confirm that it doesn't use libudev to access any device–mapper
internal properties.

In general, I can't conceive any danger arising from an older dm
ruleset (e.g. in the initramfs) that still sets DM_SUSPENDED or
DM_NOSCAN. In the worst case, some rule would be triggered that's also
triggered with today's rule set. That's not optimal, but it can hardly
be fatal.

FTR, summarizing the effect of my patch set for follow-up rules:

- it slightly changes the meaning of DM_UDEV_DISABLE_OTHER_RULES FLAG,
- it renames DM_SUSPENDED to .DM_SUSPENDED,
- it renames DM_NOSCAN to .DM_NOSCAN.

Technically, the renames just have the effect that these variables
aren't saved in the udev db. "Psychologically", the intention is that
people realize they are meant to be "dm internal", knowing that unless
we add more rules to unset these properties, we can't prevent later
rules from reading and using them.

With this patch set, later rules that depend on DM_SUSPENDED or
DM_NOSCAN won't trigger any more. The only rule outside of dm and
multipath that I am aware of is the broken rule in 99-systemd.rules.

Regards
Martin




      reply	other threads:[~2024-03-05  9:04 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-01 22:40 [RFC PATCH 0/7] device mapper udev rules rework Martin Wilck
2024-03-01 22:40 ` [RFC PATCH 1/7] 13-dm-disk.rules: import ID_FS_TYPE Martin Wilck
2024-03-04 10:37   ` Peter Rajnoha
2024-03-04 15:17     ` Martin Wilck
2024-03-04 15:44       ` Peter Rajnoha
2024-03-01 22:40 ` [RFC PATCH 2/7] 10-dm.rules: don't deactivate devices for DISK_RO=1 Martin Wilck
2024-03-04 10:48   ` Peter Rajnoha
2024-03-04 11:19     ` Peter Rajnoha
2024-03-04 11:27       ` Peter Rajnoha
2024-03-04 15:21         ` Martin Wilck
2024-03-04 16:09     ` Martin Wilck
2024-03-05  8:09       ` Peter Rajnoha
2024-03-01 22:40 ` [RFC PATCH 3/7] 10-dm-rules: don't restore DM_UDEV_DISABLE_OTHER_RULES_FLAG from db Martin Wilck
2024-03-04 10:49   ` Peter Rajnoha
2024-03-01 22:40 ` [RFC PATCH 4/7] 11-dm-lvm.rules: " Martin Wilck
2024-03-04 10:51   ` Peter Rajnoha
2024-03-01 22:40 ` [RFC PATCH 5/7] dm udev rules: don't export and save DM_SUSPENDED Martin Wilck
2024-03-04 11:00   ` Peter Rajnoha
2024-03-04 16:21     ` Martin Wilck
2024-03-05  8:19       ` Peter Rajnoha
2024-03-05  8:47         ` Martin Wilck
2024-03-05  9:10           ` Peter Rajnoha
2024-03-05  9:28             ` Martin Wilck
2024-03-01 22:40 ` [RFC PATCH 6/7] dm udev rules: don't export and save DM_NOSCAN Martin Wilck
2024-03-04 11:03   ` Peter Rajnoha
2024-03-01 22:40 ` [RFC PATCH 7/7] 10-dm.rules: bump DM_UDEV_RULES_VSN to 3 Martin Wilck
2024-03-04 11:09   ` Peter Rajnoha
2024-03-04 16:46     ` Martin Wilck
2024-03-05  8:26       ` Peter Rajnoha
2024-03-05  9:04         ` Martin Wilck [this message]

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=bce0b7c62e1f65286fd433ce4da864b7d5b4825f.camel@suse.com \
    --to=mwilck@suse.com \
    --cc=bmarzins@redhat.com \
    --cc=dm-devel@lists.linux.dev \
    --cc=hare@suse.de \
    --cc=linux-lvm@lists.linux.dev \
    --cc=prajnoha@redhat.com \
    --cc=teigland@redhat.com \
    --cc=zkabelac@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).