Thread (29 messages) 29 messages, 5 authors, 2017-07-06

Re: [PATCH 3/8] nvme-loop: quiesce admin_q instead of stopping hw queues

From: Ming Lei <tom.leiming@gmail.com>
Date: 2017-07-04 10:38:45
Subsystem: nvm express target driver, the rest · Maintainers: Christoph Hellwig, Sagi Grimberg, Chaitanya Kulkarni, Linus Torvalds

2017年7月4日 下午5:25,"Sagi Grimberg" [off-list ref]写道:
diff --git a/drivers/nvme/target/loop.c b/drivers/nvme/target/loop.c
quoted
index 3d51341e62ee..891002ee005f 100644
--- a/drivers/nvme/target/loop.c
+++ b/drivers/nvme/target/loop.c
@@ -434,7 +434,7 @@ static void nvme_loop_shutdown_ctrl(struct
nvme_loop_ctrl *ctrl)
        if (ctrl->ctrl.state == NVME_CTRL_LIVE)
                nvme_shutdown_ctrl(&ctrl->ctrl);
  -     blk_mq_stop_hw_queues(ctrl->ctrl.admin_q);
+       blk_mq_quiesce_queue(ctrl->ctrl.admin_q);
        blk_mq_tagset_busy_iter(&ctrl->admin_tag_set,
                                nvme_cancel_request, &ctrl->ctrl);
        nvme_loop_destroy_admin_queue(ctrl);
Is the queue killed before calling nvme_loop_destroy_admin_queue()?
No, its not.


If not, simply quiescing and not unquiescing will hang in
blk_cleanup_queue().
Why should it? blk_cleanup_queue does not hang, even under IO load...


After queue is quiesced, new req still can come in and be put into
sw queue or scheduler queue,
then these requests can't be
submitted and completed at all,
finally cleanup never returns.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help