• Nilay Shroff's avatar
    nvme-loop: flush off pending I/O while shutting down loop controller · c199fac8
    Nilay Shroff authored
    While shutting down loop controller, we first quiesce the admin/IO queue,
    delete the admin/IO tag-set and then at last destroy the admin/IO queue.
    However it's quite possible that during the window between quiescing and
    destroying of the admin/IO queue, some admin/IO request might sneak in
    and if that happens then we could potentially encounter a hung task
    because shutdown operation can't forward progress until any pending I/O
    is flushed off.
    
    This commit helps ensure that before destroying the admin/IO queue, we
    unquiesce the admin/IO queue so that any outstanding requests, which are
    added after the admin/IO queue is quiesced, are now flushed to its
    completion.
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarNilay Shroff <nilay@linux.ibm.com>
    Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
    c199fac8
loop.c 17.9 KB