]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
nbd: quiesce request queues to make sure no submissions are inflight
authorSagi Grimberg <sagi@grimberg.me>
Tue, 4 Jul 2017 06:57:09 +0000 (09:57 +0300)
committerSagi Grimberg <sagi@grimberg.me>
Thu, 6 Jul 2017 06:49:05 +0000 (09:49 +0300)
Unlike blk_mq_stop_hw_queues, blk_mq_quiesce_queue respects the
submission path rcu grace. quiesce the queue before iterating
on live tags.

Reviewed-by: Ming Lei <ming.lei@redhat.com>
Acked-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
drivers/block/nbd.c

index 977ec960dd2f974b0c09db746671a7dbd0130652..dea7d85134ee6eaa04803f1a0ce4878756e1461a 100644 (file)
@@ -661,9 +661,9 @@ static void nbd_clear_req(struct request *req, void *data, bool reserved)
 
 static void nbd_clear_que(struct nbd_device *nbd)
 {
-       blk_mq_stop_hw_queues(nbd->disk->queue);
+       blk_mq_quiesce_queue(nbd->disk->queue);
        blk_mq_tagset_busy_iter(&nbd->tag_set, nbd_clear_req, NULL);
-       blk_mq_start_hw_queues(nbd->disk->queue);
+       blk_mq_unquiesce_queue(nbd->disk->queue);
        dev_dbg(disk_to_dev(nbd->disk), "queue cleared\n");
 }