Sorry, there's editing problem. Reply it here again.
---
From: Minfei Huang <mhuang(a)redhat.com>
There are several kinds of iSCSI mode we support currently.
- Pure hardware iSCSI
- iBFT iSCSI
- Pure software iSCSI
Except of the 1st one because firmware takes care of everything to
make it behave like a local disk, iBFT and pure software iSCSI mode
need information passed to kdump kernel for configuring them correctly.
Currently kdump will take iBFT mode as a software iSCSI and collect
the related information for setting it up in 2nd kernel, though dracut
can detect it as iBFT mode and collect enough information. This brings
2 problems:
1) For iBFT mode 2 sessions will be built in 2nd kernel, one is in
iBFT mode, the other is pure software mode. This is because both
kdump and dracut collect iSCSI inforamtion separately for a certain
iBFT mode iSCSI of 1st kernel.
2) These 2 sessions of 2nd kernel for a certain session of 1st kernel
could contain two "ip=xxx" cmdline option. This will cause cmdline
handling error in dracut.
In order to avoid above 2 problems, kdump need detect iBFT mode iSCSI
and leave it to dracut. This is what have been done in this patch.
Signed-off-by: Minfei Huang <mhuang(a)redhat.com>
Signed-off-by: Baoquan He <bhe(a)redhat.com>
---
dracut-module-setup.sh | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index 4cd7107..50dee8d 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -494,7 +494,11 @@ kdump_get_iscsi_initiator() {
return 1
}
-# No ibft handling yet.
+# Detect iBFT session according to session type
+is_ibft() {
+ [ "$(kdump_iscsi_get_rec_val $1 "node.discovery_type")" = fw ]
+}
+
kdump_setup_iscsi_device() {
local path=$1
local tgt_name; local tgt_ipaddr;
@@ -517,6 +521,10 @@ kdump_setup_iscsi_device() {
return 1
fi
+ if is_ibft ${path}; then
+ return
+ fi
+
tgt_name=$(kdump_iscsi_get_rec_val ${path} "node.name")
tgt_ipaddr=$(kdump_iscsi_get_rec_val ${path} "node.conn\[0\].address")
--
2.5.5