[PATCH 5/9] block: Extend blk_freeze_queue_start() to the non-blk-mq path
Bart Van Assche
bart.vanassche at sandisk.com
Tue Sep 27 07:42:57 PDT 2016
On 09/27/16 06:22, Ming Lei wrote:
> On Tue, Sep 27, 2016 at 2:27 AM, Bart Van Assche
> <bart.vanassche at sandisk.com> wrote:
>> Signed-off-by: Bart Van Assche <bart.vanassche at sandisk.com>
>> ---
>> 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.
More information about the Linux-nvme
mailing list