Blame 0112-dracut-functions.sh-catch-all-lvm-slaves.patch

Harald Hoyer 4f714a
From c7c8c4981ac3a0258ff053fdd02cfe17a11710da Mon Sep 17 00:00:00 2001
Harald Hoyer 4f714a
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer 4f714a
Date: Tue, 9 Aug 2016 15:26:04 +0200
Harald Hoyer 4f714a
Subject: [PATCH] dracut-functions.sh: catch all lvm slaves
Harald Hoyer 4f714a
Harald Hoyer 4f714a
add check_vol_slaves_all to be used in check_block_and_slaves_all
Harald Hoyer 4f714a
Harald Hoyer 4f714a
otherwise only the first lvm VG member would be processed
Harald Hoyer 4f714a
Harald Hoyer 4f714a
(cherry picked from commit 7a7b8c174023886b015bd484372839aecf63f324)
Harald Hoyer 4f714a
---
Harald Hoyer 4f714a
 dracut-functions.sh | 25 ++++++++++++++++++++++++-
Harald Hoyer 4f714a
 1 file changed, 24 insertions(+), 1 deletion(-)
Harald Hoyer 4f714a
Harald Hoyer 4f714a
diff --git a/dracut-functions.sh b/dracut-functions.sh
Harald Hoyer 4f714a
index 4496bfe..249d8fb 100755
Harald Hoyer 4f714a
--- a/dracut-functions.sh
Harald Hoyer 4f714a
+++ b/dracut-functions.sh
Harald Hoyer 4f714a
@@ -507,7 +507,7 @@ check_block_and_slaves_all() {
Harald Hoyer 4f714a
     if ! lvm_internal_dev $2 && "$1" $2; then
Harald Hoyer 4f714a
         _ret=0
Harald Hoyer 4f714a
     fi
Harald Hoyer 4f714a
-    check_vol_slaves "$@" && return 0
Harald Hoyer 4f714a
+    check_vol_slaves_all "$@" && return 0
Harald Hoyer 4f714a
     if [[ -f /sys/dev/block/$2/../dev ]]; then
Harald Hoyer 4f714a
         check_block_and_slaves_all $1 $(<"/sys/dev/block/$2/../dev") && _ret=0
Harald Hoyer 4f714a
     fi
Harald Hoyer 4f714a
@@ -580,6 +580,29 @@ check_vol_slaves() {
Harald Hoyer 4f714a
     return 1
Harald Hoyer 4f714a
 }
Harald Hoyer 4f714a
 
Harald Hoyer 4f714a
+check_vol_slaves_all() {
Harald Hoyer 4f714a
+    local _lv _vg _pv
Harald Hoyer 4f714a
+    for i in /dev/mapper/*; do
Harald Hoyer 4f714a
+        [[ $i == /dev/mapper/control ]] && continue
Harald Hoyer 4f714a
+        _lv=$(get_maj_min $i)
Harald Hoyer 4f714a
+        if [[ $_lv = $2 ]]; then
Harald Hoyer 4f714a
+            _vg=$(lvm lvs --noheadings -o vg_name $i 2>/dev/null)
Harald Hoyer 4f714a
+            # strip space
Harald Hoyer 4f714a
+            _vg="${_vg//[[:space:]]/}"
Harald Hoyer 4f714a
+            if [[ $_vg ]]; then
Harald Hoyer 4f714a
+                for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
Harald Hoyer 4f714a
+                do
Harald Hoyer 4f714a
+                    check_block_and_slaves_all $1 $(get_maj_min $_pv)
Harald Hoyer 4f714a
+                done
Harald Hoyer 4f714a
+                return 0
Harald Hoyer 4f714a
+            fi
Harald Hoyer 4f714a
+        fi
Harald Hoyer 4f714a
+    done
Harald Hoyer 4f714a
+    return 1
Harald Hoyer 4f714a
+}
Harald Hoyer 4f714a
+
Harald Hoyer 4f714a
+
Harald Hoyer 4f714a
+
Harald Hoyer 4f714a
 # fs_get_option <filesystem options> <search for option>
Harald Hoyer 4f714a
 # search for a specific option in a bunch of filesystem options
Harald Hoyer 4f714a
 # and return the value