cfq-iosched: clear ->prio_trees[] on cfqd alloc
authorJens Axboe <jens.axboe@oracle.com>
Thu, 23 Apr 2009 10:13:27 +0000 (12:13 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Fri, 24 Apr 2009 06:54:22 +0000 (08:54 +0200)
Not strictly needed, but we should make it clear that we init the
rbtree roots here.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
block/cfq-iosched.c

index 7e13f04b5ed485514bd3d82b3858cfeb35e13be6..20a54b8e03e1c0ec4cdd1dd6d2485c20d2ba6f44 100644 (file)
@@ -2446,12 +2446,22 @@ static void cfq_exit_queue(struct elevator_queue *e)
 static void *cfq_init_queue(struct request_queue *q)
 {
        struct cfq_data *cfqd;
+       int i;
 
        cfqd = kmalloc_node(sizeof(*cfqd), GFP_KERNEL | __GFP_ZERO, q->node);
        if (!cfqd)
                return NULL;
 
        cfqd->service_tree = CFQ_RB_ROOT;
+
+       /*
+        * Not strictly needed (since RB_ROOT just clears the node and we
+        * zeroed cfqd on alloc), but better be safe in case someone decides
+        * to add magic to the rb code
+        */
+       for (i = 0; i < CFQ_PRIO_LISTS; i++)
+               cfqd->prio_trees[i] = RB_ROOT;
+
        INIT_LIST_HEAD(&cfqd->cic_list);
 
        cfqd->queue = q;