diff for duplicates of <1483601585.2811.5.camel@sandisk.com> diff --git a/a/1.txt b/N1/1.txt index db77879..c6b5220 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,4 +1,4 @@ -On Wed, 2017-01-04 at 17:41 -0500, Keith Busch wrote: +On Wed, 2017-01-04@17:41 -0500, Keith Busch wrote: > +static void blk_mq_abandon_stopped_requests(struct request_queue *q) > +{ > + int i; @@ -12,8 +12,8 @@ On Wed, 2017-01-04 at 17:41 -0500, Keith Busch wrote: > + list_for_each_entry_safe(rq, next, &q->requeue_list, queuelist) { > + struct blk_mq_ctx *ctx; > + -> + ctx =3D rq->mq_ctx; -> + hctx =3D blk_mq_map_queue(q, ctx->cpu); +> + ctx = rq->mq_ctx; +> + hctx = blk_mq_map_queue(q, ctx->cpu); > + if (blk_mq_hctx_stopped(hctx)) { > + list_del_init(&rq->queuelist); > + @@ -37,17 +37,16 @@ On Wed, 2017-01-04 at 17:41 -0500, Keith Busch wrote: > + spin_unlock(&q->requeue_lock); > + > + while (!list_empty(&rq_list)) { -> + rq =3D list_first_entry(&rq_list, struct request, queuelist); +> + rq = list_first_entry(&rq_list, struct request, queuelist); > + list_del_init(&rq->queuelist); -> + rq->errors =3D -EAGAIN; +> + rq->errors = -EAGAIN; > + blk_mq_end_request(rq, rq->errors); > + } > +} Hello Keith, -This patch adds a second code path to the blk-mq core for running queues an= -d +This patch adds a second code path to the blk-mq core for running queues and hence will make the blk-mq core harder to maintain. Have you considered to implement this functionality by introducing a new "fail all requests" flag for hctx queues such that blk_mq_abandon_stopped_requests() can reuse the diff --git a/a/content_digest b/N1/content_digest index 7fae5ed..1f548b0 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,19 +1,11 @@ "ref\01483569671-1462-1-git-send-email-keith.busch@intel.com\0" "ref\01483569671-1462-6-git-send-email-keith.busch@intel.com\0" - "From\0Bart Van Assche <Bart.VanAssche@sandisk.com>\0" - "Subject\0Re: [PATCH 5/6] blk-mq: Fix queue freeze deadlock\0" + "From\0Bart.VanAssche@sandisk.com (Bart Van Assche)\0" + "Subject\0[PATCH 5/6] blk-mq: Fix queue freeze deadlock\0" "Date\0Thu, 5 Jan 2017 07:33:22 +0000\0" - "To\0hch@lst.de <hch@lst.de>" - tglx@linutronix.de <tglx@linutronix.de> - keith.busch@intel.com <keith.busch@intel.com> - linux-nvme@lists.infradead.org <linux-nvme@lists.infradead.org> - linux-block@vger.kernel.org <linux-block@vger.kernel.org> - axboe@fb.com <axboe@fb.com> - " axboe@kernel.dk <axboe@kernel.dk>\0" - "Cc\0marc@merlins.org <marc@merlins.org>\0" "\00:1\0" "b\0" - "On Wed, 2017-01-04 at 17:41 -0500, Keith Busch wrote:\n" + "On Wed, 2017-01-04@17:41 -0500, Keith Busch wrote:\n" "> +static void blk_mq_abandon_stopped_requests(struct request_queue *q)\n" "> +{\n" "> +\tint i;\n" @@ -27,8 +19,8 @@ "> +\tlist_for_each_entry_safe(rq, next, &q->requeue_list, queuelist) {\n" "> +\t\tstruct blk_mq_ctx *ctx;\n" "> +\n" - "> +\t\tctx =3D rq->mq_ctx;\n" - "> +\t\thctx =3D blk_mq_map_queue(q, ctx->cpu);\n" + "> +\t\tctx = rq->mq_ctx;\n" + "> +\t\thctx = blk_mq_map_queue(q, ctx->cpu);\n" "> +\t\tif (blk_mq_hctx_stopped(hctx)) {\n" "> +\t\t\tlist_del_init(&rq->queuelist);\n" "> +\n" @@ -52,17 +44,16 @@ "> +\tspin_unlock(&q->requeue_lock);\n" "> +\n" "> +\twhile (!list_empty(&rq_list)) {\n" - "> +\t\trq =3D list_first_entry(&rq_list, struct request, queuelist);\n" + "> +\t\trq = list_first_entry(&rq_list, struct request, queuelist);\n" "> +\t\tlist_del_init(&rq->queuelist);\n" - "> +\t\trq->errors =3D -EAGAIN;\n" + "> +\t\trq->errors = -EAGAIN;\n" "> +\t\tblk_mq_end_request(rq, rq->errors);\n" "> +\t}\n" "> +}\n" "\n" "Hello Keith,\n" "\n" - "This patch adds a second code path to the blk-mq core for running queues an=\n" - "d\n" + "This patch adds a second code path to the blk-mq core for running queues and\n" "hence will make the blk-mq core harder to maintain. Have you considered to\n" "implement this functionality by introducing a new \"fail all requests\" flag\n" "for hctx queues such that blk_mq_abandon_stopped_requests() can reuse the\n" @@ -70,4 +61,4 @@ "\n" Bart. -6dcc362d331a06826aeb33bad6c81450da0f182faf00e531264d72ad61dd5160 +8302702a3d797ec160aaa1799734a7b7704b810e770c9e48ca480ab13d91eb3d
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.