lkml.org 
[lkml]   [2005]   [Sep]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
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/
\
 
 \ /
  Last update: 2005-09-28 00:22    [from the cache]
©2003-2011 Jasper Spaans