summaryrefslogtreecommitdiffstats
path: root/block/blk-mq.c
diff options
context:
space:
mode:
authorJens Axboe2017-01-13 22:43:58 +0100
committerJens Axboe2017-01-17 18:04:31 +0100
commitd34849913819a5e0cbfbe724dbe79df89278c524 (patch)
tree71b427fa3b22b30dc2038448ec06936018adaee4 /block/blk-mq.c
parentmq-deadline: add blk-mq adaptation of the deadline IO scheduler (diff)
downloadkernel-qcow2-linux-d34849913819a5e0cbfbe724dbe79df89278c524.tar.gz
kernel-qcow2-linux-d34849913819a5e0cbfbe724dbe79df89278c524.tar.xz
kernel-qcow2-linux-d34849913819a5e0cbfbe724dbe79df89278c524.zip
blk-mq-sched: allow setting of default IO scheduler
Add Kconfig entries to manage what devices get assigned an MQ scheduler, and add a blk-mq flag for drivers to opt out of scheduling. The latter is useful for admin type queues that still allocate a blk-mq queue and tag set, but aren't use for normal IO. Signed-off-by: Jens Axboe <axboe@fb.com> Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com> Reviewed-by: Omar Sandoval <osandov@fb.com>
Diffstat (limited to 'block/blk-mq.c')
-rw-r--r--block/blk-mq.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 45e1707a9f86..fa1f8619bfe7 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -2285,6 +2285,14 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
mutex_unlock(&all_q_mutex);
put_online_cpus();
+ if (!(set->flags & BLK_MQ_F_NO_SCHED)) {
+ int ret;
+
+ ret = blk_mq_sched_init(q);
+ if (ret)
+ return ERR_PTR(ret);
+ }
+
return q;
err_hctxs: