Blame 0015-dmraid-mdraid-improve-hostonly-recognition.patch

Harald Hoyer fe48c9
From 281327f72cfc4c9ef6308039c7e1da82f79b139f Mon Sep 17 00:00:00 2001
Harald Hoyer fe48c9
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer fe48c9
Date: Mon, 26 Aug 2013 14:04:56 +0200
Harald Hoyer fe48c9
Subject: [PATCH] dmraid/mdraid: improve hostonly recognition
Harald Hoyer fe48c9
Harald Hoyer fe48c9
Factor out get_devpath_block(), which also fixes a dmraid hostonly bug.
Harald Hoyer fe48c9
Harald Hoyer fe48c9
Also only include dmraid and mdraid, if they are actually in use.
Harald Hoyer fe48c9
---
Harald Hoyer fe48c9
 dracut-functions.sh                | 17 +++++++++++++++++
Harald Hoyer fe48c9
 modules.d/90dmraid/module-setup.sh | 24 ++++++++++++------------
Harald Hoyer fe48c9
 modules.d/90mdraid/module-setup.sh | 13 +++++++++++--
Harald Hoyer fe48c9
 3 files changed, 40 insertions(+), 14 deletions(-)
Harald Hoyer fe48c9
Harald Hoyer fe48c9
diff --git a/dracut-functions.sh b/dracut-functions.sh
Harald Hoyer fe48c9
index c89d816..9b24419 100755
Harald Hoyer fe48c9
--- a/dracut-functions.sh
Harald Hoyer fe48c9
+++ b/dracut-functions.sh
Harald Hoyer fe48c9
@@ -296,6 +296,23 @@ get_maj_min() {
Harald Hoyer fe48c9
     printf "%s" "$((0x${_majmin%:*})):$((0x${_majmin#*:}))"
Harald Hoyer fe48c9
 }
Harald Hoyer fe48c9
 
Harald Hoyer fe48c9
+
Harald Hoyer fe48c9
+# get_devpath_block <device>
Harald Hoyer fe48c9
+# get the DEVPATH in /sys of a block device
Harald Hoyer fe48c9
+get_devpath_block() {
Harald Hoyer fe48c9
+    local majmin i
Harald Hoyer fe48c9
+    _majmin=$(get_maj_min "$1")
Harald Hoyer fe48c9
+
Harald Hoyer fe48c9
+    for _i in /sys/block/*/dev /sys/block/*/*/dev; do
Harald Hoyer fe48c9
+        [[ -e "$_i" ]] || continue
Harald Hoyer fe48c9
+        if [[ "$_majmin" == "$(<"$_i")" ]]; then
Harald Hoyer fe48c9
+            printf "%s" "${_i%/dev}"
Harald Hoyer fe48c9
+            return 0
Harald Hoyer fe48c9
+        fi
Harald Hoyer fe48c9
+    done
Harald Hoyer fe48c9
+    return 1
Harald Hoyer fe48c9
+}
Harald Hoyer fe48c9
+
Harald Hoyer fe48c9
 # get a persistent path from a device
