]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
ismounted fix
authorDave Young <dyoung@redhat.com>
Mon, 17 Sep 2012 10:01:03 +0000 (18:01 +0800)
committerHarald Hoyer <harald@redhat.com>
Wed, 19 Sep 2012 16:37:07 +0000 (18:37 +0200)
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@redhat.com>
modules.d/99base/dracut-lib.sh
modules.d/99base/module-setup.sh

index fbe6f914aa09119b7e0b33b3e6c79fec92cca6a4..6fd4e0affaee22bca41c17aebbe49f92952b2244 100755 (executable)
@@ -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() {
index 115b544636181f9ee570a18d82d5f8277d662739..6cc4ad2eff9b8e4a6934bb1b00e93f5bf9ca92bd 100755 (executable)
@@ -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