diff for duplicates of <1491438735.2787.18.camel@sandisk.com> diff --git a/a/1.txt b/N1/1.txt index d5dd1f2..7dadd1f 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,34 +1,28 @@ On Wed, 2017-04-05 at 17:16 -0700, Long Li wrote: -> Under heavy I/O, one hardware queue may be unable to dispatch any I/O to = -the=20 -> 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 deadloc= -k. ->=20 -> With this patch, we check for all possible stalled hardware queues when I= -/O +> 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. ->=20 +> > Signed-off-by: Long Li <longli@microsoft.com> > --- > block/blk-mq-sched.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) ->=20 +> > 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) +> @@ -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 =3D blk_mq_dispatch_rq_list(hctx, &rq_list); +> did_work = blk_mq_dispatch_rq_list(hctx, &rq_list); > } else if (!has_sched_dispatch) { > blk_mq_flush_busy_ctxs(hctx, &rq_list); @@ -36,4 +30,4 @@ Please drop this patch. I'm working on a better solution. Thanks, -Bart.= +Bart. diff --git a/a/content_digest b/N1/content_digest index bd68c2e..8c4285e 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -12,36 +12,30 @@ "\00:1\0" "b\0" "On Wed, 2017-04-05 at 17:16 -0700, Long Li wrote:\n" - "> Under heavy I/O, one hardware queue may be unable to dispatch any I/O to =\n" - "the=20\n" - "> device layer. This poses a problem with restarting this hardware queue on=\n" - " I/O\n" - "> finish in blk_mq_sched_restart_queues(), becaue there is nothing pending =\n" - "that\n" - "> will finish in future on this hardware qeueu. This will result in deadloc=\n" - "k.\n" - ">=20\n" - "> With this patch, we check for all possible stalled hardware queues when I=\n" - "/O\n" + "> Under heavy I/O, one hardware queue may be unable to dispatch any I/O to the \n" + "> device layer. This poses a problem with restarting this hardware queue on I/O\n" + "> finish in blk_mq_sched_restart_queues(), becaue there is nothing pending that\n" + "> will finish in future on this hardware qeueu. This will result in deadlock.\n" + "> \n" + "> With this patch, we check for all possible stalled hardware queues when I/O\n" "> finishes on any hardware queues. This prevents this deadlock.\n" - ">=20\n" + "> \n" "> Signed-off-by: Long Li <longli@microsoft.com>\n" "> ---\n" "> block/blk-mq-sched.c | 2 +-\n" "> 1 file changed, 1 insertion(+), 1 deletion(-)\n" - ">=20\n" + "> \n" "> diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c\n" "> index 09af8ff..f7f3d44 100644\n" "> --- a/block/blk-mq-sched.c\n" "> +++ b/block/blk-mq-sched.c\n" - "> @@ -202,7 +202,7 @@ void blk_mq_sched_dispatch_requests(struct blk_mq_hw_=\n" - "ctx *hctx)\n" + "> @@ -202,7 +202,7 @@ void blk_mq_sched_dispatch_requests(struct blk_mq_hw_ctx *hctx)\n" "> \t * needing a restart in that case.\n" "> \t */\n" "> \tif (!list_empty(&rq_list)) {\n" "> -\t\tblk_mq_sched_mark_restart_hctx(hctx);\n" "> +\t\tblk_mq_sched_mark_restart_queue(hctx);\n" - "> \t\tdid_work =3D blk_mq_dispatch_rq_list(hctx, &rq_list);\n" + "> \t\tdid_work = blk_mq_dispatch_rq_list(hctx, &rq_list);\n" "> \t} else if (!has_sched_dispatch) {\n" "> \t\tblk_mq_flush_busy_ctxs(hctx, &rq_list);\n" "\n" @@ -49,6 +43,6 @@ "\n" "Thanks,\n" "\n" - Bart.= + Bart. -bcfad26f06a76ff554a30aba8fb6de5020ac0ab83ecf4f287f0ee1349448c2b9 +e4dff1b78cc11237469a7902e3ce37d691f0e1af4de66fac2fcfd15f86c68f5a
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.