Skip to content

Commit 26af1cd

Browse files
Ming Leiaxboe
authored andcommitted
nvme: wait until quiesce is done
NVMe uses one atomic flag to check if quiesce is needed. If quiesce is started, the helper returns immediately. This way is wrong, since we have to wait until quiesce is done. Fixes: e70feb8 ("blk-mq: support concurrent queue quiesce/unquiesce") Reviewed-by: Keith Busch <kbusch@kernel.org> Signed-off-by: Ming Lei <ming.lei@redhat.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Link: https://lore.kernel.org/r/20211109071144.181581-5-ming.lei@redhat.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent 93542fb commit 26af1cd

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

drivers/nvme/host/core.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4476,6 +4476,8 @@ static void nvme_stop_ns_queue(struct nvme_ns *ns)
44764476
{
44774477
if (!test_and_set_bit(NVME_NS_STOPPED, &ns->flags))
44784478
blk_mq_quiesce_queue(ns->queue);
4479+
else
4480+
blk_mq_wait_quiesce_done(ns->queue);
44794481
}
44804482

44814483
/*
@@ -4595,6 +4597,8 @@ void nvme_stop_admin_queue(struct nvme_ctrl *ctrl)
45954597
{
45964598
if (!test_and_set_bit(NVME_CTRL_ADMIN_Q_STOPPED, &ctrl->flags))
45974599
blk_mq_quiesce_queue(ctrl->admin_q);
4600+
else
4601+
blk_mq_wait_quiesce_done(ctrl->admin_q);
45984602
}
45994603
EXPORT_SYMBOL_GPL(nvme_stop_admin_queue);
46004604

0 commit comments

Comments
 (0)