File 0310-95iscsi-set-rd.iscsi.firmware-for-qla4xxx-sessions.patch of Package dracut.4406
From: Hannes Reinecke <hare@suse.de>
Date: Tue, 20 Oct 2015 07:59:43 +0200
Subject: 95iscsi: set 'rd.iscsi.firmware' for qla4xxx sessions
The qla4xxx driver can run with or without open-iscsi support,
depending on the setting of the 'ql4xdisablesysfsboot' module
parameter.
When the parameter is set to '0', dracut needs to call
'iscsiadm -m fw' to trigger iSCSI login, so we need to set
the 'rd.iscsi.firmware' dracut variable. But this will then
fail if the parameter is set to '1', as in these cases the
list of firmware targets is empty.
To cover both scenarios this patch reshuffles 'handle_firmware'
in iscsiroot.sh to continue if iscsiadm -m fw fails but iscsi
sessions are present.
References: bsc#951003
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
modules.d/95iscsi/iscsiroot.sh | 23 ++++++++++++++---------
modules.d/95iscsi/module-setup.sh | 1 +
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
index 38aff41..1e6ab41 100755
--- a/modules.d/95iscsi/iscsiroot.sh
+++ b/modules.d/95iscsi/iscsiroot.sh
@@ -54,17 +54,24 @@ set_login_retries() {
handle_firmware()
{
if ! [ -e /tmp/iscsistarted-firmware ]; then
+ # Depending on the 'ql4xdisablesysfsboot' qla4xxx
+ # will be autostarting sessions without presenting
+ # them via the firmware interface.
+ # In these cases 'iscsiadm -m fw' will fail, but
+ # the iSCSI sessions will still be present.
if ! iscsiadm -m fw; then
warn "iscsiadm: Could not get list of targets from firmware."
- return 1
- fi
+ else
- for p in $(getargs rd.iscsi.param -d iscsi_param); do
- iscsi_param="$iscsi_param --param $p"
- done
+ for p in $(getargs rd.iscsi.param -d iscsi_param); do
+ iscsi_param="$iscsi_param --param $p"
+ done
- if ! iscsiadm -m fw -l; then
- warn "iscsiadm: Log-in to iscsi target failed"
+ if ! iscsiadm -m fw -l; then
+ warn "iscsiadm: Log-in to iscsi target failed"
+ else
+ need_shutdown
+ fi
fi
if [ -d /sys/class/iscsi_session ]; then
@@ -73,8 +80,6 @@ handle_firmware()
else
return 1
fi
-
- need_shutdown
fi
return 0
}
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
index 276d1ce..e29f342 100755
--- a/modules.d/95iscsi/module-setup.sh
+++ b/modules.d/95iscsi/module-setup.sh
@@ -66,6 +66,7 @@ install_iscsiroot() {
# qla4xxx flashnode session; skip iBFT discovery
iscsi_initiator=$(cat /sys/class/iscsi_host/${iscsi_host}/initiatorname)
echo "rd.iscsi.initiator=${iscsi_initiator}"
+ echo "rd.iscsi.firmware=1"
return;
fi
done
--
1.8.4.5