From: Kairui Song Date: Thu, 5 Jul 2018 08:20:04 +0000 (+0800) Subject: Merge 90-multipath-hostonly and 90-multipath X-Git-Tag: 048~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35e86ac117acbfd699f371f163cdda9db0ebc047;p=thirdparty%2Fdracut.git Merge 90-multipath-hostonly and 90-multipath This commit basically reverts 5ce7cc73 90-multipath-hostonly module was added in 5ce7cc73, because if hostonly mode is enabled, multipath module will always hardcode wwids which causes problems when the initramfs is cloned to another system with same hardware. Now with tri-state hostonly mode, the two modules could be merged and only hardcode wwids when "strict" hostonly mode is enabled. --- diff --git a/modules.d/90multipath-hostonly/module-setup.sh b/modules.d/90multipath-hostonly/module-setup.sh deleted file mode 100755 index 88839033e..000000000 --- a/modules.d/90multipath-hostonly/module-setup.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -# called by dracut -check() { - return 255 -} - -# called by dracut -depends() { - echo multipath - return 0 -} - -# called by dracut -install() { - local _f _allow - - is_mpath() { - local _dev=$1 - [ -e /sys/dev/block/$_dev/dm/uuid ] || return 1 - [[ $(cat /sys/dev/block/$_dev/dm/uuid) =~ mpath- ]] && return 0 - return 1 - } - - majmin_to_mpath_dev() { - local _dev - for i in /dev/mapper/*; do - [[ $i == /dev/mapper/control ]] && continue - _dev=$(get_maj_min $i) - if [ "$_dev" = "$1" ]; then - echo $i - return - fi - done - } - - add_hostonly_mpath_conf() { - is_mpath $1 && { - local _dev - - _dev=$(majmin_to_mpath_dev $1) - [ -z "$_dev" ] && return - strstr "$_allow" "$_dev" && return - _allow="$_allow --allow $_dev" - } - } - - [[ $hostonly ]] && { - for_each_host_dev_and_slaves_all add_hostonly_mpath_conf - [ -n "$_allow" ] && mpathconf $_allow --outfile ${initdir}/etc/multipath.conf - } -} - diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh index 446dceb01..f825c00cd 100755 --- a/modules.d/90multipath/module-setup.sh +++ b/modules.d/90multipath/module-setup.sh @@ -7,6 +7,18 @@ is_mpath() { return 1 } +majmin_to_mpath_dev() { + local _dev + for i in /dev/mapper/*; do + [[ $i == /dev/mapper/control ]] && continue + _dev=$(get_maj_min $i) + if [ "$_dev" = "$1" ]; then + echo $i + return + fi + done +} + # called by dracut check() { local _rootdev @@ -55,6 +67,17 @@ installkernel() { install() { local _f _allow + add_hostonly_mpath_conf() { + is_mpath $1 && { + local _dev + + _dev=$(majmin_to_mpath_dev $1) + [ -z "$_dev" ] && return + strstr "$_allow" "$_dev" && return + _allow="$_allow --allow $_dev" + } + } + inst_multiple -o \ dmsetup \ kpartx \ @@ -69,6 +92,11 @@ install() { /etc/multipath/* \ /etc/multipath/conf.d/* + [[ $hostonly ]] && [[ $hostonly_mode = "strict" ]] && { + for_each_host_dev_and_slaves_all add_hostonly_mpath_conf + [ -n "$_allow" ] && mpathconf $_allow --outfile ${initdir}/etc/multipath.conf + } + inst $(command -v partx) /sbin/partx inst_libdir_file "libmultipath*" "multipath/*"