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 <[email protected]>
>> ---
>> 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 [email protected]
> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html