From ff0636635a0d20562d86ab5f4450bb8066dbd7dc Mon Sep 17 00:00:00 2001 From: Dave Young Date: Mon, 10 Sep 2012 16:10:46 +0800 Subject: [PATCH] move get_persistent_dev to dracut-functions.sh 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 --- dracut-functions.sh | 15 +++++++++++++++ modules.d/99base/module-setup.sh | 13 ------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/dracut-functions.sh b/dracut-functions.sh index 2399a1da..e6200c26 100755 --- a/dracut-functions.sh +++ b/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 +} + # get_fs_env # Get and set the ID_FS_TYPE and ID_FS_UUID variable from udev for a device. # Example: diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh index 8a181007..115b5446 100755 --- a/modules.d/99base/module-setup.sh +++ b/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 \