The bnx2i iSCSI transport doesn't require networking to be set up in order to
bring up iSCSI connections. Quite to the contrary, trying to bring up the
network may actually disturb the iSCSI connection. This holds in particular
for bnx2i device with NPAR (network partitioning) support, where a given
network interface can be used for both iSCSI and regular networking. Setting
certain network parameters like MTU on the network side can fatally disrupt
an existing iSCSI connection. Even if this does not happen, trying to bring
up the regular network interfaces is pointless because iSCSI won't be enabled
over regular TCP/IP anyway. Trying to bring up the network interfaces and
possibly failing delays booting unecessarily and may cause timeout, without
benefit.
Detect the bnx2i offload module at setup time and communicate it to
parse-iscsiroot.sh using a new parameter, "rd.iscsi.transport". It's currently
only effective for bnx2i. It might be useful for other transports as well,
but we haven't been able to test the other transports as thoroughly as bnx2i.
Signed-off-by: Martin Wilck <mwilck@suse.com>
**rd.iscsi.testroute=0**:
Turn off checking, if the route to the iSCSI target IP is possible before trying to login.
+**rd.iscsi.transport=__<transport_name>__**::
+ Set the iSCSI transport name (see man:iscsiadm[8,external]). iSCSI offload
+ transports like **bnx2i** don't need the network to be up in order to bring
+ up iSCSI connections. This parameter indicates that network setup can be
+ skipped in the initramfs, which makes booting with iSCSI offload cards
+ faster and more reliable. This parameter currently only has an effect for
+ _<transport_name>=bnx2i_.
+
FCoE
~~~~
**rd.fcoe=0**::
echo -n "rd.iscsi.ibft=1 "
fi
echo -n "rd.iscsi.firmware=1 "
+ [ -z "$ibft_mod" ] || echo -n "rd.iscsi.transport=$ibft_mod "
fi
done
}
fi
[ -z "$iscsiroot" ] && iscsiroot=$(getarg iscsiroot=)
[ -z "$iscsi_firmware" ] && getargbool 0 rd.iscsi.firmware -y iscsi_firmware && iscsi_firmware="1"
+[ -z "$iscsi_transport" ] && iscsi_transport=$(getarg rd.iscsi.transport=)
[ -n "$iscsiroot" ] && [ -n "$iscsi_firmware" ] && die "Mixing iscsiroot and iscsi_firmware is dangerous"
# iscsi_firmware does not need argument checking
if [ -n "$iscsi_firmware" ]; then
if [ "$root" != "dhcp" ] && [ "$netroot" != "dhcp" ]; then
- [ -z "$netroot" ] && netroot=iscsi:
+ [ -z "$netroot" ] && [ "$iscsi_transport" != bnx2i ] && netroot=iscsi:
fi
modprobe -b -q iscsi_boot_sysfs 2> /dev/null
modprobe -b -q iscsi_ibft