SuSE is storing the zfcp configuration in udev files, so we should be including these. Signed-off-by: Hannes Reinecke <hare@xxxxxxx> --- modules.d/95zfcp_rules/module-setup.sh | 25 ++++++++++++++++ modules.d/95zfcp_rules/parse-zfcp.sh | 54 ++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100755 modules.d/95zfcp_rules/module-setup.sh create mode 100755 modules.d/95zfcp_rules/parse-zfcp.sh diff --git a/modules.d/95zfcp_rules/module-setup.sh b/modules.d/95zfcp_rules/module-setup.sh new file mode 100755 index 0000000..9a1ab20 --- /dev/null +++ b/modules.d/95zfcp_rules/module-setup.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +# called by dracut +check() { + local _arch=$(uname -m) + [ -x /sbin/zfcp_disk_configure ] || return 1 + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 + return 0 +} + +# called by dracut +depends() { + return 0 +} + +# called by dracut +install() { + inst_multiple /usr/lib/udev/collect + inst_hook cmdline 30 "$moddir/parse-zfcp.sh" + if [[ $hostonly ]] ; then + inst_rules_wildcard 51-zfcp-*.rules + fi +} diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh new file mode 100755 index 0000000..94f2b49 --- /dev/null +++ b/modules.d/95zfcp_rules/parse-zfcp.sh @@ -0,0 +1,54 @@ +#!/bin/sh +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +create_udev_rule() { + local ccw=$1 + local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules + + local _cu_type _dev_type + local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules + + if [ -e /sys/bus/ccw/devices/${ccw} ] ; then + read _cu_type < /sys/bus/ccw/devices/${ccw}/cutype + read _dev_type < /sys/bus/ccw/devices/${ccw}/devtype + fi + if [ "$_cu_type" != "1731/03" ] ; then + return 0; + fi + if [ "$_dev_type" != "1732/03" ] && [ "$_dev_type" != "1732/04" ] ; then + return 0; + fi + + [ -e ${_rule} ] && return 0 + + if [ ! -f "$_rule" ] ; then + cat > $_rule <<EOF +ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$ccw", IMPORT{program}="collect $ccw %k ${ccw} zfcp" +ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="zfcp", IMPORT{program}="collect $ccw %k ${ccw} zfcp" +ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1" +EOF + fi + wwpn=${2%:*} + lun=${2#*:} + m=$(sed -n "/.*${wwpn}.*${lun}.*/p" $_rule) + if [ -z "$m" ] ; then + cat >> $_rule <<EOF +ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun" +EOF + fi +} + +for zfcp_arg in $(getargs root=) $(getargs resume=); do + ( + case $zfcp_arg in + /dev/disk/by-path/ccw-*) + ccw_arg=${zfcp_arg##*/} + break; + esac + if [ -n "$ccw_arg" ] ; then + IFS="-" + set -- $ccw_arg + create_udev_rule $2 $4 + ) +done -- 1.8.1.4 -- To unsubscribe from this list: send the line "unsubscribe initramfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html