summaryrefslogtreecommitdiffstats
path: root/block/blk-mq.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2018-10-15 10:40:37 -0400
committerJens Axboe <axboe@kernel.dk>2018-10-15 22:05:18 -0400
commit9316a9ed6895c4ad2f0cde171d486f80c55d8283 (patch)
treef72148bad015f286fad4b38d09b2d740dcfa0fcc /block/blk-mq.c
parentde038597be8809619c4f17d70e86dab936bb1a10 (diff)
blk-mq: provide helper for setting up an SQ queue and tag set
This pattern is repeated throughout all the blk-mq conversions. Provide a basic helper to get it done. Reviewed-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-mq.c')
-rw-r--r--block/blk-mq.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c
index c2ecd64a2403..dcf10e39995a 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -2507,6 +2507,39 @@ struct request_queue *blk_mq_init_queue(struct blk_mq_tag_set *set)
2507} 2507}
2508EXPORT_SYMBOL(blk_mq_init_queue); 2508EXPORT_SYMBOL(blk_mq_init_queue);
2509 2509
2510/*
2511 * Helper for setting up a queue with mq ops, given queue depth, and
2512 * the passed in mq ops flags.
2513 */
2514struct request_queue *blk_mq_init_sq_queue(struct blk_mq_tag_set *set,
2515 const struct blk_mq_ops *ops,
2516 unsigned int queue_depth,
2517 unsigned int set_flags)
2518{
2519 struct request_queue *q;
2520 int ret;
2521
2522 memset(set, 0, sizeof(*set));
2523 set->ops = ops;
2524 set->nr_hw_queues = 1;
2525 set->queue_depth = queue_depth;
2526 set->numa_node = NUMA_NO_NODE;
2527 set->flags = set_flags;
2528
2529 ret = blk_mq_alloc_tag_set(set);
2530 if (ret)
2531 return ERR_PTR(ret);
2532
2533 q = blk_mq_init_queue(set);
2534 if (IS_ERR(q)) {
2535 blk_mq_free_tag_set(set);
2536 return q;
2537 }
2538
2539 return q;
2540}
2541EXPORT_SYMBOL(blk_mq_init_sq_queue);
2542
2510static int blk_mq_hw_ctx_size(struct blk_mq_tag_set *tag_set) 2543static int blk_mq_hw_ctx_size(struct blk_mq_tag_set *tag_set)
2511{ 2544{
2512 int hw_ctx_size = sizeof(struct blk_mq_hw_ctx); 2545 int hw_ctx_size = sizeof(struct blk_mq_hw_ctx);