Skip to content
  • James Smart's avatar
    nvme-fc: correct hang in nvme_ns_remove() · 0fd997d3
    James Smart authored
    
    
    When connectivity is lost to a device, the association is terminated
    and the blk-mq queues are quiesced/stopped. When connectivity is
    re-established, they are resumed.
    
    If connectivity is lost for a sufficient amount of time that the
    controller is then deleted, the delete path starts tearing down queues,
    and eventually calling nvme_ns_remove(). It appears that pending
    commands may cause blk_cleanup_queue() to never complete and the
    teardown stalls.
    
    Correct by starting the ns queues after transitioning to a DELETING
    state, allowing pending commands to be flushed with io failures. Thus
    the delete path is clear when reached.
    
    Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    0fd997d3