Commit d1a987f3 authored by Jens Axboe's avatar Jens Axboe

elevator: fix loading wrong elevator type for blk-mq devices

The old elevator= boot parameter blindly attempts to load the
same scheduler for mq and !mq devices, leading to a crash if
we specify the wrong one.

Ensure that we only apply this boot parameter to old !mq devices.
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent c5c9b26e
...@@ -207,11 +207,12 @@ int elevator_init(struct request_queue *q, char *name) ...@@ -207,11 +207,12 @@ int elevator_init(struct request_queue *q, char *name)
} }
/* /*
* Use the default elevator specified by config boot param or * Use the default elevator specified by config boot param for
* config option. Don't try to load modules as we could be running * non-mq devices, or by config option. Don't try to load modules
* off async and request_module() isn't allowed from async. * as we could be running off async and request_module() isn't
* allowed from async.
*/ */
if (!e && *chosen_elevator) { if (!e && !q->mq_ops && *chosen_elevator) {
e = elevator_get(chosen_elevator, false); e = elevator_get(chosen_elevator, false);
if (!e) if (!e)
printk(KERN_ERR "I/O scheduler %s not found\n", printk(KERN_ERR "I/O scheduler %s not found\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment