Blame 0087-multipath-module-setup.sh-installkernel-fix-return-c.patch

Harald Hoyer 53e990
From 7997d8764313d5dc10689e3b6bbdde3dcc373498 Mon Sep 17 00:00:00 2001
Harald Hoyer 53e990
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer 53e990
Date: Fri, 22 Jun 2012 15:33:15 +0200
Harald Hoyer 53e990
Subject: [PATCH] multipath/module-setup.sh:installkernel() fix return code
Harald Hoyer 53e990
Harald Hoyer 53e990
---
Harald Hoyer 53e990
 modules.d/90multipath/module-setup.sh |   43 ++++++++++++++++++++++++---------
Harald Hoyer 53e990
 1 file changed, 31 insertions(+), 12 deletions(-)
Harald Hoyer 53e990
Harald Hoyer 53e990
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
Harald Hoyer 53e990
index 0e8857c..8791560 100755
Harald Hoyer 53e990
--- a/modules.d/90multipath/module-setup.sh
Harald Hoyer 53e990
+++ b/modules.d/90multipath/module-setup.sh
Harald Hoyer 53e990
@@ -32,23 +32,42 @@ depends() {
Harald Hoyer 53e990
 
Harald Hoyer 53e990
 installkernel() {
Harald Hoyer 53e990
     local _ret
Harald Hoyer 53e990
-    set +x
Harald Hoyer 53e990
+    local _arch=$(uname -m)
Harald Hoyer 53e990
     mp_mod_filter() {
Harald Hoyer 53e990
-        local _mpfuncs='scsi_register_device_handler|dm_dirty_log_type_register|dm_register_path_selector|dm_register_target'
Harald Hoyer 53e990
-        local _f
Harald Hoyer 53e990
-        while read _f; do case "$_f" in
Harald Hoyer 53e990
-            *.ko)    [[ $(<         $_f) =~ $_mpfuncs ]] && echo "$_f" ;;
Harald Hoyer 53e990
-            *.ko.gz) [[ $(gzip -dc <$_f) =~ $_mpfuncs ]] && echo "$_f" ;;
Harald Hoyer 53e990
-            *.ko.xz) [[ $(xz -dc   <$_f) =~ $_mpfuncs ]] && echo "$_f" ;;
Harald Hoyer 53e990
-            esac
Harald Hoyer 53e990
-        done
Harald Hoyer 53e990
+        local _funcs='scsi_register_device_handler|dm_dirty_log_type_register|dm_register_path_selector|dm_register_target'
Harald Hoyer 53e990
+        # subfunctions inherit following FDs
Harald Hoyer 53e990
+        local _merge=8 _side2=9
Harald Hoyer 53e990
+        function bmf1() {
Harald Hoyer 53e990
+            local _f
Harald Hoyer 53e990
+            while read _f; do
Harald Hoyer 53e990
+                case "$_f" in
Harald Hoyer 53e990
+                    *.ko)    [[ $(<         $_f) =~ $_funcs ]] && echo "$_f" ;;
Harald Hoyer 53e990
+                    *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
Harald Hoyer 53e990
+                    *.ko.xz) [[ $(xz -dc   <$_f) =~ $_funcs ]] && echo "$_f" ;;
Harald Hoyer 53e990
+                esac
Harald Hoyer 53e990
+            done
Harald Hoyer 53e990
+            return 0
Harald Hoyer 53e990
+        }
Harald Hoyer 53e990
+
Harald Hoyer 53e990
+        function rotor() {
Harald Hoyer 53e990
+            local _f1 _f2
Harald Hoyer 53e990
+            while read _f1; do
Harald Hoyer 53e990
+                echo "$_f1"
Harald Hoyer 53e990
+                if read _f2; then
Harald Hoyer 53e990
+                    echo "$_f2" 1>&${_side2}
Harald Hoyer 53e990
+                fi
Harald Hoyer 53e990
+            done | bmf1 1>&${_merge}
Harald Hoyer 53e990
+            return 0
Harald Hoyer 53e990
+        }
Harald Hoyer 53e990
+        # Use two parallel streams to filter alternating modules.
Harald Hoyer 53e990
+        set +x
Harald Hoyer 53e990
+        eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
Harald Hoyer 53e990
+        [[ $debug ]] && set -x
Harald Hoyer 53e990
+        return 0
Harald Hoyer 53e990
     }
Harald Hoyer 53e990
 
Harald Hoyer 53e990
     ( find_kernel_modules_by_path drivers/scsi; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/scsi; fi;
Harald Hoyer 53e990
       find_kernel_modules_by_path drivers/md )  |  mp_mod_filter  |  instmods
Harald Hoyer 53e990
-    _ret=$?
Harald Hoyer 53e990
-    [[ $debug ]] && set -x
Harald Hoyer 53e990
-    return $_ret
Harald Hoyer 53e990
 }
Harald Hoyer 53e990
 
Harald Hoyer 53e990
 install() {