]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
Add a check file for multipath.
authorPeter Jones <pjones@redhat.com>
Fri, 22 Jan 2010 15:56:40 +0000 (10:56 -0500)
committerHarald Hoyer <harald@redhat.com>
Wed, 27 Jan 2010 15:10:43 +0000 (16:10 +0100)
If multipath isn't installed, don't use it.  If we're in hostonly mode,
only install the multipath module if it's used for / .  Otherwise, if
the user was dumb enough to install it, they get it during bootup.

modules.d/90multipath/check [new file with mode: 0755]

diff --git a/modules.d/90multipath/check b/modules.d/90multipath/check
new file mode 100755 (executable)
index 0000000..2723b3d
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# if there's no multipath binary, no go.
+which multipath >/dev/null 2>&1 || exit 1
+
+[[ $1 = -d ]] && exit 0
+
+. $dracutfunctions
+[[ $debug ]] && set -x
+
+is_mpath() {
+    [ -e /sys/dev/block/$1/dm/uuid ] || return 1
+    [[ $(cat /sys/dev/block/$1/dm/uuid) =~ ^mpath- ]] && return 0
+    return 1
+}
+
+# If we're in hostonly mode, do mpath if we appear to be using it for /
+if [[ $1 = -h ]]; then
+    rootdev=$(find_root_block_device)
+    if [[ $rootdev ]]; then
+        check_block_and_slaves is_mpath "$rootdev" && exit 0
+    fi
+    exit 1
+fi
+
+# the user installed it, they get it...
+exit 0