• James Smart's avatar
    nvme-fc: Reattach to localports on re-registration · 5533d424
    James Smart authored
    If the LLDD resets or detaches from an fc port, the LLDD will
    deregister all remoteports seen by the fc port and deregister the
    localport associated with the fc port. The teardown of the localport
    structure will be held off due to reference counting until all the
    remoteports are removed (and they are held off until all
    controllers/associations to terminated). Currently, if the fc port
    is reinit/reattached and registered again as a localport it is
    treated as an independent entity from the prior localport and all
    prior remoteports and controllers cannot be revived. They are
    created as new and separate entities.
    
    This patch changes the localport registration to look at the known
    localports that are waiting to be torndown. If they are the same port
    based on wwn's, the local port is transitioned out of the teardown
    state.  This allows the remote ports and controller connections to
    be reestablished and resumed as long as the localport can also be
    reregistered within the timeout windows.
    
    The patch adds a new routine nvme_fc_attach_to_unreg_lport() with
    the functionality and moves the lport get/put routines to avoid
    forward references.
    Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    5533d424
fc.c 79.3 KB