diff for duplicates of <1465363236.10841.13.camel@kernel.org> diff --git a/a/1.txt b/N1/1.txt index 3448e21..413ec67 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,19 +1,19 @@ -On Tue, 2016-06-07 at 22:49 -0600, Jens Axboe wrote: +On Tue, 2016-06-07@22:49 -0600, Jens Axboe wrote: > On 06/06/2016 03:21 PM, Christoph Hellwig wrote: -> > From: Ming Lin <ming.l@ssi.samsung.com> +> > From: Ming Lin <ming.l at ssi.samsung.com> > > > > For some protocols like NVMe over Fabrics we need to be able to > > send > > initialization commands to a specific queue. > > -> > Based on an earlier patch from Christoph Hellwig <hch@lst.de>. +> > Based on an earlier patch from Christoph Hellwig <hch at lst.de>. > > -> > Signed-off-by: Ming Lin <ming.l@ssi.samsung.com> -> > Signed-off-by: Christoph Hellwig <hch@lst.de> +> > Signed-off-by: Ming Lin <ming.l at ssi.samsung.com> +> > Signed-off-by: Christoph Hellwig <hch at lst.de> > > --- -> > block/blk-mq.c | 33 +++++++++++++++++++++++++++++++++ -> > include/linux/blk-mq.h | 2 ++ -> > 2 files changed, 35 insertions(+) +> > ? block/blk-mq.c?????????| 33 +++++++++++++++++++++++++++++++++ +> > ? include/linux/blk-mq.h |??2 ++ +> > ? 2 files changed, 35 insertions(+) > > > > diff --git a/block/blk-mq.c b/block/blk-mq.c > > index 29cbc1b..7bb45ed 100644 @@ -21,8 +21,8 @@ On Tue, 2016-06-07 at 22:49 -0600, Jens Axboe wrote: > > +++ b/block/blk-mq.c > > @@ -266,6 +266,39 @@ struct request *blk_mq_alloc_request(struct > > request_queue *q, int rw, -> > } -> > EXPORT_SYMBOL(blk_mq_alloc_request); +> > ? } +> > ? EXPORT_SYMBOL(blk_mq_alloc_request); > > > > +struct request *blk_mq_alloc_request_hctx(struct request_queue *q, > > int rw, @@ -47,7 +47,7 @@ On Tue, 2016-06-07 at 22:49 -0600, Jens Axboe wrote: > > + if (!rq && !(flags & BLK_MQ_REQ_NOWAIT)) { > > + __blk_mq_run_hw_queue(hctx); > > + -> > + rq = __blk_mq_alloc_request(&alloc_data, rw); +> > + rq =??__blk_mq_alloc_request(&alloc_data, rw); > > + } > > Why are we duplicating this code here? If NOWAIT isn't set, then @@ -72,26 +72,26 @@ Yes, But the bt_get() reminds me that this patch actually has a problem. blk_mq_alloc_request_hctx() -> - __blk_mq_alloc_request() -> - blk_mq_get_tag() -> - __blk_mq_get_tag() -> - bt_get() -> - blk_mq_put_ctx(data->ctx); +??__blk_mq_alloc_request() -> +? ??blk_mq_get_tag() ->? +? ? ??__blk_mq_get_tag() -> +? ? ? ??bt_get() -> +? ? ? ? ??blk_mq_put_ctx(data->ctx); Here are blk_mq_get_ctx() and blk_mq_put_ctx(). static inline struct blk_mq_ctx *blk_mq_get_ctx(struct request_queue *q) -{ - return __blk_mq_get_ctx(q, get_cpu()); -} +{??????? +????????return __blk_mq_get_ctx(q, get_cpu()); +}? static inline void blk_mq_put_ctx(struct blk_mq_ctx *ctx) { - put_cpu(); +????????put_cpu(); } -blk_mq_alloc_request_hctx() calls __blk_mq_get_ctx() instead -of blk_mq_get_ctx(). Then reason is the "hctx" could belong to other +blk_mq_alloc_request_hctx() calls?__blk_mq_get_ctx() instead +of?blk_mq_get_ctx(). Then reason is the "hctx" could belong to other cpu. So blk_mq_get_ctx() doesn't work. But then above put_cpu() in blk_mq_put_ctx() will trigger a WARNING diff --git a/a/content_digest b/N1/content_digest index 8b28879..d48a99a 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,33 +1,27 @@ "ref\01465248119-17875-1-git-send-email-hch@lst.de\0" "ref\01465248119-17875-2-git-send-email-hch@lst.de\0" "ref\05757A3D2.1030003@kernel.dk\0" - "From\0Ming Lin <mlin@kernel.org>\0" - "Subject\0Re: [PATCH 1/8] blk-mq: add blk_mq_alloc_request_hctx\0" + "From\0mlin@kernel.org (Ming Lin)\0" + "Subject\0[PATCH 1/8] blk-mq: add blk_mq_alloc_request_hctx\0" "Date\0Tue, 07 Jun 2016 22:20:36 -0700\0" - "To\0Jens Axboe <axboe@kernel.dk>" - Christoph Hellwig <hch@lst.de> - " keith.busch@intel.com\0" - "Cc\0linux-block@vger.kernel.org" - linux-kernel@vger.kernel.org - " linux-nvme@lists.infradead.org\0" "\00:1\0" "b\0" - "On Tue, 2016-06-07 at 22:49 -0600, Jens Axboe wrote:\n" + "On Tue, 2016-06-07@22:49 -0600, Jens Axboe wrote:\n" "> On 06/06/2016 03:21 PM, Christoph Hellwig wrote:\n" - "> > From: Ming Lin <ming.l@ssi.samsung.com>\n" + "> > From: Ming Lin <ming.l at ssi.samsung.com>\n" "> > \n" "> > For some protocols like NVMe over Fabrics we need to be able to\n" "> > send\n" "> > initialization commands to a specific queue.\n" "> > \n" - "> > Based on an earlier patch from Christoph Hellwig <hch@lst.de>.\n" + "> > Based on an earlier patch from Christoph Hellwig <hch at lst.de>.\n" "> > \n" - "> > Signed-off-by: Ming Lin <ming.l@ssi.samsung.com>\n" - "> > Signed-off-by: Christoph Hellwig <hch@lst.de>\n" + "> > Signed-off-by: Ming Lin <ming.l at ssi.samsung.com>\n" + "> > Signed-off-by: Christoph Hellwig <hch at lst.de>\n" "> > ---\n" - "> > \302\240 block/blk-mq.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 33 +++++++++++++++++++++++++++++++++\n" - "> > \302\240 include/linux/blk-mq.h |\302\240\302\2402 ++\n" - "> > \302\240 2 files changed, 35 insertions(+)\n" + "> > ? block/blk-mq.c?????????| 33 +++++++++++++++++++++++++++++++++\n" + "> > ? include/linux/blk-mq.h |??2 ++\n" + "> > ? 2 files changed, 35 insertions(+)\n" "> > \n" "> > diff --git a/block/blk-mq.c b/block/blk-mq.c\n" "> > index 29cbc1b..7bb45ed 100644\n" @@ -35,8 +29,8 @@ "> > +++ b/block/blk-mq.c\n" "> > @@ -266,6 +266,39 @@ struct request *blk_mq_alloc_request(struct\n" "> > request_queue *q, int rw,\n" - "> > \302\240 }\n" - "> > \302\240 EXPORT_SYMBOL(blk_mq_alloc_request);\n" + "> > ? }\n" + "> > ? EXPORT_SYMBOL(blk_mq_alloc_request);\n" "> > \n" "> > +struct request *blk_mq_alloc_request_hctx(struct request_queue *q,\n" "> > int rw,\n" @@ -61,7 +55,7 @@ "> > +\tif (!rq && !(flags & BLK_MQ_REQ_NOWAIT)) {\n" "> > +\t\t__blk_mq_run_hw_queue(hctx);\n" "> > +\n" - "> > +\t\trq =\302\240\302\240__blk_mq_alloc_request(&alloc_data, rw);\n" + "> > +\t\trq =??__blk_mq_alloc_request(&alloc_data, rw);\n" "> > +\t}\n" "> \n" "> Why are we duplicating this code here? If NOWAIT isn't set, then\n" @@ -86,29 +80,29 @@ "But the bt_get() reminds me that this patch actually has a problem.\n" "\n" "blk_mq_alloc_request_hctx() ->\n" - "\302\240\302\240__blk_mq_alloc_request() ->\n" - "\302\240 \302\240\302\240blk_mq_get_tag() ->\302\240\n" - "\302\240 \302\240 \302\240\302\240__blk_mq_get_tag() ->\n" - "\302\240 \302\240 \302\240 \302\240\302\240bt_get() ->\n" - "\302\240 \302\240 \302\240 \302\240 \302\240\302\240blk_mq_put_ctx(data->ctx);\n" + "??__blk_mq_alloc_request() ->\n" + "? ??blk_mq_get_tag() ->?\n" + "? ? ??__blk_mq_get_tag() ->\n" + "? ? ? ??bt_get() ->\n" + "? ? ? ? ??blk_mq_put_ctx(data->ctx);\n" "\n" "Here are blk_mq_get_ctx() and blk_mq_put_ctx().\n" "\n" "static inline struct blk_mq_ctx *blk_mq_get_ctx(struct request_queue *q)\n" - "{\302\240\302\240\302\240\302\240\302\240\302\240\302\240\n" - "\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return __blk_mq_get_ctx(q, get_cpu());\n" - "}\302\240\n" + "{???????\n" + "????????return __blk_mq_get_ctx(q, get_cpu());\n" + "}?\n" "\n" "static inline void blk_mq_put_ctx(struct blk_mq_ctx *ctx)\n" "{\n" - "\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240put_cpu();\n" + "????????put_cpu();\n" "}\n" "\n" - "blk_mq_alloc_request_hctx() calls\302\240__blk_mq_get_ctx() instead\n" - "of\302\240blk_mq_get_ctx(). Then reason is the \"hctx\" could belong to other\n" + "blk_mq_alloc_request_hctx() calls?__blk_mq_get_ctx() instead\n" + "of?blk_mq_get_ctx(). Then reason is the \"hctx\" could belong to other\n" "cpu. So blk_mq_get_ctx() doesn't work.\n" "\n" "But then above put_cpu() in blk_mq_put_ctx() will trigger a WARNING\n" because we didn't do get_cpu() in blk_mq_alloc_request_hctx() -038aee048f6488f6668b48f7d8d4a4704055e212c9620c3184a7c1611dd1e860 +0060534e0993d8ef84571b0b4d61eefc8c75f7ed0cd0a517e4d4f032f1b6193b
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.