diff options
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 7e13f04b5ed4..20a54b8e03e1 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -2446,12 +2446,22 @@ static void cfq_exit_queue(struct elevator_queue *e) | |||
2446 | static void *cfq_init_queue(struct request_queue *q) | 2446 | static void *cfq_init_queue(struct request_queue *q) |
2447 | { | 2447 | { |
2448 | struct cfq_data *cfqd; | 2448 | struct cfq_data *cfqd; |
2449 | int i; | ||
2449 | 2450 | ||
2450 | cfqd = kmalloc_node(sizeof(*cfqd), GFP_KERNEL | __GFP_ZERO, q->node); | 2451 | cfqd = kmalloc_node(sizeof(*cfqd), GFP_KERNEL | __GFP_ZERO, q->node); |
2451 | if (!cfqd) | 2452 | if (!cfqd) |
2452 | return NULL; | 2453 | return NULL; |
2453 | 2454 | ||
2454 | cfqd->service_tree = CFQ_RB_ROOT; | 2455 | cfqd->service_tree = CFQ_RB_ROOT; |
2456 | |||
2457 | /* | ||
2458 | * Not strictly needed (since RB_ROOT just clears the node and we | ||
2459 | * zeroed cfqd on alloc), but better be safe in case someone decides | ||
2460 | * to add magic to the rb code | ||
2461 | */ | ||
2462 | for (i = 0; i < CFQ_PRIO_LISTS; i++) | ||
2463 | cfqd->prio_trees[i] = RB_ROOT; | ||
2464 | |||
2455 | INIT_LIST_HEAD(&cfqd->cic_list); | 2465 | INIT_LIST_HEAD(&cfqd->cic_list); |
2456 | 2466 | ||
2457 | cfqd->queue = q; | 2467 | cfqd->queue = q; |