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