提交 248d5ca5 编写于 作者: N Nate Diller 提交者: Jens Axboe

[BLOCK] elevator: allow default scheduler to potentially be modular

Jens has decided that allowing the default scheduler to be a module is
a bug, and should not be allowed under kconfig.  However, I find that
scenario useful for debugging, and wish for the kernel to be able to
handle this situation without OOPSing, if I enable such an option in
the .config directly.  This patch dynamically checks for the presence
of the compiled-in default, and falls back to no-op, emitting a
suitable error message, when the default is not available

Tested for a range of boot options on 2.6.16-rc1-mm2.
Signed-off-by: NNate Diller <nate.diller@gmail.com>
Signed-off-by: NJens Axboe <axboe@suse.de>
上级 5f003976
...@@ -168,10 +168,12 @@ int elevator_init(request_queue_t *q, char *name) ...@@ -168,10 +168,12 @@ int elevator_init(request_queue_t *q, char *name)
if (name && !(e = elevator_get(name))) if (name && !(e = elevator_get(name)))
return -EINVAL; return -EINVAL;
if (!e && !(e = elevator_get(chosen_elevator))) { if (!e && *chosen_elevator && !(e = elevator_get(chosen_elevator)))
e = elevator_get(CONFIG_DEFAULT_IOSCHED); printk("I/O scheduler %s not found\n", chosen_elevator);
if (*chosen_elevator)
printk("I/O scheduler %s not found\n", chosen_elevator); if (!e && !(e = elevator_get(CONFIG_DEFAULT_IOSCHED))) {
printk("Default I/O scheduler not found, using no-op\n");
e = elevator_get("noop");
} }
eq = kmalloc(sizeof(struct elevator_queue), GFP_KERNEL); eq = kmalloc(sizeof(struct elevator_queue), GFP_KERNEL);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册