Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 131dda7f authored by Nate Diller's avatar Nate Diller Committed by Linus Torvalds
Browse files

[PATCH] block cleanups: Add kconfig default iosched submenu



Add a kconfig submenu to select the default I/O scheduler, in case
anticipatory is not compiled in or another default is preferred.  Also,
since no-op is always available, we should use it whenever the selected
default is not.

Signed-off-by: default avatarNate Diller <nate@namesys.com>
Acked-by: default avatarJens Axboe <axboe@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6dd69f10
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -38,4 +38,32 @@ config IOSCHED_CFQ
	  among all processes in the system. It should provide a fair
	  working environment, suitable for desktop systems.

choice
	prompt "Default I/O scheduler"
	default DEFAULT_AS
	help
	  Select the I/O scheduler which will be used by default for all
	  block devices.

	config DEFAULT_AS
		bool "Anticipatory" if IOSCHED_AS

	config DEFAULT_DEADLINE
		bool "Deadline" if IOSCHED_DEADLINE

	config DEFAULT_CFQ
		bool "CFQ" if IOSCHED_CFQ

	config DEFAULT_NOOP
		bool "No-op"

endchoice

config DEFAULT_IOSCHED
	string
	default "anticipatory" if DEFAULT_AS
	default "deadline" if DEFAULT_DEADLINE
	default "cfq" if DEFAULT_CFQ
	default "noop" if DEFAULT_NOOP

endmenu
+10 −17
Original line number Diff line number Diff line
@@ -147,24 +147,17 @@ static void elevator_setup_default(void)
	struct elevator_type *e;

	/*
	 * check if default is set and exists
	 * If default has not been set, use the compiled-in selection.
	 */
	if (chosen_elevator[0] && (e = elevator_get(chosen_elevator))) {
		elevator_put(e);
		return;
	}
	if (!chosen_elevator[0])
		strcpy(chosen_elevator, CONFIG_DEFAULT_IOSCHED);

#if defined(CONFIG_IOSCHED_AS)
	strcpy(chosen_elevator, "anticipatory");
#elif defined(CONFIG_IOSCHED_DEADLINE)
	strcpy(chosen_elevator, "deadline");
#elif defined(CONFIG_IOSCHED_CFQ)
	strcpy(chosen_elevator, "cfq");
#elif defined(CONFIG_IOSCHED_NOOP)
 	/*
 	 * If the given scheduler is not available, fall back to no-op.
 	 */
 	if (!(e = elevator_find(chosen_elevator)))
 		strcpy(chosen_elevator, "noop");
#else
#error "You must build at least 1 IO scheduler into the kernel"
#endif
	elevator_put(e);
}

static int __init elevator_setup(char *str)