• Brian King's avatar
    scsi: ibmvfc: Avoid link down on FS9100 canister reboot · 4b29cb61
    Brian King authored
    When a canister on a FS9100, or similar storage, running in NPIV mode, is
    rebooted, its WWPNs will fail over to another canister. When this occurs,
    we see a WWPN going away from the fabric at one N-Port ID, and, a short
    time later, the same WWPN appears at a different N-Port ID.  When the
    canister is fully operational again, the WWPNs fail back to the original
    canister. If there is any I/O outstanding to the target when this occurs,
    it will result in the implicit logout the ibmvfc driver issues before
    removing the rport to fail. When the WWPN then shows up at a different
    N-Port ID, and we issue a PLOGI to it, the VIOS will see that it still has
    a login for this WWPN at the old N-Port ID, which results in the VIOS
    simulating a link down / link up sequence to the client, in order to get
    the VIOS and client LPAR in sync.
    
    The patch below improves the way we handle this scenario so as to avoid the
    link bounce, which affects all targets under the virtual host adapter. The
    change is to utilize the Move Login MAD, which will work even when I/O is
    outstanding to the target. The change only alters the target state machine
    for the case where the implicit logout fails prior to deleting the rport.
    If this implicit logout fails, we defer deleting the ibmvfc_target object
    after calling fc_remote_port_delete. This enables us to later retry the
    implicit logout after terminate_rport_io occurs, or to issue the Move Login
    request if a WWPN shows up at a new N-Port ID prior to this occurring.
    
    This has been tested by IBM's storage interoperability team on a FS9100,
    forcing the failover to occur. With debug tracing enabled in the ibmvfc
    driver, we confirmed the move login was sent in this scenario and confirmed
    the link bounce no longer occurred.
    
    [mkp: fix checkpatch warnings]
    
    Link: https://lore.kernel.org/r/1599859706-8505-1-git-send-email-brking@linux.vnet.ibm.comSigned-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    4b29cb61
ibmvfc.c 150 KB