From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vivek Goyal Subject: Re: [PATCH] move get_persistent_dev to dracut-functions.sh Date: Mon, 10 Sep 2012 10:40:31 -0400 Message-ID: <20120910144031.GC639@redhat.com> References: <20120910081046.GA15522@dhcp-16-143.nay.redhat.com> Mime-Version: 1.0 Return-path: Content-Disposition: inline In-Reply-To: <20120910081046.GA15522-je1gSBvt1Td3da3rpXeqgR/sF2h8X+2i0E9HWUfgJXw@public.gmane.org> Sender: initramfs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Dave Young Cc: initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, chaowang-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org 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 > --- > 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. Thanks Vivek > # get_fs_env > # 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 \