On 4/14/19 6:02 PM, NeilBrown wrote: > On Sun, Apr 14 2019, Jes Sorensen wrote: > >> 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? > > Correct! Great, applied! Thanks, Jes