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