All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Vivek Goyal <vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	chaowang-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH] move get_persistent_dev to dracut-functions.sh
Date: Wed, 12 Sep 2012 14:11:41 +0800	[thread overview]
Message-ID: <5050279D.8080402@redhat.com> (raw)
In-Reply-To: <20120911133300.GB11743-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

On 09/11/2012 09:33 PM, Vivek Goyal wrote:

> On Tue, Sep 11, 2012 at 09:31:40AM +0800, Dave Young wrote:
>> 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-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
>>>> ---
>>>>  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.
> 
> dracut function get_maj_min() uses "stat" with -L option which will
> automatically following symlinks if need be. Calling into udevadm
> for every possible device (/dev/disk/by-id/*) seems overkill to me. Anyway,
> harald has already committed this patch. So we will simplify it some
> other time.


Hi, thanks for the explaination.

Actually udevadm info is not so heavy, see below strace compare:

$ strace udevadm info --query=name --name=/dev/sda 2>a.txt
$ strace stat -L -c '$((0x%t)):$((0x%T))' /dev/sda 2>b.txt
$ wc a.txt
  88  494 5997 a.txt
$ wc b.txt
  61  347 4041 b.txt

Since get_maj_min works well with symlinks, converting to use majmin is
also fine to me.

> 
> One advantage of converting to kernel names is that looking into 
> /proc/mounts will give us the mount point. I was converting device
> name into maj:min and looking into /proc/self/mountinfo to determine
> the mount point.
> 
> So converting to kernel name does seem to have this little advantage
> of being able to find device name and associated mountpoint in
> /proc/mounts.
> 
> Thanks
> Vivek



-- 
Thanks
Dave

      parent reply	other threads:[~2012-09-12  6:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-10  8:10 [PATCH] move get_persistent_dev to dracut-functions.sh Dave Young
     [not found] ` <20120910081046.GA15522-je1gSBvt1Td3da3rpXeqgR/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2012-09-10 14:40   ` Vivek Goyal
     [not found]     ` <20120910144031.GC639-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-09-11  1:31       ` Dave Young
     [not found]         ` <504E947C.7060205-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-09-11 13:33           ` Vivek Goyal
     [not found]             ` <20120911133300.GB11743-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-09-12  6:11               ` Dave Young [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5050279D.8080402@redhat.com \
    --to=dyoung-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=chaowang-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.