Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1617440

[PATCH] block-mq: set both block queue and hardware queue restart bit for restart

From Long Li <longli@exchange.microsoft.com>
Newsgroups linux.kernel
Subject [PATCH] block-mq: set both block queue and hardware queue restart bit for restart
Date 2017-04-06 02:20 +0200
Message-ID <tt3jz-18Z-9@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


From: Long Li <longli@microsoft.com>

Under heavy I/O, one hardware queue may be unable to dispatch any I/O to the 
device layer. This poses a problem with restarting this hardware queue on I/O
finish in blk_mq_sched_restart_queues(), becaue there is nothing pending that
will finish in future on this hardware qeueu. This will result in deadlock.

With this patch, we check for all possible stalled hardware queues when I/O
finishes on any hardware queues. This prevents this deadlock.

Signed-off-by: Long Li <longli@microsoft.com>
---
 block/blk-mq-sched.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c
index 09af8ff..f7f3d44 100644
--- a/block/blk-mq-sched.c
+++ b/block/blk-mq-sched.c
@@ -202,7 +202,7 @@ void blk_mq_sched_dispatch_requests(struct blk_mq_hw_ctx *hctx)
 	 * needing a restart in that case.
 	 */
 	if (!list_empty(&rq_list)) {
-		blk_mq_sched_mark_restart_hctx(hctx);
+		blk_mq_sched_mark_restart_queue(hctx);
 		did_work = blk_mq_dispatch_rq_list(hctx, &rq_list);
 	} else if (!has_sched_dispatch) {
 		blk_mq_flush_busy_ctxs(hctx, &rq_list);
-- 
2.7.4

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH] block-mq: set both block queue and hardware queue restart bit for restart Long Li <longli@exchange.microsoft.com> - 2017-04-06 02:20 +0200
  Re: [PATCH] block-mq: set both block queue and hardware queue restart  bit for restart Bart Van Assche <Bart.VanAssche@sandisk.com> - 2017-04-06 02:40 +0200
    RE: [PATCH] block-mq: set both block queue and hardware queue restart  bit for restart Long Li <longli@microsoft.com> - 2017-04-06 05:40 +0200
      Re: [PATCH] block-mq: set both block queue and hardware queue restart  bit for restart Bart Van Assche <Bart.VanAssche@sandisk.com> - 2017-04-06 05:50 +0200
        RE: [PATCH] block-mq: set both block queue and hardware queue restart  bit for restart KY Srinivasan <kys@microsoft.com> - 2017-04-06 06:30 +0200
          RE: [PATCH] block-mq: set both block queue and hardware queue restart  bit for restart Long Li <longli@microsoft.com> - 2017-04-06 07:40 +0200

csiph-web