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>hifive-unleashed-5.1
parent
de038597be
commit
9316a9ed68
|
@ -2507,6 +2507,39 @@ struct request_queue *blk_mq_init_queue(struct blk_mq_tag_set *set)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(blk_mq_init_queue);
|
EXPORT_SYMBOL(blk_mq_init_queue);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helper for setting up a queue with mq ops, given queue depth, and
|
||||||
|
* the passed in mq ops flags.
|
||||||
|
*/
|
||||||
|
struct request_queue *blk_mq_init_sq_queue(struct blk_mq_tag_set *set,
|
||||||
|
const struct blk_mq_ops *ops,
|
||||||
|
unsigned int queue_depth,
|
||||||
|
unsigned int set_flags)
|
||||||
|
{
|
||||||
|
struct request_queue *q;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
memset(set, 0, sizeof(*set));
|
||||||
|
set->ops = ops;
|
||||||
|
set->nr_hw_queues = 1;
|
||||||
|
set->queue_depth = queue_depth;
|
||||||
|
set->numa_node = NUMA_NO_NODE;
|
||||||
|
set->flags = set_flags;
|
||||||
|
|
||||||
|
ret = blk_mq_alloc_tag_set(set);
|
||||||
|
if (ret)
|
||||||
|
return ERR_PTR(ret);
|
||||||
|
|
||||||
|
q = blk_mq_init_queue(set);
|
||||||
|
if (IS_ERR(q)) {
|
||||||
|
blk_mq_free_tag_set(set);
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(blk_mq_init_sq_queue);
|
||||||
|
|
||||||
static int blk_mq_hw_ctx_size(struct blk_mq_tag_set *tag_set)
|
static int blk_mq_hw_ctx_size(struct blk_mq_tag_set *tag_set)
|
||||||
{
|
{
|
||||||
int hw_ctx_size = sizeof(struct blk_mq_hw_ctx);
|
int hw_ctx_size = sizeof(struct blk_mq_hw_ctx);
|
||||||
|
|
|
@ -203,6 +203,10 @@ enum {
|
||||||
struct request_queue *blk_mq_init_queue(struct blk_mq_tag_set *);
|
struct request_queue *blk_mq_init_queue(struct blk_mq_tag_set *);
|
||||||
struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
|
struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
|
||||||
struct request_queue *q);
|
struct request_queue *q);
|
||||||
|
struct request_queue *blk_mq_init_sq_queue(struct blk_mq_tag_set *set,
|
||||||
|
const struct blk_mq_ops *ops,
|
||||||
|
unsigned int queue_depth,
|
||||||
|
unsigned int set_flags);
|
||||||
int blk_mq_register_dev(struct device *, struct request_queue *);
|
int blk_mq_register_dev(struct device *, struct request_queue *);
|
||||||
void blk_mq_unregister_dev(struct device *, struct request_queue *);
|
void blk_mq_unregister_dev(struct device *, struct request_queue *);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue