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 <pwieczorkiewicz@suse.com>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Thomas Renninger <trenn@suse.de>
master
Hannes Reinecke 2014-12-11 15:45:57 +01:00 committed by Harald Hoyer
parent 8f4ee8c71b
commit 442abd16d2
1 changed files with 26 additions and 0 deletions

View File

@ -28,6 +28,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
}

# called by dracut
depends() {
echo network rootfs-block
@ -37,6 +52,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() {
@ -76,6 +97,11 @@ installkernel() {
| iscsi_module_filter | instmods
}

# called by dracut
cmdline() {
install_ibft
}

# called by dracut
install() {
inst_multiple umount iscsistart hostname iscsi-iname