diff options
author | Mark Brown <broonie@linaro.org> | 2013-08-21 12:53:05 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-08-21 12:53:05 +0100 |
commit | 4c4ca6a49f1a580666912153b8501331f7b4f379 (patch) | |
tree | dffa1560a0aa36a3fc46121fd8f49de135834635 /block/elevator.c | |
parent | a3cf22a4a40437cf8fe366078548e0d2c55c01a7 (diff) | |
parent | 0a4b6d4ff200a553951f77f765971cb3e4c91ec0 (diff) |
Merge tag 'v3.10.9' into linux-linaro-lsk
This is the 3.10.9 stable release
Diffstat (limited to 'block/elevator.c')
-rw-r--r-- | block/elevator.c | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/block/elevator.c b/block/elevator.c index eba5b04c29b..668394d1858 100644 --- a/block/elevator.c +++ b/block/elevator.c @@ -150,7 +150,7 @@ void __init load_default_elevator_module(void) static struct kobj_type elv_ktype; -static struct elevator_queue *elevator_alloc(struct request_queue *q, +struct elevator_queue *elevator_alloc(struct request_queue *q, struct elevator_type *e) { struct elevator_queue *eq; @@ -170,6 +170,7 @@ err: elevator_put(e); return NULL; } +EXPORT_SYMBOL(elevator_alloc); static void elevator_release(struct kobject *kobj) { @@ -221,16 +222,7 @@ int elevator_init(struct request_queue *q, char *name) } } - q->elevator = elevator_alloc(q, e); - if (!q->elevator) - return -ENOMEM; - - err = e->ops.elevator_init_fn(q); - if (err) { - kobject_put(&q->elevator->kobj); - return err; - } - + err = e->ops.elevator_init_fn(q, e); return 0; } EXPORT_SYMBOL(elevator_init); @@ -935,16 +927,9 @@ static int elevator_switch(struct request_queue *q, struct elevator_type *new_e) spin_unlock_irq(q->queue_lock); /* allocate, init and register new elevator */ - err = -ENOMEM; - q->elevator = elevator_alloc(q, new_e); - if (!q->elevator) - goto fail_init; - - err = new_e->ops.elevator_init_fn(q); - if (err) { - kobject_put(&q->elevator->kobj); + err = new_e->ops.elevator_init_fn(q, new_e); + if (err) goto fail_init; - } if (registered) { err = elv_register_queue(q); |