Messages in this thread Patch in this message | | | Date | Tue, 27 Sep 2005 15:20:07 -0700 | From | Nate Diller <> | Subject | [PATCH 2/3] 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.
I saw a patch recently to add this option, and I don't think it got picked up. This version is cleaner, since it eliminates all the #ifdef's in the code itself.
Thanks
NATE
Signed-off-by: Nate Diller <nate@namesys.com>
---
Kconfig.iosched | 28 ++++++++++++++++++++++++++++ elevator.c | 24 +++++++++--------------- 2 files changed, 37 insertions(+), 15 deletions(-)
diff -urpN a/drivers/block/elevator.c b/drivers/block/elevator.c --- a/drivers/block/elevator.c 2005-09-26 19:17:59.000000000 -0700 +++ b/drivers/block/elevator.c 2005-09-27 11:05:15.000000000 -0700 @@ -153,23 +153,17 @@ static char chosen_elevator[16];
static void elevator_setup_default(void) { - /* - * check if default is set and exists + /* + * If default has not been set, use the compiled-in selection. */ - if (chosen_elevator[0] && elevator_find(chosen_elevator)) - 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) - strcpy(chosen_elevator, "noop"); -#else -#error "You must build at least 1 IO scheduler into the kernel" -#endif + /* + * If the given scheduler is not available, fall back to no-op. + */ + if (!elevator_find(chosen_elevator)) + strcpy(chosen_elevator, "noop"); }
static int __init elevator_setup(char *str) diff -urpN a/drivers/block/Kconfig.iosched b/drivers/block/Kconfig.iosched --- a/drivers/block/Kconfig.iosched 2005-08-28 16:41:01.000000000 -0700 +++ b/drivers/block/Kconfig.iosched 2005-09-26 20:14:06.000000000 -0700 @@ -38,4 +28,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 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |