Thread (31 messages) 31 messages, 8 authors, 2016-10-11

Re: [PATCH 5/9] block: Extend blk_freeze_queue_start() to the non-blk-mq path

From: Ming Lei <tom.leiming@gmail.com>
Date: 2016-09-27 13:22:06
Also in: linux-nvme, linux-rdma, linux-scsi

On Tue, Sep 27, 2016 at 2:27 AM, Bart Van Assche
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
Signed-off-by: Bart Van Assche <redacted>
---
 block/blk-core.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index 8cc8006..5ecc7ab 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -689,7 +689,10 @@ void blk_freeze_queue_start(struct request_queue *q)
        freeze_depth = atomic_inc_return(&q->mq_freeze_depth);
        if (freeze_depth == 1) {
                percpu_ref_kill(&q->q_usage_counter);
-               blk_mq_run_hw_queues(q, false);
+               if (q->mq_ops)
+                       blk_mq_run_hw_queues(q, false);
+               else if (q->request_fn)
+                       blk_run_queue(q);
Just wondering if you have a non-blk-mq drivers which need this change,
cause we only hold .q_usage_counter for sync bio.
quoted hunk ↗ jump to hunk
        }
 }
@@ -700,17 +703,11 @@ void blk_freeze_queue_wait(struct request_queue *q)

 /*
  * Guarantee no request is in use, so we can change any data structure of
- * the queue afterward.
+ * the queue afterward. Increases q->mq_freeze_depth and waits until
+ * q->q_usage_counter drops to zero.
  */
 void blk_freeze_queue(struct request_queue *q)
 {
-       /*
-        * In the !blk_mq case we are only calling this to kill the
-        * q_usage_counter, otherwise this increases the freeze depth
-        * and waits for it to return to zero.  For this reason there is
-        * no blk_unfreeze_queue(), and blk_freeze_queue() is not
-        * exported to drivers as the only user for unfreeze is blk_mq.
-        */
        blk_freeze_queue_start(q);
        blk_freeze_queue_wait(q);
 }
--
2.10.0

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
Ming Lei
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help