From: Jens Axboe <axboe@kernel.dk> To: linux-block@vger.kernel.org, linux-nvme@lists.infradead.org Cc: Jens Axboe <axboe@kernel.dk> Subject: [PATCH 01/14] blk-mq: kill q->mq_map Date: Thu, 25 Oct 2018 15:16:13 -0600 [thread overview] Message-ID: <20181025211626.12692-2-axboe@kernel.dk> (raw) In-Reply-To: <20181025211626.12692-1-axboe@kernel.dk> It's just a pointer to set->mq_map, use that instead. Signed-off-by: Jens Axboe <axboe@kernel.dk> --- block/blk-mq.c | 13 ++++--------- block/blk-mq.h | 4 +++- include/linux/blkdev.h | 2 -- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/block/blk-mq.c b/block/blk-mq.c index 21e4147c4810..22d5beaab5a0 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2321,7 +2321,7 @@ static void blk_mq_map_swqueue(struct request_queue *q) * If the cpu isn't present, the cpu is mapped to first hctx. */ for_each_possible_cpu(i) { - hctx_idx = q->mq_map[i]; + hctx_idx = set->mq_map[i]; /* unmapped hw queue can be remapped after CPU topo changed */ if (!set->tags[hctx_idx] && !__blk_mq_alloc_rq_map(set, hctx_idx)) { @@ -2331,7 +2331,7 @@ static void blk_mq_map_swqueue(struct request_queue *q) * case, remap the current ctx to hctx[0] which * is guaranteed to always have tags allocated */ - q->mq_map[i] = 0; + set->mq_map[i] = 0; } ctx = per_cpu_ptr(q->queue_ctx, i); @@ -2429,8 +2429,6 @@ static void blk_mq_del_queue_tag_set(struct request_queue *q) static void blk_mq_add_queue_tag_set(struct blk_mq_tag_set *set, struct request_queue *q) { - q->tag_set = set; - mutex_lock(&set->tag_list_lock); /* @@ -2467,8 +2465,6 @@ void blk_mq_release(struct request_queue *q) kobject_put(&hctx->kobj); } - q->mq_map = NULL; - kfree(q->queue_hw_ctx); /* @@ -2588,7 +2584,7 @@ static void blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set, int node; struct blk_mq_hw_ctx *hctx; - node = blk_mq_hw_queue_to_node(q->mq_map, i); + node = blk_mq_hw_queue_to_node(set->mq_map, i); /* * If the hw queue has been mapped to another numa node, * we need to realloc the hctx. If allocation fails, fallback @@ -2665,8 +2661,6 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, if (!q->queue_hw_ctx) goto err_percpu; - q->mq_map = set->mq_map; - blk_mq_realloc_hw_ctxs(set, q); if (!q->nr_hw_queues) goto err_hctxs; @@ -2675,6 +2669,7 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, blk_queue_rq_timeout(q, set->timeout ? set->timeout : 30 * HZ); q->nr_queues = nr_cpu_ids; + q->tag_set = set; q->queue_flags |= QUEUE_FLAG_MQ_DEFAULT; diff --git a/block/blk-mq.h b/block/blk-mq.h index 9497b47e2526..9536be06d022 100644 --- a/block/blk-mq.h +++ b/block/blk-mq.h @@ -75,7 +75,9 @@ extern int blk_mq_hw_queue_to_node(unsigned int *map, unsigned int); static inline struct blk_mq_hw_ctx *blk_mq_map_queue(struct request_queue *q, int cpu) { - return q->queue_hw_ctx[q->mq_map[cpu]]; + struct blk_mq_tag_set *set = q->tag_set; + + return q->queue_hw_ctx[set->mq_map[cpu]]; } /* diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 82b6cf45c6e0..6e506044a309 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -415,8 +415,6 @@ struct request_queue { const struct blk_mq_ops *mq_ops; - unsigned int *mq_map; - /* sw queues */ struct blk_mq_ctx __percpu *queue_ctx; unsigned int nr_queues; -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: axboe@kernel.dk (Jens Axboe) Subject: [PATCH 01/14] blk-mq: kill q->mq_map Date: Thu, 25 Oct 2018 15:16:13 -0600 [thread overview] Message-ID: <20181025211626.12692-2-axboe@kernel.dk> (raw) In-Reply-To: <20181025211626.12692-1-axboe@kernel.dk> It's just a pointer to set->mq_map, use that instead. Signed-off-by: Jens Axboe <axboe at kernel.dk> --- block/blk-mq.c | 13 ++++--------- block/blk-mq.h | 4 +++- include/linux/blkdev.h | 2 -- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/block/blk-mq.c b/block/blk-mq.c index 21e4147c4810..22d5beaab5a0 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2321,7 +2321,7 @@ static void blk_mq_map_swqueue(struct request_queue *q) * If the cpu isn't present, the cpu is mapped to first hctx. */ for_each_possible_cpu(i) { - hctx_idx = q->mq_map[i]; + hctx_idx = set->mq_map[i]; /* unmapped hw queue can be remapped after CPU topo changed */ if (!set->tags[hctx_idx] && !__blk_mq_alloc_rq_map(set, hctx_idx)) { @@ -2331,7 +2331,7 @@ static void blk_mq_map_swqueue(struct request_queue *q) * case, remap the current ctx to hctx[0] which * is guaranteed to always have tags allocated */ - q->mq_map[i] = 0; + set->mq_map[i] = 0; } ctx = per_cpu_ptr(q->queue_ctx, i); @@ -2429,8 +2429,6 @@ static void blk_mq_del_queue_tag_set(struct request_queue *q) static void blk_mq_add_queue_tag_set(struct blk_mq_tag_set *set, struct request_queue *q) { - q->tag_set = set; - mutex_lock(&set->tag_list_lock); /* @@ -2467,8 +2465,6 @@ void blk_mq_release(struct request_queue *q) kobject_put(&hctx->kobj); } - q->mq_map = NULL; - kfree(q->queue_hw_ctx); /* @@ -2588,7 +2584,7 @@ static void blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set, int node; struct blk_mq_hw_ctx *hctx; - node = blk_mq_hw_queue_to_node(q->mq_map, i); + node = blk_mq_hw_queue_to_node(set->mq_map, i); /* * If the hw queue has been mapped to another numa node, * we need to realloc the hctx. If allocation fails, fallback @@ -2665,8 +2661,6 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, if (!q->queue_hw_ctx) goto err_percpu; - q->mq_map = set->mq_map; - blk_mq_realloc_hw_ctxs(set, q); if (!q->nr_hw_queues) goto err_hctxs; @@ -2675,6 +2669,7 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, blk_queue_rq_timeout(q, set->timeout ? set->timeout : 30 * HZ); q->nr_queues = nr_cpu_ids; + q->tag_set = set; q->queue_flags |= QUEUE_FLAG_MQ_DEFAULT; diff --git a/block/blk-mq.h b/block/blk-mq.h index 9497b47e2526..9536be06d022 100644 --- a/block/blk-mq.h +++ b/block/blk-mq.h @@ -75,7 +75,9 @@ extern int blk_mq_hw_queue_to_node(unsigned int *map, unsigned int); static inline struct blk_mq_hw_ctx *blk_mq_map_queue(struct request_queue *q, int cpu) { - return q->queue_hw_ctx[q->mq_map[cpu]]; + struct blk_mq_tag_set *set = q->tag_set; + + return q->queue_hw_ctx[set->mq_map[cpu]]; } /* diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 82b6cf45c6e0..6e506044a309 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -415,8 +415,6 @@ struct request_queue { const struct blk_mq_ops *mq_ops; - unsigned int *mq_map; - /* sw queues */ struct blk_mq_ctx __percpu *queue_ctx; unsigned int nr_queues; -- 2.17.1
next prev parent reply other threads:[~2018-10-25 21:16 UTC|newest] Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-10-25 21:16 [PATCHSET 0/14] Add support for multiple queue maps Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-25 21:16 ` Jens Axboe [this message] 2018-10-25 21:16 ` [PATCH 01/14] blk-mq: kill q->mq_map Jens Axboe 2018-10-27 14:19 ` jianchao.wang 2018-10-27 14:19 ` jianchao.wang 2018-10-27 16:48 ` Jens Axboe 2018-10-27 16:48 ` Jens Axboe 2018-10-27 16:52 ` Jens Axboe 2018-10-27 16:52 ` Jens Axboe 2018-10-29 2:02 ` jianchao.wang 2018-10-29 2:02 ` jianchao.wang 2018-10-29 2:40 ` jianchao.wang 2018-10-29 2:40 ` jianchao.wang 2018-10-29 3:00 ` Jens Axboe 2018-10-29 3:00 ` Jens Axboe 2018-10-29 9:03 ` jianchao.wang 2018-10-29 9:03 ` jianchao.wang 2018-10-28 16:10 ` Christoph Hellwig 2018-10-28 16:10 ` Christoph Hellwig 2018-10-29 7:27 ` Hannes Reinecke 2018-10-29 7:27 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 02/14] blk-mq: abstract out queue map Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:30 ` Hannes Reinecke 2018-10-29 7:30 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 03/14] blk-mq: provide dummy blk_mq_map_queue_type() helper Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:30 ` Hannes Reinecke 2018-10-29 7:30 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 04/14] blk-mq: pass in request/bio flags to queue mapping Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:35 ` Hannes Reinecke 2018-10-29 7:35 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 05/14] blk-mq: allow software queue to map to multiple hardware queues Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:37 ` Hannes Reinecke 2018-10-29 7:37 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 06/14] blk-mq: add 'type' attribute to the sysfs hctx directory Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:38 ` Hannes Reinecke 2018-10-29 7:38 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 07/14] blk-mq: support multiple hctx maps Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:39 ` Hannes Reinecke 2018-10-29 7:39 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 08/14] blk-mq: separate number of hardware queues from nr_cpu_ids Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:40 ` Hannes Reinecke 2018-10-29 7:40 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 09/14] blk-mq: ensure that plug lists don't straddle hardware queues Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:40 ` Hannes Reinecke 2018-10-29 7:40 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 10/14] blk-mq: initial support for multiple queue maps Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:41 ` Hannes Reinecke 2018-10-29 7:41 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 11/14] irq: add support for allocating (and affinitizing) sets of IRQs Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-25 21:52 ` Keith Busch 2018-10-25 21:52 ` Keith Busch 2018-10-25 23:07 ` Jens Axboe 2018-10-25 23:07 ` Jens Axboe 2018-10-29 7:43 ` Hannes Reinecke 2018-10-29 7:43 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 12/14] nvme: utilize two queue maps, one for reads and one for writes Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:46 ` Hannes Reinecke 2018-10-29 7:46 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 13/14] block: add REQ_HIPRI and inherit it from IOCB_HIPRI Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:47 ` Hannes Reinecke 2018-10-29 7:47 ` Hannes Reinecke 2018-10-25 21:16 ` [PATCH 14/14] nvme: add separate poll queue map Jens Axboe 2018-10-25 21:16 ` Jens Axboe 2018-10-29 7:48 ` Hannes Reinecke 2018-10-29 7:48 ` Hannes Reinecke 2018-10-29 16:37 [PATCHSET v2 0/14] blk-mq: Add support for multiple queue maps Jens Axboe 2018-10-29 16:37 ` [PATCH 01/14] blk-mq: kill q->mq_map Jens Axboe 2018-10-29 16:46 ` Bart Van Assche 2018-10-29 16:51 ` Jens Axboe
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20181025211626.12692-2-axboe@kernel.dk \ --to=axboe@kernel.dk \ --cc=linux-block@vger.kernel.org \ --cc=linux-nvme@lists.infradead.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.