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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/27/16 06:22, Ming Lei wrote:
On Tue, Sep 27, 2016 at 2:27 AM, Bart Van Assche
<bart.vanassche@xxxxxxxxxxx> wrote:
Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxxxxxx>
---
 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.

Hello Ming Lei,

Patch 8/9 calls blk_quiesce_queue() and blk_resume_queue() from a code path that is used in both blk-mq and non-blk-mq mode. Although it wouldn't be hard to modify that patch such that it only uses these two functions in blk-mq mode, that wouldn't be very elegant.

Jens, regarding non-blk-mq mode and q_usage_counter: do you prefer that I rework patch 8/9 such that blk_quiesce_queue() and blk_resume_queue() are only used in blk-mq mode or are you OK with adding a blk_queue_enter() call in get_request() and a blk_queue_exit() call to __blk_put_request()?

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



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux