diff --git a/block/blk-mq.c b/block/blk-mq.c index 96debbe63ad205793bbf78bbe7129cc65e9b25a0..41a3f6b89319121dd43090b263753595e78ba033 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2874,8 +2874,6 @@ static void blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set, struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, struct request_queue *q) { - int ret = -ENOMEM; - /* mark the queue as mq asap */ q->mq_ops = set->ops; @@ -2942,18 +2940,17 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, blk_mq_map_swqueue(q); if (!(set->flags & BLK_MQ_F_NO_SCHED)) { + int ret; + ret = elevator_init_mq(q); if (ret) - goto err_tag_set; + return ERR_PTR(ret); } return q; -err_tag_set: - blk_mq_del_queue_tag_set(q); err_hctxs: kfree(q->queue_hw_ctx); - q->nr_hw_queues = 0; err_sys_init: blk_mq_sysfs_deinit(q); err_exit: