Patch "blk-mq: Do not invoke .queue_rq() for a stopped queue" has been added to the 4.8-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
blk-mq: Do not invoke .queue_rq() for a stopped queue
to the 4.8-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
blk-mq-do-not-invoke-.queue_rq-for-a-stopped-queue.patch
and it can be found in the queue-4.8 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
bc27c01b5c46d3bfec42c96537c7a3fae0bb2cc4Mon Sep 17 00:00:00 2001
From: Bart Van Assche <[email protected]>
Date: Fri, 28 Oct 2016 17:18:48 -0700
Subject: blk-mq: Do not invoke .queue_rq() for a stopped queue
From: Bart Van Assche <[email protected]>
commit bc27c01b5c46d3bfec42c96537c7a3fae0bb2cc4 upstream.
The meaning of the BLK_MQ_S_STOPPED flag is "do not call .queue_rq()". Hence modify blk_mq_make_request() such that requests are queued instead of issued if a queue has been stopped.
--- block/blk-mq.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
block/blk-mq.c +3 -3
@@ -1371,9 +1371,9 @@ static blk_qc_t blk_mq_make_request(strublk_mq_put_ctx (data.ctx);if (!old_rq) goto done; -if (!blk_mq_direct_issue_request (old_rq, &cookie)) - goto done; -blk_mq_insert_request (old_rq, false, true, true); +if (test_bit (BLK_MQ_S_STOPPED , &data.hctx->state) || +blk_mq_direct_issue_request (old_rq, &cookie) !=0 ) +blk_mq_insert_request (old_rq, false, true, true); goto done; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.8/dm-rq-fix-a-race-condition-in-rq_completed.patch queue-4.8/blk-mq-do-not-invoke-.queue_rq-for-a-stopped-queue.patch queue-4.8/dm-table-fix-all_blk_mq-inconsistency-when-an-empty-table-is-loaded.patch queue-4.8/dm-table-an-all_blk_mq-table-must-be-loaded-for-a-blk-mq-dm-device.patch