If iBFT (iscsi Boot Firmware Table) is configured, we don't have to pass the
setup information to 2nd kernel. Because with cmdline argument
"rd.iscsi.ibft", dracut will automatically retrieve the setup information
from BIOS's ROM or network device's optional-ROM (not from HBA's firmware)
Add two functions to do the check. One is checking if we have
"rd.iscsi.ibft" or its equivalents specified in kernel cmdline. The other is
to check if the current iscsi session is iBFT.
Because I don't find a reliable way to tell if an iscsi session is using the
configurations from iBFT, I marked the second functions as "FIXME" and it
always returns false. That means we don't handle iBFT yet. In the future,
if someone is asking iBFT support, we can gather some data and finish the
work.
Signed-off-by: WANG Chao <chaowang(a)redhat.com>
---
dracut-module-setup.sh | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index bca21ea..780601a 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -422,6 +422,11 @@ kdump_is_iscsi_hw_session() {
return 0
}
+# FIXME: determine iBFT
+kdump_is_iscsi_ibft_session() {
+ return 1
+}
+
# kernel cmdline must contain these either of the following arguments
# for booting off hardware iSCSI:
# rd.iscsi.firmware[=1], iscsi_firmware
@@ -443,6 +448,27 @@ kdump_is_iscsi_hw_cmdline() {
return 1
}
+# kernel cmdline must contain these either of the following arguments
+# for booting off iBFT:
+# rd.iscsi.ibft[=1], ip=ibft
+kdump_is_iscsi_ibft_cmdline() {
+ local cmdline
+
+ cmdline="$(cat /proc/cmdline)"
+
+ for arg in $cmdline; do
+ case "$arg" in
+ "rd.iscsi.ibft" |\
+ "rd.iscsi.ibft=1" |\
+ "ip=ibft")
+ return 0
+ ;;
+ esac
+ done
+
+ return 1
+}
+
# No ibft handling yet.
kdump_setup_iscsi_device() {
local path=$1
--
1.9.3