From f31220ec883956f459bc227d6fe35d3a581eb369 Mon Sep 17 00:00:00 2001 From: Hannes Reinecke Date: Thu, 25 Feb 2016 20:58:09 +0800 Subject: [PATCH] 95iscsi: Autodetect iSCSI firmware Some iSCSI initiator present firmware information in /sys/firmware/ibft or /sys/firmware/iscsi_bootX Whenever we detect one of those directories we should assume that the iSCSI devices should be activated. Also incorporates SUSE patches: 0049: 95iscsi: Use 'ip=ibft' for ibft autoconfiguration For iBFT autoconfiguration we should be setting 'ip=ibft' instead of rd.neednet. This should instruct dracut to only enable the iBFT interfaces and leave the rest alone. References: bnc#879038 0054: 95iscsi: update commandline printing dracut has a separate callout 'cmdline' which should be used for printing out the generated commandline. Signed-off-by: Pavel Wieczorkiewicz Signed-off-by: Hannes Reinecke Signed-off-by: Thomas Renninger --- modules.d/95iscsi/module-setup.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh index 4ecba05..7ef0caa 100755 --- a/modules.d/95iscsi/module-setup.sh +++ b/modules.d/95iscsi/module-setup.sh @@ -29,6 +29,21 @@ check() { return 0 } +install_ibft() { + # When iBFT / iscsi_boot is detected: + # - Use 'ip=ibft' to set up iBFT network interface + # - specify firmware booting cmdline parameter + + for d in /sys/firmware/* ; do + if [ -d ${d}/initiator ] ; then + if [ ${d##*/} = "ibft" ] ; then + echo -n "ip=ibft " + fi + echo -n "rd.iscsi.firmware=1" + fi + done +} + depends() { echo network rootfs-block } @@ -36,6 +51,12 @@ depends() { installkernel() { local _arch=$(uname -m) + # Detect iBFT and perform mandatory steps + if [[ $hostonly_cmdline == "yes" ]] ; then + install_ibft > "${initdir}/etc/cmdline.d/95iscsi.conf" + echo >> "${initdir}/etc/cmdline.d/95iscsi.conf" + fi + instmods bnx2i qla4xxx cxgb3i cxgb4i be2iscsi hostonly="" instmods iscsi_tcp iscsi_ibft crc32c iscsi_boot_sysfs iscsi_module_filter() { @@ -75,6 +96,11 @@ installkernel() { | iscsi_module_filter | instmods } +cmdline() { + install_ibft +} + +# called by dracut install() { inst_multiple umount iscsistart hostname iscsi-iname inst_multiple -o iscsiuio