diff options
author | Jens Axboe <axboe@fb.com> | 2017-02-22 13:19:45 -0700 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-02-22 13:19:45 -0700 |
commit | b86dd815ff74ab9eda474d1c28428ac0db2c3032 (patch) | |
tree | d2492456261c6394b10ec03e53a6d75180986ef6 /block/elevator.c | |
parent | eed64951f15d63beac75e0f848ac03c14f8a4a6c (diff) | |
download | lwn-b86dd815ff74ab9eda474d1c28428ac0db2c3032.tar.gz lwn-b86dd815ff74ab9eda474d1c28428ac0db2c3032.zip |
block: get rid of blk-mq default scheduler choice Kconfig entries
The wording in the entries were poor and not understandable
by even deities. Kill the selection for default block scheduler,
and impose a policy with sane defaults.
Architected-by: Linus Torvalds <torvalds@linux-foundation.org>
Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/elevator.c')
-rw-r--r-- | block/elevator.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/block/elevator.c b/block/elevator.c index 699d10f71a2c..ac1c9f481a98 100644 --- a/block/elevator.c +++ b/block/elevator.c @@ -220,17 +220,24 @@ int elevator_init(struct request_queue *q, char *name) } if (!e) { - if (q->mq_ops && q->nr_hw_queues == 1) - e = elevator_get(CONFIG_DEFAULT_SQ_IOSCHED, false); - else if (q->mq_ops) - e = elevator_get(CONFIG_DEFAULT_MQ_IOSCHED, false); - else + /* + * For blk-mq devices, we default to using mq-deadline, + * if available, for single queue devices. If deadline + * isn't available OR we have multiple queues, default + * to "none". + */ + if (q->mq_ops) { + if (q->nr_hw_queues == 1) + e = elevator_get("mq-deadline", false); + if (!e) + return 0; + } else e = elevator_get(CONFIG_DEFAULT_IOSCHED, false); if (!e) { printk(KERN_ERR "Default I/O scheduler not found. " \ - "Using noop/none.\n"); + "Using noop.\n"); e = elevator_get("noop", false); } } |