Bug 1034291

Summary: iscsiadm: iSCSI boot, there is no iSCSI session
Product: Red Hat Enterprise Linux 7 Reporter: Bruno Goncalves <bgoncalv>
Component: python-blivetAssignee: Radek Vykydal <rvykydal>
Status: CLOSED CURRENTRELEASE QA Contact: Bruno Goncalves <bgoncalv>
Severity: high Docs Contact:
Priority: high    
Version: 7.0CC: agrover, B_B_Singh, bgoncalv, charles_rose, cleech, ctatman, jdonohue, linux-bugs, lkardos, mbanas, narendra_k, qcai, rvykydal, sreekanth_reddy
Target Milestone: rcKeywords: Regression, TestBlocker
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-blivet-0.18.16-1 Doc Type: Known Issue
Doc Text:
When trying to boot a system using Internet Small Computer System Interface (iSCSI), the iscsiadm command does not establish the session configured in BIOS. This interrupts the boot process. To establish the iSCSI session, run iscsistart -b when the boot process is interrupted.
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-06-13 10:09:58 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 782468, 1020608, 1025505, 1031160, 1050845    

Description Bruno Goncalves 2013-11-25 14:44:22 UTC
Description of problem:
When trying to boot via iSCSI, iscsiadm does not establishes the session configured on BIOS.

Version-Release number of selected component (if applicable):
iscsi-initiator-utils-6.2.0.873-15.el7

How reproducible:
100%

Steps to Reproduce:
1.Install RHEL7 successfully on a server configured to boot via iSCSI
2.Reboot the server
3.It will stop at boot because it can't find the device



Additional info:
When running "iscsistart -b" when the boot breaks the iscsi session is established.

Comment 7 Chris Leech 2014-01-07 21:23:52 UTC
I think blivet needs to change to always check for iscsi firmware devices.  Now it seems to only do so if ip=ibft is on the command line, but not all iSCSI offload solutions use iBFT or need network interfaces configured by the OS to function.

Trying to work around this with rd.iscsi.firmware=1 is wrong, because that results in the initrd establishing the connection early and blivit/anaconda treat the iSCSI disk as a local SCSI disk - there is no iSCSI configuration stored and no runtime services running to manage the session.

Comment 8 Radek Vykydal 2014-01-08 13:29:09 UTC
I agree with Chris. I am posting a patch to anaconda-patches.

updates image for latest nightly for testing:
http://rvykydal.fedorapeople.org/updates.r7autofirmware.img

Comment 9 Bruno Goncalves 2014-01-08 14:43:56 UTC
With the updated image the iSCSI sessions are created successfully.

[anaconda root@localhost ~]# iscsiadm -m session
be2iscsi: [1] 10.16.41.222:3260,1 iqn.1992-08.com.netapp:sn.151753773
be2iscsi: [2] 10.16.43.127:3260,1 iqn.1992-08.com.netapp:sn.151753773
be2iscsi: [3] 10.16.41.222:3260,1 iqn.1992-08.com.netapp:sn.151753773
be2iscsi: [4] 10.16.43.127:3260,1 iqn.1992-08.com.netapp:sn.151753773


Do you know which blivet version will have this update?

Comment 10 Radek Vykydal 2014-01-08 14:55:37 UTC
(In reply to Bruno Goncalves from comment #9)
 
> Do you know which blivet version will have this update?

It will be set in Fixed In Version field when the patch gets reviewed and pushed.

Comment 12 Bruno Goncalves 2014-01-17 09:57:26 UTC
Server installed properly with:
 
anaconda 19.31.48-1
python-blivet-0.18.16-1.el7

Comment 13 Radek Vykydal 2014-01-27 09:02:23 UTC
*** Bug 1026916 has been marked as a duplicate of this bug. ***

Comment 14 Narendra K 2014-03-17 11:58:23 UTC
I was installing RHEL 7 snapshot 10 on an iSCSI disk using BCM 57810 device. The device has the iBFT configured with initiator and target details provided in the NIC. I observed that ip=ibft had to be passed on the command line during booting into DVD for the OS interface to get IP. The python-blivet version in snapshot 10 is 0.18.31-1.el7. I am not sure if i am missing something here. This bug seems to indicate that for python-blivet versions >= 0.18.16-1, there is no need to pass ip=ibft. It needs to be picked up automatically.

Comment 15 Bruno Goncalves 2014-03-17 12:43:20 UTC
Narendra,

I'm using PXE to install my server and I use the following options to install and boot it successfully. I didn't need to use ip=ibft.

Install Command line:
Command line: initrd=/images/storageqe-11.rhts.eng.bos.redhat.com/initrd console=ttyS1,115200 ks=http://beaker.engineering.redhat.com/kickstart/672714 ksdevice=E8:39:35:20:DE:CA serial netboot_method=pxe BOOT_IMAGE=/images/storageqe-11.rhts.eng.bos.redhat.com/kernel BOOTIF=01-e8-39-35-20-de-ca  

[0.000000] iBFT found at 0x8aa80. 


Boot command line:
Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-110.el7.x86_64 root=UUID=2d3f1040-e55d-4442-9ab1-7d4798fd42b2 ro ip=enp4s0f0:dhcp iscsi_firmware rd.lvm.lv=rhel_storageqe-11/root crashkernel=auto ifname=enp4s0f0:e8:39:35:20:de:ca rd.lvm.lv=rhel_storageqe-11/swap vconsole.keymap=us console=ttyS1,115200 vconsole.font=latarcyrheb-sun16 LANG=en_US.UTF-8

Comment 16 Radek Vykydal 2014-03-17 12:59:24 UTC
(In reply to Narendra K from comment #14)
> I was installing RHEL 7 snapshot 10 on an iSCSI disk using BCM 57810 device.
> The device has the iBFT configured with initiator and target details
> provided in the NIC. I observed that ip=ibft had to be passed on the command
> line during booting into DVD for the OS interface to get IP. The
> python-blivet version in snapshot 10 is 0.18.31-1.el7. I am not sure if i am
> missing something here. This bug seems to indicate that for python-blivet
> versions >= 0.18.16-1, there is no need to pass ip=ibft. It needs to be
> picked up automatically.

Please see bug #1063790 comment #2.

Main reason for not requiring ip=ibft option [1] for installer to try to discover and connect to targets found in firmware (ie the point of this BZ) was that for some offload solutions using the option would even make it fail in initramfs. This is also the reason why we can't assume ip=ibft (ie configure network device automatically according to iBFT) in every case when iBFT configuration is found.

[1] ip=ibft option just tells dracut/initramfs (at early stage of installation) to configure a network device based on information found in iBFT table.

Comment 17 Narendra K 2014-03-17 13:09:04 UTC
(In reply to Bruno Goncalves from comment #15)
> Narendra,
> 
> I'm using PXE to install my server and I use the following options to
> install and boot it successfully. I didn't need to use ip=ibft.
> 

Thanks Bruno for the information. PXE booting from an interface would also ensure that interface will get an IP address (DHCP). In this scenario, i think ip=ibft is not required. But if a user is installing using DVD, then no interface will get an IP address until we configure it in the subsequent stages of an installation.

Comment 18 Radek Vykydal 2014-03-17 13:11:43 UTC
Exactly, trying to make me more clear: with fix for this bug ip=ibft in not required for connecting to firmware targets automatically, but it is required if the iSCSI solution needs a network device to be configured by OS and it would not happen by other means (ie configuring the device for fetching kickstart and installation image which is most probably Bruno's case).

Comment 19 Narendra K 2014-03-17 13:48:40 UTC
(In reply to Radek Vykydal from comment #18)
> Exactly, trying to make me more clear: with fix for this bug ip=ibft in not
> required for connecting to firmware targets automatically, but it is
> required if the iSCSI solution needs a network device to be configured by OS
> and it would not happen by other means (ie configuring the device for
> fetching kickstart and installation image which is most probably Bruno's
> case).

1.To understand this better, does this mean that target IP and target IQN is fetched from iBFT (user need not provide it manually ? ), initiator iqn is fetched from iBFT, but initiator IP is not fetched from IBFT, though iBFT would have one assigned during pre-boot when it connects to target during POST. Is this understanding correct ?

Also, in PXE scenario the interface which gets IP address is different than the once which is configured for iBFT. So it seems like the OS connects to the target using a different interface than which is configured for iBFT.

2. If a user is installing using DVD (no other network device activation method), then, then ip=ibft is required. 

Bruno, could you please share the output from 'iscsiadm -m fw' and 'ip addr show' ?

Comment 20 Narendra K 2014-03-17 13:51:13 UTC
(In reply to Radek Vykydal from comment #16)
> (In reply to Narendra K from comment #14)
[...]
> 
> Please see bug #1063790 comment #2.

Could you please provide me access to this bug ? I don't have access.

Comment 21 Radek Vykydal 2014-03-17 14:19:21 UTC
Narendra, I added you to CC of the bug 1063790, you should be able to access the bug now.

(In reply to Narendra K from comment #19)
> (In reply to Radek Vykydal from comment #18)
> > Exactly, trying to make me more clear: with fix for this bug ip=ibft in not
> > required for connecting to firmware targets automatically, but it is
> > required if the iSCSI solution needs a network device to be configured by OS
> > and it would not happen by other means (ie configuring the device for
> > fetching kickstart and installation image which is most probably Bruno's
> > case).
> 
> 1.To understand this better, does this mean that target IP and target IQN is
> fetched from iBFT (user need not provide it manually ? ), initiator iqn is
> fetched from iBFT, but initiator IP is not fetched from IBFT, though iBFT
> would have one assigned during pre-boot when it connects to target during
> POST. Is this understanding correct ?

Information about iSCSI targets and initiator iqn is always fetched from iBFT automatically (in anaconda, after switchroot) and anaconda tries to connect to the targets. But a network device would be configured with configuration from iBFT and brought up only if ip=ibft option is present (this would happen in initramfs, before switchroot).

> 
> Also, in PXE scenario the interface which gets IP address is different than
> the once which is configured for iBFT. So it seems like the OS connects to
> the target using a different interface than which is configured for iBFT.

Yes, this can happen. In this case you need to use ip=ibft and possibly another ip= options for other interfaces you want to use for installation (eg to fetch packages).

> 
> 2. If a user is installing using DVD (no other network device activation
> method), then, then ip=ibft is required. 
> 

Yes.

Comment 22 Bruno Goncalves 2014-03-17 15:21:02 UTC
(In reply to Narendra K from comment #19)
> Bruno, could you please share the output from 'iscsiadm -m fw' and 'ip addr
> show' ?

You are right, we need to add "ip=ibft" if we want the server to boot using iBFT interface, otherwise as on my PXE scenario it will use the PXE interface as shown below.

# iscsiadm -m session -P1
Target: iqn.1992-08.com.netapp:sn.151753773 (non-flash)
    Current Portal: 10.16.43.127:3260,1
    Persistent Portal: 10.16.43.127:3260,1
        **********
        Interface:
        **********
        Iface Name: default
        Iface Transport: tcp
        Iface Initiatorname: iqn.1994-05.com.redhat:storageqe-11
        Iface IPaddress: 10.16.67.73
        Iface HWaddress: <empty>
        Iface Netdev: <empty>
        SID: 1
        iSCSI Connection State: LOGGED IN
        iSCSI Session State: LOGGED_IN
        Internal iscsid Session State: NO CHANGE

# iscsiadm -m fw
# BEGIN RECORD 6.2.0.873-20
iface.initiatorname = iqn.1994-05.com.redhat:storageqe-11
iface.transport_name = tcp
iface.hwaddress = e8:39:35:20:de:cc
iface.bootproto = DHCP
iface.ipaddress = 10.16.70.161
iface.subnet_mask = 255.255.248.0
iface.gateway = 10.16.71.254
iface.primary_dns = 10.16.36.29
iface.secondary_dns = 10.11.5.19
iface.vlan_id = 0
iface.net_ifacename = enp4s0f1
node.name = iqn.1992-08.com.netapp:sn.151753773
node.conn[0].address = 10.16.43.127
node.conn[0].port = 3260
node.boot_lun = 00000000
# END RECORD

# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether e8:39:35:20:de:ca brd ff:ff:ff:ff:ff:ff
    inet 10.16.67.73/21 brd 10.16.71.255 scope global dynamic enp4s0f0
       valid_lft 86351sec preferred_lft 86351sec
    inet6 2620:52:0:1040:ea39:35ff:fe20:deca/64 scope global dynamic 
       valid_lft 2591998sec preferred_lft 2591998sec
    inet6 fec0:0:a10:4000:ea39:35ff:fe20:deca/64 scope site dynamic 
       valid_lft 2591998sec preferred_lft 2591998sec
    inet6 fe80::ea39:35ff:fe20:deca/64 scope link 
       valid_lft forever preferred_lft forever
3: enp4s0f1: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether e8:39:35:20:de:cc brd ff:ff:ff:ff:ff:ff
    inet6 2620:52:0:1040:ea39:35ff:fe20:decc/64 scope global dynamic 
       valid_lft 2591998sec preferred_lft 2591998sec
    inet6 fec0:0:a10:4000:ea39:35ff:fe20:decc/64 scope site dynamic 
       valid_lft 2591998sec preferred_lft 2591998sec
    inet6 fe80::ea39:35ff:fe20:decc/64 scope link 
       valid_lft forever preferred_lft forever
4: enp5s0f0: <NO-CARRIER,BROADCAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether e8:39:35:20:de:ce brd ff:ff:ff:ff:ff:ff
5: enp5s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether e8:39:35:20:de:d0 brd ff:ff:ff:ff:ff:ff

Comment 23 Narendra K 2014-03-18 15:42:30 UTC
(In reply to Bruno Goncalves from comment #22)
> (In reply to Narendra K from comment #19)
> > Bruno, could you please share the output from 'iscsiadm -m fw' and 'ip addr
> > show' ?
> 
> You are right, we need to add "ip=ibft" if we want the server to boot using
> iBFT interface, otherwise as on my PXE scenario it will use the PXE
> interface as shown below.

Bruno, thank you for the information. Also, on my system i am observing that the interface which is set up for iBFT gets renamed as 'ibft0'. Is the behavior same in your set up ? Is it as expected ?

Comment 24 Radek Vykydal 2014-03-19 09:31:54 UTC
Per bug #828505, ibftX renaming is expected behaviour.

Comment 25 Ludek Smid 2014-06-13 10:09:58 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.