Commit b54ce60e authored by Gui Jianfeng's avatar Gui Jianfeng Committed by Jens Axboe

cfq-iosched: Get rid of st->active

When a cfq group is running, it won't be dequeued from service tree, so
there's no need to store the active one in st->active. Just gid rid of it.
Signed-off-by: default avatarGui Jianfeng <guijianfeng@cn.fujitsu.com>
Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>
Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
parent f30195c5
...@@ -87,7 +87,6 @@ struct cfq_rb_root { ...@@ -87,7 +87,6 @@ struct cfq_rb_root {
unsigned count; unsigned count;
unsigned total_weight; unsigned total_weight;
u64 min_vdisktime; u64 min_vdisktime;
struct rb_node *active;
}; };
#define CFQ_RB_ROOT (struct cfq_rb_root) { .rb = RB_ROOT, .left = NULL, \ #define CFQ_RB_ROOT (struct cfq_rb_root) { .rb = RB_ROOT, .left = NULL, \
.count = 0, .min_vdisktime = 0, } .count = 0, .min_vdisktime = 0, }
...@@ -563,11 +562,6 @@ static void update_min_vdisktime(struct cfq_rb_root *st) ...@@ -563,11 +562,6 @@ static void update_min_vdisktime(struct cfq_rb_root *st)
u64 vdisktime = st->min_vdisktime; u64 vdisktime = st->min_vdisktime;
struct cfq_group *cfqg; struct cfq_group *cfqg;
if (st->active) {
cfqg = rb_entry_cfqg(st->active);
vdisktime = cfqg->vdisktime;
}
if (st->left) { if (st->left) {
cfqg = rb_entry_cfqg(st->left); cfqg = rb_entry_cfqg(st->left);
vdisktime = min_vdisktime(vdisktime, cfqg->vdisktime); vdisktime = min_vdisktime(vdisktime, cfqg->vdisktime);
...@@ -894,9 +888,6 @@ cfq_group_service_tree_del(struct cfq_data *cfqd, struct cfq_group *cfqg) ...@@ -894,9 +888,6 @@ cfq_group_service_tree_del(struct cfq_data *cfqd, struct cfq_group *cfqg)
{ {
struct cfq_rb_root *st = &cfqd->grp_service_tree; struct cfq_rb_root *st = &cfqd->grp_service_tree;
if (st->active == &cfqg->rb_node)
st->active = NULL;
BUG_ON(cfqg->nr_cfqq < 1); BUG_ON(cfqg->nr_cfqq < 1);
cfqg->nr_cfqq--; cfqg->nr_cfqq--;
...@@ -1095,7 +1086,7 @@ static void cfq_put_cfqg(struct cfq_group *cfqg) ...@@ -1095,7 +1086,7 @@ static void cfq_put_cfqg(struct cfq_group *cfqg)
if (!atomic_dec_and_test(&cfqg->ref)) if (!atomic_dec_and_test(&cfqg->ref))
return; return;
for_each_cfqg_st(cfqg, i, j, st) for_each_cfqg_st(cfqg, i, j, st)
BUG_ON(!RB_EMPTY_ROOT(&st->rb) || st->active != NULL); BUG_ON(!RB_EMPTY_ROOT(&st->rb));
kfree(cfqg); kfree(cfqg);
} }
...@@ -1687,9 +1678,6 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq, ...@@ -1687,9 +1678,6 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq,
if (cfqq == cfqd->active_queue) if (cfqq == cfqd->active_queue)
cfqd->active_queue = NULL; cfqd->active_queue = NULL;
if (&cfqq->cfqg->rb_node == cfqd->grp_service_tree.active)
cfqd->grp_service_tree.active = NULL;
if (cfqd->active_cic) { if (cfqd->active_cic) {
put_io_context(cfqd->active_cic->ioc); put_io_context(cfqd->active_cic->ioc);
cfqd->active_cic = NULL; cfqd->active_cic = NULL;
...@@ -2199,7 +2187,6 @@ static struct cfq_group *cfq_get_next_cfqg(struct cfq_data *cfqd) ...@@ -2199,7 +2187,6 @@ static struct cfq_group *cfq_get_next_cfqg(struct cfq_data *cfqd)
if (RB_EMPTY_ROOT(&st->rb)) if (RB_EMPTY_ROOT(&st->rb))
return NULL; return NULL;
cfqg = cfq_rb_first_group(st); cfqg = cfq_rb_first_group(st);
st->active = &cfqg->rb_node;
update_min_vdisktime(st); update_min_vdisktime(st);
return cfqg; return cfqg;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment