From 4881ddd10b2cccc902762dbf402274ff108db7c2 Mon Sep 17 00:00:00 2001 From: Arianna Avanzini Date: Tue, 4 Feb 2014 12:41:30 +0100 Subject: [PATCH] block: Switch from BFQ-v7r2 for 3.10.0 to BFQ-v7r2 for 3.10.8+ Signed-off-by: Paolo Valente Signed-off-by: Arianna Avanzini --- block/bfq-iosched.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index ac3b3dc..d3626df 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c @@ -3155,14 +3155,22 @@ static void bfq_exit_queue(struct elevator_queue *e) kfree(bfqd); } -static int bfq_init_queue(struct request_queue *q) +static int bfq_init_queue(struct request_queue *q, struct elevator_type *e) { struct bfq_group *bfqg; struct bfq_data *bfqd; + struct elevator_queue *eq; + + eq = elevator_alloc(q, e); + if (eq == NULL) + return -ENOMEM; bfqd = kzalloc_node(sizeof(*bfqd), GFP_KERNEL, q->node); - if (bfqd == NULL) + if (bfqd == NULL) { + kobject_put(&eq->kobj); return -ENOMEM; + } + eq->elevator_data = bfqd; /* * Our fallback bfqq if bfq_find_alloc_queue() runs into OOM issues. @@ -3173,11 +3181,15 @@ static int bfq_init_queue(struct request_queue *q) atomic_inc(&bfqd->oom_bfqq.ref); bfqd->queue = q; - q->elevator->elevator_data = bfqd; + + spin_lock_irq(q->queue_lock); + q->elevator = eq; + spin_unlock_irq(q->queue_lock); bfqg = bfq_alloc_root_group(bfqd, q->node); if (bfqg == NULL) { kfree(bfqd); + kobject_put(&eq->kobj); return -ENOMEM; } -- 1.8.5.3