• James Smart's avatar
    nvme-fc: add dev_loss_tmo timeout and remoteport resume support · 2b632970
    James Smart authored
    When a remoteport is unregistered (connectivity lost), the following
    actions are taken:
    
     - the remoteport is marked DELETED
     - the time when dev_loss_tmo would expire is set in the remoteport
     - all controllers on the remoteport are reset.
    
    After a controller resets, it will stall in a RECONNECTING state waiting
    for one of the following:
    
     - the controller will continue to attempt reconnect per max_retries and
       reconnect_delay.  As no remoteport connectivity, the reconnect attempt
       will immediately fail.  If max reconnects has not been reached, a new
       reconnect_delay timer will be schedule.  If the current time plus
       another reconnect_delay exceeds when dev_loss_tmo expires on the remote
       port, then the reconnect_delay will be shortend to schedule no later
       than when dev_loss_tmo expires.  If max reconnect attempts are reached
       (e.g. ctrl_loss_tmo reached) or dev_loss_tmo ix exceeded without
       connectivity, the controller is deleted.
     - the remoteport is re-registered prior to dev_loss_tmo expiring.
       The resume of the remoteport will immediately attempt to reconnect
       each of its suspended controllers.
    Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    [hch: updated to use nvme_delete_ctrl]
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    2b632970
fc.c 88.4 KB