• James Smart's avatar
    scsi: lpfc: Implement health checking when aborting I/O · a22d73b6
    James Smart authored
    Several errors have occurred where the adapter stops or fails but does not
    raise the register values for the driver to detect failure. Thus driver is
    unaware of the failure. The failure typically results in I/O timeouts, the
    I/O timeout handler failing (after several seconds), and the error handler
    escalating recovery policy and resulting in more errors. Eventually, the
    driver is in a position where things have spiraled and it can't do recovery
    because other recovery ops are still outstanding and it becomes unusable.
    
    Resolve the situation by having the I/O timeout handler (actually a els,
    SCSI I/O, NVMe ls, or NVMe I/O timeout), in addition to aborting the I/O,
    perform a mailbox command and look for a response from the hardware.  If
    the mailbox command fails, it will mark the adapter offline and then invoke
    the adapter reset handler to clean up.
    
    The new I/O timeout test will be limited to a test every 5s. If there are
    multiple I/O timeouts concurrently, only the 1st I/O timeout will generate
    the mailbox command. Further testing will only occur once a timeout occurs
    after a 5s delay from the last mailbox command has expired.
    
    Link: https://lore.kernel.org/r/20210104180240.46824-14-jsmart2021@gmail.comCo-developed-by: default avatarDick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: default avatarDick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: default avatarJames Smart <jsmart2021@gmail.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    a22d73b6
lpfc_attr.c 220 KB