Commit d1a987f3 authored by Jens Axboe's avatar Jens Axboe
Browse files

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
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -207,11 +207,12 @@ int elevator_init(struct request_queue *q, char *name)
	}

	/*
	 * Use the default elevator specified by config boot param or
	 * config option.  Don't try to load modules as we could be running
	 * off async and request_module() isn't allowed from async.
	 * Use the default elevator specified by config boot param for
	 * non-mq devices, or by config option. Don't try to load modules
	 * 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);
		if (!e)
			printk(KERN_ERR "I/O scheduler %s not found\n",