summaryrefslogtreecommitdiffstats
path: root/block/elevator.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2012-03-05 22:14:57 +0100
committerJens Axboe <axboe@kernel.dk>2012-03-06 21:27:21 +0100
commitb2fab5acd28ead6f0dd6c3996ba23f0ef1772f15 (patch)
treeb0b96984e1a4d9c856edc9ddfc36e427951c5a86 /block/elevator.c
parentelevator: clear auxiliary data earlier during elevator switch (diff)
downloadlinux-b2fab5acd28ead6f0dd6c3996ba23f0ef1772f15.tar.xz
linux-b2fab5acd28ead6f0dd6c3996ba23f0ef1772f15.zip
elevator: make elevator_init_fn() return 0/-errno
elevator_ops->elevator_init_fn() has a weird return value. It returns a void * which the caller should assign to q->elevator->elevator_data and %NULL return denotes init failure. Update such that it returns integer 0/-errno and sets elevator_data directly as necessary. This makes the interface more conventional and eases further cleanup. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/elevator.c')
-rw-r--r--block/elevator.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/block/elevator.c b/block/elevator.c
index f8c08e1bff2b..f81c061dad15 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -121,14 +121,6 @@ static struct elevator_type *elevator_get(const char *name)
return e;
}
-static int elevator_init_queue(struct request_queue *q)
-{
- q->elevator->elevator_data = q->elevator->type->ops.elevator_init_fn(q);
- if (q->elevator->elevator_data)
- return 0;
- return -ENOMEM;
-}
-
static char chosen_elevator[ELV_NAME_MAX];
static int __init elevator_setup(char *str)
@@ -224,7 +216,7 @@ int elevator_init(struct request_queue *q, char *name)
if (!q->elevator)
return -ENOMEM;
- err = elevator_init_queue(q);
+ err = e->ops.elevator_init_fn(q);
if (err) {
kobject_put(&q->elevator->kobj);
return err;
@@ -927,7 +919,7 @@ static int elevator_switch(struct request_queue *q, struct elevator_type *new_e)
if (!q->elevator)
goto fail_init;
- err = elevator_init_queue(q);
+ err = new_e->ops.elevator_init_fn(q);
if (err) {
kobject_put(&q->elevator->kobj);
goto fail_init;