Blame SOURCES/0451-dracut-functions.sh-catch-all-lvm-slaves.patch

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