From 61d345654fbdd895a406a5a7517f01a7c984a7ed Mon Sep 17 00:00:00 2001 From: Hannes Reinecke Date: Thu, 10 Mar 2016 15:45:43 +0100 Subject: [PATCH] 95zfcp_rules: simplified rd.zfcp commandline for NPIV When NPIV is enabled and the allow_lun_scan parameter is set to 'Y' the HBA will initiate a LUN scan automatically, so there is no need to specify the WWPN and LUN number manually. References: bsc#964456 Signed-off-by: Hannes Reinecke --- dracut.cmdline.7.asc | 9 ++++++++- modules.d/95zfcp_rules/module-setup.sh | 23 +++++++++++++++++++---- modules.d/95zfcp_rules/parse-zfcp.sh | 1 + 3 files changed, 28 insertions(+), 5 deletions(-) Index: dracut-044/dracut.cmdline.7.asc =================================================================== --- dracut-044.orig/dracut.cmdline.7.asc 2016-04-12 15:48:42.072804543 +0200 +++ dracut-044/dracut.cmdline.7.asc 2016-04-12 15:48:46.869076048 +0200 @@ -771,12 +771,19 @@ DASD ZFCP ~~~~ **rd.zfcp=**____,____,____:: - rd.zfcp can be specified multiple times on the kernel command line. + rd.zfcp can be specified multiple times on the kernel command + line. + +**rd.zfcp=**____:: + If NPIV is enabled and the 'allow_lun_scan' parameter to the zfcp + module is set to 'Y' then the zfcp adaptor will be initiating a + scan internally and the and parameters can be omitted. + [listing] .Example -- rd.zfcp=0.0.4000,0x5005076300C213e9,0x5022000000000000 +rd.zfcp=0.0.4000 -- **rd.zfcp.conf=0**:: Index: dracut-044/modules.d/95zfcp_rules/module-setup.sh =================================================================== --- dracut-044.orig/modules.d/95zfcp_rules/module-setup.sh 2016-04-12 15:48:42.072804543 +0200 +++ dracut-044/modules.d/95zfcp_rules/module-setup.sh 2016-04-12 15:48:46.869076048 +0200 @@ -5,15 +5,30 @@ cmdline() { is_zfcp() { local _dev=$1 local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD) - local _sdev _lun _wwpn _ccw + local _sdev _scsiid _hostno _lun _wwpn _ccw _port_type + local _allow_lun_scan _is_npiv + _allow_lun_scan=$(cat /sys/module/zfcp/parameters/allow_lun_scan) [ "${_devpath#*/sd}" == "$_devpath" ] && return 1 _sdev="${_devpath%%/block/*}" [ -e ${_sdev}/fcp_lun ] || return 1 - _lun=$(cat ${_sdev}/fcp_lun) - _wwpn=$(cat ${_sdev}/wwpn) + _scsiid="${_sdev##*/}" + _hostno="${_scsiid%%:*}" + [ -d /sys/class/fc_host/host${_hostno} ] || return 1 + _port_type=$(cat /sys/class/fc_host/host${_hostno}/port_type) + case "$_port_type" in + NPIV*) + _is_npiv=1 + ;; + esac _ccw=$(cat ${_sdev}/hba_id) - echo "rd.zfcp=${_ccw},${_wwpn},${_lun}" + if [ "$_is_npiv" ] && [ "$_allow_lun_scan" = "Y" ] ; then + echo "rd.zfcp=${_ccw}" + else + _lun=$(cat ${_sdev}/fcp_lun) + _wwpn=$(cat ${_sdev}/wwpn) + echo "rd.zfcp=${_ccw},${_wwpn},${_lun}" + fi return 0 } [[ $hostonly ]] || [[ $mount_needs ]] && { Index: dracut-044/modules.d/95zfcp_rules/parse-zfcp.sh =================================================================== --- dracut-044.orig/modules.d/95zfcp_rules/parse-zfcp.sh 2016-04-12 15:48:42.072804543 +0200 +++ dracut-044/modules.d/95zfcp_rules/parse-zfcp.sh 2016-04-12 15:48:46.869076048 +0200 @@ -31,6 +31,7 @@ ACTION=="add", SUBSYSTEM=="drivers", KER ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1" EOF fi + [ -z "$wwpn" -o -z "$lun" ] && return m=$(sed -n "/.*${wwpn}.*${lun}.*/p" $_rule) if [ -z "$m" ] ; then cat >> $_rule <