Re: [RFC PATCH 7/7] 10-dm.rules: bump DM_UDEV_RULES_VSN to 3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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








[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux