[PATCH 19/20] blkio: Arm slice timer even if there are requests in driver

From: Vivek Goyal
Date: Tue Nov 03 2009 - 18:45:11 EST

o To ensure fairness for a group, we need to make sure at the time of expiry
queue is backlogged and does not get deleted from the service tree. That
means for sequential workload, wait for next request before expiry.

o Sometimes we dispatch a request from a queue and we do not wait busy on the
queue because arm_slice_timer() does not arm slice idle timer because it
thinks there are requests in driver. Further down in select_cfq_queue()
we expire the cfqq because time slice expired and queue looses its share
(vtime jump). Hence idle timer even if there are requests in the driver.

Signed-off-by: Vivek Goyal <vgoyal@xxxxxxxxxx>
block/cfq-iosched.c | 6 ------
1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 963659a..d609a10 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1690,12 +1690,6 @@ static bool cfq_arm_slice_timer(struct cfq_data *cfqd, int reset)
return false;

- * still requests with the driver, don't idle
- */
- if (rq_in_driver(cfqd))
- return false;
- /*
* task has exited, don't wait
cic = cfqd->active_cic;

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/