[PATCH] CFQ: clarify code touching 'cic_index' a bit

From: Paul Bolle
Date: Wed Aug 03 2011 - 15:41:28 EST


Signed-off-by: Paul Bolle <pebolle@xxxxxxxxxx>
---
block/cfq-iosched.c | 17 ++++++++---------
1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 1f96ad6..601a24c 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -3948,39 +3948,38 @@ static void cfq_exit_queue(struct elevator_queue *e)
kfree(cfqd);
}

-static int cfq_alloc_cic_index(void)
+static int cfq_alloc_cic_index(int *cic_index)
{
- int index, error;
+ int error;

do {
if (!ida_pre_get(&cic_index_ida, GFP_KERNEL))
return -ENOMEM;

spin_lock(&cic_index_lock);
- error = ida_get_new(&cic_index_ida, &index);
+ error = ida_get_new(&cic_index_ida, cic_index);
spin_unlock(&cic_index_lock);
if (error && error != -EAGAIN)
return error;
} while (error);

- return index;
+ return 0;
}

static void *cfq_init_queue(struct request_queue *q)
{
struct cfq_data *cfqd;
- int i, j;
+ int i, j, cic_index;
struct cfq_group *cfqg;
struct cfq_rb_root *st;

- i = cfq_alloc_cic_index();
- if (i < 0)
+ if (cfq_alloc_cic_index(&cic_index))
return NULL;

cfqd = kmalloc_node(sizeof(*cfqd), GFP_KERNEL | __GFP_ZERO, q->node);
if (!cfqd) {
spin_lock(&cic_index_lock);
- ida_remove(&cic_index_ida, i);
+ ida_remove(&cic_index_ida, cic_index);
spin_unlock(&cic_index_lock);
return NULL;
}
@@ -3989,7 +3988,7 @@ static void *cfq_init_queue(struct request_queue *q)
* Don't need take queue_lock in the routine, since we are
* initializing the ioscheduler, and nobody is using cfqd
*/
- cfqd->cic_index = i;
+ cfqd->cic_index = cic_index;

/* Init root service tree */
cfqd->grp_service_tree = CFQ_RB_ROOT;
--
1.7.6



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/