Re: [PATCH] udev: Add udev rules to create by-partuuid for md device

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

 



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



[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux