All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2 v2] ismounted fix
@ 2012-09-17 10:01 Dave Young
       [not found] ` <20120917100103.GA18640-4/PLUo9XfK+sDdueE5tM26fLeoKvNuZc@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Dave Young @ 2012-09-17 10:01 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA,
	vgoyal-H+wXaHxf7aLQT0dZR+AlfA, chaowang-H+wXaHxf7aLQT0dZR+AlfA,
	kzak-H+wXaHxf7aLQT0dZR+AlfA


ismounted handles both find-by-dev and find-by-mnt, but there's two issues:
1. for find-by-dev, it use readlink to get the canonical dev name, but
   lvm is different with other devices, the canonical name for lvm devices
   are symlinks like /dev/mapper/vg-lv00
2. for nfs mounting, just use [ -b $dev ] is not enough, it need being handled
   seperately.

Per Karel Zak's suggestion, findmnt util is suitable for this purpose, it
handles these cases well, so just use findmnt instead of implement all the
logic by ourselves. Thanks, Karel.

Signed-off-by: Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
 modules.d/99base/dracut-lib.sh   |   19 +------------------
 modules.d/99base/module-setup.sh |    2 +-
 2 files changed, 2 insertions(+), 19 deletions(-)

--- dracut.orig/modules.d/99base/dracut-lib.sh
+++ dracut/modules.d/99base/dracut-lib.sh
@@ -452,27 +452,10 @@ udevproperty() {
     fi
 }
 
-find_mount() {
-    local dev mnt etc wanted_dev
-    wanted_dev="$(readlink -e -q $1)"
-    while read dev mnt etc; do
-        [ "$dev" = "$wanted_dev" ] && echo "$dev" && return 0
-    done < /proc/mounts
-    return 1
-}
-
 # usage: ismounted <mountpoint>
 # usage: ismounted /dev/<device>
 ismounted() {
-    if [ -b "$1" ]; then
-        find_mount "$1" > /dev/null && return 0
-        return 1
-    fi
-
-    while read a m a; do
-        [ "$m" = "$1" ] && return 0
-    done < /proc/mounts
-    return 1
+    findmnt "$1" > /dev/null
 }
 
 wait_for_if_up() {
--- dracut.orig/modules.d/99base/module-setup.sh
+++ dracut/modules.d/99base/module-setup.sh
@@ -13,7 +13,7 @@ depends() {
 
 install() {
     local _d
-    dracut_install mount mknod mkdir pidof sleep chroot \
+    dracut_install mount mknod mkdir pidof sleep chroot findmnt\
         sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid
     inst $(command -v modprobe) /sbin/modprobe
 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/2 v2] ismounted fix
       [not found] ` <20120917100103.GA18640-4/PLUo9XfK+sDdueE5tM26fLeoKvNuZc@public.gmane.org>
@ 2012-09-19 13:59   ` Vivek Goyal
       [not found]     ` <20120919135906.GE31860-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Vivek Goyal @ 2012-09-19 13:59 UTC (permalink / raw)
  To: Dave Young
  Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA,
	chaowang-H+wXaHxf7aLQT0dZR+AlfA, kzak-H+wXaHxf7aLQT0dZR+AlfA

On Mon, Sep 17, 2012 at 06:01:03PM +0800, Dave Young wrote:
> 
> ismounted handles both find-by-dev and find-by-mnt, but there's two issues:
> 1. for find-by-dev, it use readlink to get the canonical dev name, but
>    lvm is different with other devices, the canonical name for lvm devices
>    are symlinks like /dev/mapper/vg-lv00
> 2. for nfs mounting, just use [ -b $dev ] is not enough, it need being handled
>    seperately.
> 
> Per Karel Zak's suggestion, findmnt util is suitable for this purpose, it
> handles these cases well, so just use findmnt instead of implement all the
> logic by ourselves. Thanks, Karel.

This patch looks reasonable to me. Harald, are you fine with it?

Vivek
> 
> Signed-off-by: Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> ---
>  modules.d/99base/dracut-lib.sh   |   19 +------------------
>  modules.d/99base/module-setup.sh |    2 +-
>  2 files changed, 2 insertions(+), 19 deletions(-)
> 
> --- dracut.orig/modules.d/99base/dracut-lib.sh
> +++ dracut/modules.d/99base/dracut-lib.sh
> @@ -452,27 +452,10 @@ udevproperty() {
>      fi
>  }
>  
> -find_mount() {
> -    local dev mnt etc wanted_dev
> -    wanted_dev="$(readlink -e -q $1)"
> -    while read dev mnt etc; do
> -        [ "$dev" = "$wanted_dev" ] && echo "$dev" && return 0
> -    done < /proc/mounts
> -    return 1
> -}
> -
>  # usage: ismounted <mountpoint>
>  # usage: ismounted /dev/<device>
>  ismounted() {
> -    if [ -b "$1" ]; then
> -        find_mount "$1" > /dev/null && return 0
> -        return 1
> -    fi
> -
> -    while read a m a; do
> -        [ "$m" = "$1" ] && return 0
> -    done < /proc/mounts
> -    return 1
> +    findmnt "$1" > /dev/null
>  }
>  
>  wait_for_if_up() {
> --- dracut.orig/modules.d/99base/module-setup.sh
> +++ dracut/modules.d/99base/module-setup.sh
> @@ -13,7 +13,7 @@ depends() {
>  
>  install() {
>      local _d
> -    dracut_install mount mknod mkdir pidof sleep chroot \
> +    dracut_install mount mknod mkdir pidof sleep chroot findmnt\
>          sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid
>      inst $(command -v modprobe) /sbin/modprobe
>  

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/2 v2] ismounted fix
       [not found]     ` <20120919135906.GE31860-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2012-09-19 16:00       ` Harald Hoyer
  0 siblings, 0 replies; 3+ messages in thread
From: Harald Hoyer @ 2012-09-19 16:00 UTC (permalink / raw)
  To: Vivek Goyal
  Cc: Dave Young, initramfs-u79uwXL29TY76Z2rM5mHXA,
	chaowang-H+wXaHxf7aLQT0dZR+AlfA, kzak-H+wXaHxf7aLQT0dZR+AlfA

Am 19.09.2012 15:59, schrieb Vivek Goyal:
> On Mon, Sep 17, 2012 at 06:01:03PM +0800, Dave Young wrote:
>>
>> ismounted handles both find-by-dev and find-by-mnt, but there's two issues:
>> 1. for find-by-dev, it use readlink to get the canonical dev name, but
>>    lvm is different with other devices, the canonical name for lvm devices
>>    are symlinks like /dev/mapper/vg-lv00
>> 2. for nfs mounting, just use [ -b $dev ] is not enough, it need being handled
>>    seperately.
>>
>> Per Karel Zak's suggestion, findmnt util is suitable for this purpose, it
>> handles these cases well, so just use findmnt instead of implement all the
>> logic by ourselves. Thanks, Karel.
> 
> This patch looks reasonable to me. Harald, are you fine with it?
> 
> Vivek

Yes. Looks good!

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-09-19 16:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-17 10:01 [PATCH 1/2 v2] ismounted fix Dave Young
     [not found] ` <20120917100103.GA18640-4/PLUo9XfK+sDdueE5tM26fLeoKvNuZc@public.gmane.org>
2012-09-19 13:59   ` Vivek Goyal
     [not found]     ` <20120919135906.GE31860-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-09-19 16:00       ` Harald Hoyer

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.