On 3/25/19 7:24 PM, NeilBrown wrote: > On Mon, Mar 25 2019, Liwei Song wrote: > >> On 03/25/2019 07:43 AM, NeilBrown wrote: >>> On Tue, Mar 19 2019, Liwei Song wrote: >>> >>>> This rules will create link under /dev/disk/by-partuuid/ for >>>> MD devices partition, with which will support specify >>>> root=PARTUUID=XXX to boot rootfs. >>>> >>>> Signed-off-by: Liwei Song <liwei.song@xxxxxxxxxxxxx> >>>> --- >>>> udev-md-raid-arrays.rules | 1 + >>>> 1 file changed, 1 insertion(+) >>>> >>>> diff --git a/udev-md-raid-arrays.rules b/udev-md-raid-arrays.rules >>>> index c95ec7b1e4a9..5b99d5873ade 100644 >>>> --- a/udev-md-raid-arrays.rules >>>> +++ b/udev-md-raid-arrays.rules >>>> @@ -30,6 +30,7 @@ IMPORT{builtin}="blkid" >>>> OPTIONS+="link_priority=100" >>>> OPTIONS+="watch" >>>> ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" >>>> +ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_PART_ENTRY_UUID}=="?*", SYMLINK+="disk/by-partuuid/$env{ID_PART_ENTRY_UUID}" >>>> ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" >>>> >>>> ENV{MD_LEVEL}=="raid[1-9]*", ENV{SYSTEMD_WANTS}+="mdmonitor.service" >>>> -- >>>> 2.7.4 >>> >>> This doesn't make any sense to me. >>> Presumably you want the by-partuuid link to point to a partition in the >>> array? >> >> Yes, That is what I want. >> >>> But this code will create a link pointing to the array. >> >> Because there is no ID_PART_ENTRY_UUID for the array, only partition in the array have >> such attribute,So in my case it will only create by-partuuid for a partition. >> >> For example, there is an md126 raid array, >> >> Disk /dev/md126: 44.2 GiB, 47501541376 bytes, 92776448 sectors >> Units: sectors of 1 * 512 = 512 bytes >> Sector size (logical/physical): 512 bytes / 512 bytes >> I/O size (minimum/optimal): 512 bytes / 512 bytes >> Disklabel type: gpt >> Disk identifier: 622CA1DE-A938-4704-98B0-5EAB0D3A7AAC >> >> Device Start End Sectors Size Type >> /dev/md126p1 2048 2000895 1998848 976M EFI System >> /dev/md126p2 2000896 88138671 86137776 41.1G Linux filesystem >> /dev/md126p3 88138672 92776414 4637743 2.2G Linux swap >> >> >> >> # udevadm info /dev/md126 |grep ID_PART_ENTRY_UUID >> this will get nothing since array do not have ID_PART_ENTRY_UUID. >> >> # udevadm info /dev/md126p1 |grep ID_PART_ENTRY_UUID >> E: ID_PART_ENTRY_UUID=018496b3-84e1-4c9f-864e-81650b21402f >> # udevadm info /dev/md126p2 |grep ID_PART_ENTRY_UUID >> E: ID_PART_ENTRY_UUID=2c1df1c5-41c8-42b4-a874-95dbf07820d5 >> # udevadm info /dev/md126p3 |grep ID_PART_ENTRY_UUID >> E: ID_PART_ENTRY_UUID=bccde74f-efee-4b99-860c-998493d549a9 >> >> it will create by-partuuid under /dev/disk/ for the partition in array >> >> # ls /dev/disk/by-partuuid/ -all >> lrwxrwxrwx 1 root root 13 Mar 22 03:33 018496b3-84e1-4c9f-864e-81650b21402f -> ../../md126p1 >> lrwxrwxrwx 1 root root 13 Mar 22 03:33 2c1df1c5-41c8-42b4-a874-95dbf07820d5 -> ../../md126p2 >> lrwxrwxrwx 1 root root 13 Mar 22 03:33 bccde74f-efee-4b99-860c-998493d549a9 -> ../../md126p3 >> >> if my rootfs store in /dev/md126p2, then I can specify root=PARTUUID=2c1df1c5-41c8-42b4-a874-95dbf07820d5 >> through command line to boot it. >> > > Thanks. > I was thinking that udev-md-raid-arrays.rule only dealt with the whole > array and that other files like 60-persistent-storage.rules dealt > with parititons, but I was wrong. > 60-persistent-storage.rules has > KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|scm*|pmem*|nb> > > so it doesn't touch md array. And udev-md-raid-arrays.rules already has > > ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" > ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" > ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" > ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" > > so it does handle partitions of md array. > > So yes, your patch does make sense. > > Reviewed-by: NeilBrown <neilb@xxxxxxxx> Trying to catch up here, so the conclusion was the original patch was good, correct? Thanks, Jes