On 05/26/16 at 04:44pm, Baoquan He wrote:
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
It's better to use what documentation says about iSCSI type.
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.
The result is that iSCSI disk will be brought up by iBFT mode, not
software iSCSI mode.
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.
Here two "ip=" option, one "ip=dhcp:netdev" is to setup network, the
other "ip=ibft" is to setup network as well. So I think we can post a
patch that kdump does not need to gather network configuration, if there
is network configeration in /etc/cmdline.d/40-ibft.conf.
Then I think we will never meet the duplicated ip issue.
Thanks
Minfei
>
> 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
>