2014-05-06 11:22:17 +00:00
|
|
|
From c1db8b0b1a7545c9edf2b0b2328733c44ba4e8f1 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Hannes Reinecke <hare@suse.de>
|
|
|
|
Date: Mon, 5 May 2014 08:32:16 +0200
|
|
|
|
Subject: 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.
|
|
|
|
|
|
|
|
Signed-off-by: Pavel Wieczorkiewicz <pwieczorkiewicz@suse.com>
|
|
|
|
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
|
|
|
---
|
|
|
|
modules.d/95iscsi/module-setup.sh | 16 ++++++++++++++++
|
|
|
|
modules.d/95iscsi/parse-iscsiroot.sh | 10 ++++++++--
|
|
|
|
2 files changed, 24 insertions(+), 2 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
|
|
|
|
index 1b0f292..97e6e81 100755
|
|
|
|
--- a/modules.d/95iscsi/module-setup.sh
|
|
|
|
+++ b/modules.d/95iscsi/module-setup.sh
|
2014-04-14 11:49:38 +00:00
|
|
|
@@ -39,6 +39,22 @@ depends() {
|
|
|
|
installkernel() {
|
|
|
|
local _arch=$(uname -m)
|
|
|
|
|
|
|
|
+ install_ibft() {
|
2014-05-06 11:22:17 +00:00
|
|
|
+ # When iBFT / iscsi_boot is detected:
|
|
|
|
+ # - mark network as mandatory
|
|
|
|
+ # - specify firmware booting cmdline parameter
|
2014-04-14 11:49:38 +00:00
|
|
|
+
|
2014-05-06 11:22:17 +00:00
|
|
|
+ for d in /sys/firmware/* ; do
|
|
|
|
+ if [ -d ${d}/initiator ] ; then
|
|
|
|
+ echo "rd.neednet=1" >> "${initdir}/etc/cmdline.d/95iscsi.conf"
|
|
|
|
+ echo "rd.iscsi.firmware=1" >> "${initdir}/etc/cmdline.d/95iscsi.conf"
|
|
|
|
+ fi
|
|
|
|
+ done
|
2014-04-14 11:49:38 +00:00
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ # Detect iBFT and perform mandatory steps
|
|
|
|
+ install_ibft
|
|
|
|
+
|
|
|
|
instmods bnx2i qla4xxx cxgb3i cxgb4i be2iscsi
|
|
|
|
hostonly="" instmods iscsi_tcp iscsi_ibft crc32c iscsi_boot_sysfs
|
|
|
|
iscsi_module_filter() {
|
2014-05-06 11:22:17 +00:00
|
|
|
diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh
|
|
|
|
index 4be9d56..a965cc6 100755
|
|
|
|
--- a/modules.d/95iscsi/parse-iscsiroot.sh
|
|
|
|
+++ b/modules.d/95iscsi/parse-iscsiroot.sh
|
|
|
|
@@ -59,11 +59,17 @@ if [ -n "$iscsiroot" ] ; then
|
|
|
|
[ -z "$netroot" ] || [ "$netroot" = "iscsi" ] && netroot=iscsi:$iscsiroot
|
|
|
|
fi
|
|
|
|
|
|
|
|
+# Autodetect iSCSI firmware targets
|
|
|
|
+if [ -z "$iscsiroot" ] ; then
|
|
|
|
+ modprobe -q iscsi_boot_sysfs
|
|
|
|
+ modprobe -q iscsi_ibft
|
|
|
|
+ [ -d /sys/firmware/ibft ] && iscsi_firmware="1"
|
|
|
|
+ [ -d /sys/firmware/iscsi_boot1 ] && iscsi_firmware="1"
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
# iscsi_firmware does not need argument checking
|
|
|
|
if [ -n "$iscsi_firmware" ] ; then
|
|
|
|
netroot=${netroot:-iscsi:}
|
|
|
|
- modprobe -q iscsi_boot_sysfs 2>/dev/null
|
|
|
|
- modprobe -q iscsi_ibft
|
|
|
|
initqueue --onetime --timeout "/sbin/iscsiroot dummy '$netroot' '$NEWROOT'"
|
|
|
|
fi
|
|
|
|
|
|
|
|
--
|
|
|
|
1.8.5.2
|
|
|
|
|