Harald Hoyer fe48c9
 get_persistent_dev() {
Harald Hoyer fe48c9
     local i _tmp _dev
Harald Hoyer fe48c9
diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
Harald Hoyer fe48c9
index 2d73963..11181cf 100755
Harald Hoyer fe48c9
--- a/modules.d/90dmraid/module-setup.sh
Harald Hoyer fe48c9
+++ b/modules.d/90dmraid/module-setup.sh
Harald Hoyer fe48c9
@@ -9,8 +9,17 @@ check() {
Harald Hoyer fe48c9
     type -P dmraid >/dev/null || return 1
Harald Hoyer fe48c9
 
Harald Hoyer fe48c9
     [[ $hostonly ]] || [[ $mount_needs ]] && {
Harald Hoyer fe48c9
-        for fs in "${host_fs_types[@]}"; do
Harald Hoyer fe48c9
-            [[ $fs = *_raid_member ]] && return 0
Harald Hoyer fe48c9
+        for dev in "${!host_fs_types[@]}"; do
Harald Hoyer fe48c9
+            [[ "${host_fs_types[$dev]}" != *_raid_member ]] && continue
Harald Hoyer fe48c9
+
Harald Hoyer fe48c9
+            DEVPATH=$(get_devpath_block "$dev")
Harald Hoyer fe48c9
+
Harald Hoyer fe48c9
+            for holder in "$DEVPATH"/holders/*; do
Harald Hoyer fe48c9
+                [[ -e "$holder" ]] || continue
Harald Hoyer fe48c9
+                [[ -e "$holder/dm" ]] && return 0
Harald Hoyer fe48c9
+                break
Harald Hoyer fe48c9
+            done
Harald Hoyer fe48c9
+
Harald Hoyer fe48c9
         done
Harald Hoyer fe48c9
         return 255
Harald Hoyer fe48c9
     }
Harald Hoyer fe48c9
@@ -31,16 +40,7 @@ cmdline() {
Harald Hoyer fe48c9
         local holder DEVPATH DM_NAME majmin
Harald Hoyer fe48c9
         [[ "${host_fs_types[$dev]}" != *_raid_member ]] && continue
Harald Hoyer fe48c9
 
Harald Hoyer fe48c9
-        majmin=$(get_maj_min $dev)
Harald Hoyer fe48c9
-        DEVPATH=$(
Harald Hoyer fe48c9
-            for i in /sys/block/*; do
Harald Hoyer fe48c9
-                [[ -e "$i/dev" ]] || continue
Harald Hoyer fe48c9
-                if [[ $a == $(<"$i/dev") ]]; then
Harald Hoyer fe48c9
-                    printf "%s" "$i"
Harald Hoyer fe48c9
-                    break
Harald Hoyer fe48c9
-                fi
Harald Hoyer fe48c9
-            done
Harald Hoyer fe48c9
-        )
Harald Hoyer fe48c9
+        DEVPATH=$(get_devpath_block "$dev")
Harald Hoyer fe48c9
 
Harald Hoyer fe48c9
         for holder in "$DEVPATH"/holders/*; do
Harald Hoyer fe48c9
             [[ -e "$holder" ]] || continue
Harald Hoyer fe48c9
diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
Harald Hoyer fe48c9
index 2bedbfd..5df2274 100755
Harald Hoyer fe48c9
--- a/modules.d/90mdraid/module-setup.sh
Harald Hoyer fe48c9
+++ b/modules.d/90mdraid/module-setup.sh
Harald Hoyer fe48c9
@@ -8,8 +8,17 @@ check() {
Harald Hoyer fe48c9
     type -P mdadm >/dev/null || return 1
Harald Hoyer fe48c9
 
Harald Hoyer fe48c9
     [[ $hostonly ]] || [[ $mount_needs ]] && {
Harald Hoyer fe48c9
-        for fs in "${host_fs_types[@]}"; do
Harald Hoyer fe48c9
-            [[ "$fs" == *_raid_member ]] && return 0
Harald Hoyer fe48c9
+        for dev in "${!host_fs_types[@]}"; do
Harald Hoyer fe48c9
+            [[ "${host_fs_types[$dev]}" != *_raid_member ]] && continue
Harald Hoyer fe48c9
+
Harald Hoyer fe48c9
+            DEVPATH=$(get_devpath_block "$dev")
Harald Hoyer fe48c9
+
Harald Hoyer fe48c9
+            for holder in "$DEVPATH"/holders/*; do
Harald Hoyer fe48c9
+                [[ -e "$holder" ]] || continue
Harald Hoyer fe48c9
+                [[ -e "$holder/md" ]] && return 0
Harald Hoyer fe48c9
+                break
Harald Hoyer fe48c9
+            done
Harald Hoyer fe48c9
+
Harald Hoyer fe48c9
         done
Harald Hoyer fe48c9
         return 255
Harald Hoyer fe48c9
     }