On Tue, 17 Oct 2023 13:48:48 +0800 Xiao Ni <xni@xxxxxxxxxx> wrote: > Superblocks can be disabled behind AUTO in mdadm.conf. For this situation udev > rule still can handle the member disk. But it's not expected. Change the udev > rule to check the conf file before handling member disk. > Hi Xiao, I'm reading manual and for me it is something that should gone. Why we need this? Kernel is responsible for bringing up partitions, not udev. https://linux.die.net/man/5/mdadm.conf "From 2.6.28 all md array devices are partitionable, hence this option is not needed." I need from you to deeply understand this feature, why it was needed, what it gives now to help community take a decision what is the right thing to do. I would prefer to ask mdadm to provide such option from config. You cannot simply assume that /etc/mdadm.conf is the right conf location. To not make it over complicated and bug friendly we should get this by mdadm. mdadm has conf file location determination so that should guarantee it is always the same value. Thanks, Mariusz > Signed-off-by: Xiao Ni <xni@xxxxxxxxxx> > --- > udev-md-raid-assembly.rules | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/udev-md-raid-assembly.rules b/udev-md-raid-assembly.rules > index d4a7f0a5a049..a0f9494f4461 100644 > --- a/udev-md-raid-assembly.rules > +++ b/udev-md-raid-assembly.rules > @@ -16,6 +16,10 @@ ENV{SYSTEMD_READY}=="0", GOTO="md_inc_end" > # Then the change event happens. > # When adding md/dm devices, ID_FS_TYPE can only be linux_raid_member > # after change event happens. > +ENV{ID_FS_TYPE}=="linux_raid_member", \ > + PROGRAM="/usr/bin/egrep -c ^AUTO.*+1\.x.*-1\.x.*$ /etc/mdadm.conf", > GOTO="md_inc" +ENV{ID_FS_TYPE}=="linux_raid_member", \ > + PROGRAM="/usr/bin/egrep -c ^AUTO.*-1\.x.*$ /etc/mdadm.conf", > GOTO="md_inc_end" ENV{ID_FS_TYPE}=="linux_raid_member", GOTO="md_inc" > > # "noiswmd" on kernel command line stops mdadm from handling > @@ -26,9 +30,20 @@ IMPORT{cmdline}="noiswmd" > IMPORT{cmdline}="nodmraid" > > ENV{nodmraid}=="?*", GOTO="md_inc_end" > + > +ENV{ID_FS_TYPE}=="ddf_raid_member", \ > + PROGRAM="/usr/bin/egrep -c ^AUTO.*+ddf.*-ddf.*$ /etc/mdadm.conf", > GOTO="md_inc" +ENV{ID_FS_TYPE}=="ddf_raid_member", \ > + PROGRAM="/usr/bin/egrep -c ^AUTO.*-ddf.*$ /etc/mdadm.conf", > GOTO="md_inc_end" ENV{ID_FS_TYPE}=="ddf_raid_member", GOTO="md_inc" > + > ENV{noiswmd}=="?*", GOTO="md_inc_end" > +ENV{ID_FS_TYPE}=="isw_raid_member", \ > + PROGRAM="/usr/bin/egrep -c ^AUTO.*+imsm.*-imsm.*$ /etc/mdadm.conf", > GOTO="md_inc" +ENV{ID_FS_TYPE}=="isw_raid_member", \ > + PROGRAM="/usr/bin/egrep -c ^AUTO.*-imsm.*$ /etc/mdadm.conf", > GOTO="md_inc_end" ENV{ID_FS_TYPE}=="isw_raid_member", ACTION!="change", > GOTO="md_inc" + > GOTO="md_inc_end" For sure IMSM does not support it. Thanks, Mariusz