On 11/03/14 at 10:33am, Dave Young wrote:
Hi,
Well done, thanks Chao.
Vivek/Bao/Minfei, could you review the patch as well?
On 10/28/14 at 06:43pm, WANG Chao wrote:
> Currently we retrieve all the necessary information of an iSCSI session
> and pass them to 2nd kernel. This is wrong way to go for hardware iscsi,
> because dracut has already had its own infrastructure to do bring up any
> iscsi device configured in firmware of an HBA (Host Bus Bridge).
>
> This patch will determine if an iscsi session is established by firmware
> configured iscsi. If it does, then we don't pass anything down to 2nd
> kernel. dracut will handle it.
>
> I read some iscsi code and I also talked with storage QE. It's confirmed
> that software iscsi will use "tcp" transport class while hardware iscsi
> will use like "be2iscsi" "bnx2i" transport class. It's ok to
use
> the transport name of an iface of a scsi session to determine hardware
> iscsi or not. Additionally using "iscsi_firmware"
"rd.iscsi.firmware" to
> determine if the system is iscsi boot, because dracut can only handle
> this case.
>
> Along this patch, I add the infrastructure of determine iBFT, but it's
> not complete yet. Mark the part as "FIXME". Once customer is asking or
> maybe I get hold of iBFT box, I can start working on it.
For non-root hwiscsi there's no kernel cmdline, you can put it in todo list
We can support root device firstly and see if it works well.
Yes, that's TODO and nice-to-have. My concern is that in 2nd kernel, not all
hardware/driver works as fine as it does in 1st kernel. I've heard a few
cases that certain driver won't work at 2nd kernel. I found one bug
myself:
https://bugzilla.redhat.com/show_bug.cgi?id=1158014
[kdump] [be2iscsi]: IP: [<ffffffffa00cf700>]
hwi_get_async_handle.isra.23.constprop.39+0x90/0x1d0 [be2iscsi]
So I think it can be safer to use iscsi_tcp (software driver, no
offload) instead of using hardware associated offload driver. What do
you think?
[..]
> +# kernel cmdline must contain these either of the following
arguments
> +# for booting off hardware iSCSI:
> +# rd.iscsi.firmware[=1], iscsi_firmware
> +kdump_is_iscsi_hw_cmdline() {
> + local cmdline
> +
> + cmdline="$(cat /proc/cmdline)"
> +
> + for arg in $cmdline; do
> + case "$arg" in
> + "rd.iscsi.firmware" |\
> + "rd.iscsi.firmware=1" |\
> + "iscsi_firmware")
dracut.cmdline manpage shows below:
iscsi_firmware
rd.iscsi.firmware=0
So looks like iscsi_firmware == rd.iscsi.firmware=0
That's a documentation issue in dracut. iscsi_firmware actually is
deprecated by rd.iscsi.firmware=1. You can send a patch to Harald to fix
it.
Thanks
WANG Chao