From: Nate Diller <nate.diller@gmail.com>
To: Jens Axboe <axboe@suse.de>
Cc: Andrew Morton <akpm@osdl.org>,
cmm@us.ibm.com, seelam@cs.utep.edu, linux-kernel@vger.kernel.org,
ext2-devel@lists.sourceforge.net
Subject: [PATCH 1/2][RESEND] Default iosched fixes (was: Fall back io scheduler for 2.6.15?)
Date: Fri, 20 Jan 2006 15:17:34 -0800 [thread overview]
Message-ID: <5c49b0ed0601201517h3126ac8dp931bab93a85bf9c5@mail.gmail.com> (raw)
In-Reply-To: <20060120081145.GD4213@suse.de>
My previous default iosched patch did a poor job dealing with the
'elevator=' boot-time option. The old behavior falls back to the
compiled-in default if the requested one is not registered at boot
time. This patch dynamically evaluates which default
to use, and emits a suitable error message when the requested scheduler
is not available. It also does the 'as' -> 'anticipatory' conversion
before elevator registration, which along with a modified registration
function, allows it to correctly indicate which default scheduler is
in use.
Tested for a range of boot options on 2.6.16-rc1-mm2.
Signed-off-by: Nate Diller <nate.diller@gmail.com>
---
Jens: i'm submitting this seperately from the objectionable 'modular
default scheduler' check. Is there anything else I should change?
--- ./block/elevator.c 2006-01-20 13:47:16.000000000 -0800
+++ ./block/elevator.c 2006-01-20 14:52:53.000000000 -0800
@@ -140,35 +140,16 @@ static int elevator_attach(request_queue
static char chosen_elevator[16];
-static void elevator_setup_default(void)
+static int __init elevator_setup(char *str)
{
- struct elevator_type *e;
-
- /*
- * If default has not been set, use the compiled-in selection.
- */
- if (!chosen_elevator[0])
- strcpy(chosen_elevator, CONFIG_DEFAULT_IOSCHED);
-
/*
* Be backwards-compatible with previous kernels, so users
* won't get the wrong elevator.
*/
- if (!strcmp(chosen_elevator, "as"))
+ if (!strcmp(str, "as"))
strcpy(chosen_elevator, "anticipatory");
-
- /*
- * If the given scheduler is not available, fall back to the default
- */
- if ((e = elevator_find(chosen_elevator)))
- elevator_put(e);
else
- strcpy(chosen_elevator, CONFIG_DEFAULT_IOSCHED);
-}
-
-static int __init elevator_setup(char *str)
-{
- strncpy(chosen_elevator, str, sizeof(chosen_elevator) - 1);
+ strncpy(chosen_elevator, str, sizeof(chosen_elevator) - 1);
return 0;
}
@@ -185,15 +166,15 @@ int elevator_init(request_queue_t *q, ch
q->end_sector = 0;
q->boundary_rq = NULL;
- elevator_setup_default();
-
- if (!name)
- name = chosen_elevator;
-
- e = elevator_get(name);
- if (!e)
+ if (name && !(e = elevator_get(name)))
return -EINVAL;
+ if (!e && !(e = elevator_get(chosen_elevator))) {
+ e = elevator_get(CONFIG_DEFAULT_IOSCHED);
+ if (*chosen_elevator)
+ printk("I/O scheduler %s not found\n", chosen_elevator);
+ }
+
eq = kmalloc(sizeof(struct elevator_queue), GFP_KERNEL);
if (!eq) {
elevator_put(e);
@@ -681,8 +662,10 @@ int elv_register(struct elevator_type *e
spin_unlock_irq(&elv_list_lock);
printk(KERN_INFO "io scheduler %s registered", e->elevator_name);
- if (!strcmp(e->elevator_name, chosen_elevator))
- printk(" (default)");
+ if (!strcmp(e->elevator_name, chosen_elevator) ||
+ (!*chosen_elevator &&
+ !strcmp(e->elevator_name, CONFIG_DEFAULT_IOSCHED)))
+ printk(" (default)");
printk("\n");
return 0;
}
next prev parent reply other threads:[~2006-01-20 23:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-20 0:04 [PATCH] " Nate Diller
2006-01-20 8:11 ` Jens Axboe
2006-01-20 23:17 ` Nate Diller [this message]
2006-01-20 23:24 ` [PATCH 2/2][RESEND] " Nate Diller
2006-01-21 11:40 ` Jens Axboe
2006-01-21 11:48 ` [PATCH 1/2][RESEND] " Jens Axboe
2006-01-23 19:50 ` Nate Diller
2006-01-23 21:02 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5c49b0ed0601201517h3126ac8dp931bab93a85bf9c5@mail.gmail.com \
--to=nate.diller@gmail.com \
--cc=akpm@osdl.org \
--cc=axboe@suse.de \
--cc=cmm@us.ibm.com \
--cc=ext2-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=seelam@cs.utep.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®