Re: [PATCH] move get_persistent_dev to dracut-functions.sh

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

 



On 09/10/2012 10:40 PM, Vivek Goyal wrote:

> On Mon, Sep 10, 2012 at 04:10:46PM +0800, Dave Young wrote:
>> kdump module also need to convert dev name to udev symlinks.
>> So better to move function get_persistent_dev() to dracut-functions.sh
>>
>> Also in this patch improvement and fix the original function:
>> a) use udevadm info --query=name to get the kernel name.
>>    This will fix the issue caused by passing symbolic link of a device.
>> b) fix a bug to compare $_tmp instead of $i with $_dev. Really sorry,
>>    should have tested more carefully.
>>
>> Signed-off-by: Dave Young <dyoung@xxxxxxxxxx>
>> ---
>>  dracut-functions.sh              |   14 ++++++++++++++
>>  modules.d/99base/module-setup.sh |   13 -------------
>>  2 files changed, 14 insertions(+), 13 deletions(-)
>>
>> --- dracut.orig/dracut-functions.sh
>> +++ dracut/dracut-functions.sh
>> @@ -239,6 +239,21 @@ else
>>      }
>>  fi
>>  
>> +get_persistent_dev() {
>> +    local i _tmp _dev
>> +
>> +    _dev=$(udevadm info --query=name --name="$1" 2>/dev/null)
>> +    [ -z "$_dev" ] && return
>> +
>> +    for i in /dev/disk/by-id/*; do
>> +        _tmp=$(udevadm info --query=name --name="$i" 2>/dev/null)
>> +        if [ "$_tmp" = "$_dev" ]; then
>> +            echo $i
>> +            return
>> +        fi
>> +    done
>> +}
>> +
> 
> Can't we just compare the maj:min number of device and come up with udev
> name? I think that would be simpler and we will not have to call into
> udevadm.


Hi,

/dev/disk/by-id/* are symlinks, $1 could be soft link as well, using
udevadm will be simpler because we do not need follow symlinks and
handle the string prefix.

get_fs_env() uses udevadm to query the env, I think we do not need worry
about this.


> 
> Thanks
> Vivek
> 
>>  # get_fs_env <device>
>>  # Get and set the ID_FS_TYPE and ID_FS_UUID variable from udev for a device.
>>  # Example:
>> --- dracut.orig/modules.d/99base/module-setup.sh
>> +++ dracut/modules.d/99base/module-setup.sh
>> @@ -11,19 +11,6 @@ depends() {
>>      return 0
>>  }
>>  
>> -get_persistent_dev() {
>> -    local i _tmp
>> -    local _dev=${1##*/}
>> -
>> -    for i in /dev/disk/by-id/*; do
>> -        _tmp=$(readlink $i)
>> -        if [ "$i" = "$_dev" ]; then
>> -            echo $i
>> -            return
>> -        fi
>> -    done
>> -}
>> -
>>  install() {
>>      local _d
>>      dracut_install mount mknod mkdir pidof sleep chroot \
> --
> To unsubscribe from this list: send the line "unsubscribe initramfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Thanks
Dave
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux