• James.Smart@Emulex.Com's avatar
    [SCSI] lpfc driver 8.0.30 : dev_loss and nodev timeouts · ea84c3f7
    James.Smart@Emulex.Com authored
    Fix handling of the dev_loss and nodev timeouts.
    
    Symptoms: when remote port disappears for a period of time longer then
    either nodev_tmo or dev_loss_tmo, the lpfc driver worker thread will
    stall removing that remote port.
    
    Cause: removing remote port involves un-blocking and sync-ing
    corresponding block device queue. But corresponding node in the lpfc
    driver is still in the NPR(?node port recovery?) state and mid-layer
    gets SCSI_MLQUEUE_HOST_BUSY as a return value when it is trying to call
    queuecommand() with command for that node (AKA remote port)
    
    Fix: Instead of returning SCSI_MLQUEUE_HOST_BUS from queuecommand() for
    nodes in NPR states complete it with retry-able error code  DID_BUS_BUSY
    Signed-off-by: default avatarJames Smart <James.Smart@emulex.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
    ea84c3f7
lpfc_scsi.c 36.6 KB