diff options
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.patch | 68 |
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() { |