Skip to contentSkip to conversation

cfq-iosched: Fix update_vdisktime logic

PATCH In review Gui Jianfeng 3 participants 4 messages Jan 25, 2011 – Mar 7, 2011 Block layer

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 cfq-iosched: Fix update_vdisktime logic

The update_vdisktime logic is broken since commit b54ce60eb7f61f8e314b8b241b0469eda3bb1d42, st->min_vdisktime never makes a progress. Fix it.

Thanks Vivek for pointing it out.

---
 block/cfq-iosched.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)
block/cfq-iosched.c +2 -4
index f083bda..8c28f56 100644
@@ -558,15 +558,13 @@ static inline u64 min_vdisktime(u64 min_vdisktime, u64 vdisktime)
 
 static void update_min_vdisktime(struct cfq_rb_root *st)
 {
-	u64 vdisktime = st->min_vdisktime;
 	struct cfq_group *cfqg;
 
 	if (st->left) {
 		cfqg = rb_entry_cfqg(st->left);
-		vdisktime = min_vdisktime(vdisktime, cfqg->vdisktime);
+		st->min_vdisktime = max_vdisktime(st->min_vdisktime,
+						  cfqg->vdisktime);
 	}
-
-	st->min_vdisktime = max_vdisktime(st->min_vdisktime, vdisktime);
 }
 
 /*
Signature · 1 line
1.7.1
Acked-by on v1 1/1
#1 lore raw
Quoted 6 lines · Gui Jianfeng

The update_vdisktime logic is broken since commit b54ce60eb7f61f8e314b8b241b0469eda3bb1d42, st->min_vdisktime never makes a progress. Fix it.

Thanks Vivek for pointing it out.

Thanks Gui. Looks good to me.

Thanks
Vivek

Quoted 28 lines
---
 block/cfq-iosched.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)
block/cfq-iosched.c +2 -4
index f083bda..8c28f56 100644
@@ -558,15 +558,13 @@ static inline u64 min_vdisktime(u64 min_vdisktime, u64 vdisktime)
 
 static void update_min_vdisktime(struct cfq_rb_root *st)
 {
-	u64 vdisktime = st->min_vdisktime;
 	struct cfq_group *cfqg;
 
 	if (st->left) {
 		cfqg = rb_entry_cfqg(st->left);
-		vdisktime = min_vdisktime(vdisktime, cfqg->vdisktime);
+		st->min_vdisktime = max_vdisktime(st->min_vdisktime,
+						  cfqg->vdisktime);
 	}
-
-	st->min_vdisktime = max_vdisktime(st->min_vdisktime, vdisktime);
 }
 
 /*
Signature · 1 line
1.7.1
#2 lore raw
Quoted 11 lines · Vivek Goyal
Quoted 6 lines · Gui Jianfeng

The update_vdisktime logic is broken since commit b54ce60eb7f61f8e314b8b241b0469eda3bb1d42, st->min_vdisktime never makes a progress. Fix it.

Thanks Vivek for pointing it out.

Thanks Gui. Looks good to me.

Jens, Would you pick up this fix?

Thanks,
Gui

Quoted 33 lines

Thanks
Vivek

Quoted 28 lines
---
 block/cfq-iosched.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)
block/cfq-iosched.c +2 -4
index f083bda..8c28f56 100644
@@ -558,15 +558,13 @@ static inline u64 min_vdisktime(u64 min_vdisktime, u64 vdisktime)
 
 static void update_min_vdisktime(struct cfq_rb_root *st)
 {
-	u64 vdisktime = st->min_vdisktime;
 	struct cfq_group *cfqg;
 
 	if (st->left) {
 		cfqg = rb_entry_cfqg(st->left);
-		vdisktime = min_vdisktime(vdisktime, cfqg->vdisktime);
+		st->min_vdisktime = max_vdisktime(st->min_vdisktime,
+						  cfqg->vdisktime);
 	}
-
-	st->min_vdisktime = max_vdisktime(st->min_vdisktime, vdisktime);
 }
 
 /*
Signature · 1 line
1.7.1
maintainer
#3 lore raw
Quoted 7 lines · Gui Jianfeng
Quoted 6 lines · Vivek Goyal
Quoted 5 lines · Gui Jianfeng

The update_vdisktime logic is broken since commit b54ce60eb7f61f8e314b8b241b0469eda3bb1d42, st->min_vdisktime never makes a progress. Fix it.

Thanks Vivek for pointing it out.

Quoted 7 lines
Quoted 5 lines
Quoted 1 line

Thanks Gui. Looks good to me.

Jens, Would you pick up this fix?

Done, applied. Thanks.

Signature · 1 line
Jens Axboe