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    [W:0.022 / U:0.812 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site