---
 block/cfq-iosched.c |   20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

Index: linux-2.6.20-ck1/block/cfq-iosched.c
===================================================================
--- linux-2.6.20-ck1.orig/block/cfq-iosched.c	2007-03-02 10:16:56.000000000 +1100
+++ linux-2.6.20-ck1/block/cfq-iosched.c	2007-03-02 11:18:11.000000000 +1100
@@ -21,8 +21,8 @@ static const int cfq_fifo_expire[2] = { 
 static const int cfq_back_max = 16 * 1024;	/* maximum backwards seek, in KiB */
 static const int cfq_back_penalty = 2;		/* penalty of a backwards seek */
 
-static const int cfq_slice_sync = HZ / 10;
-static int cfq_slice_async = HZ / 25;
+static const int cfq_base_sync_ms = 3;
+static int cfq_base_async_ms = 1;
 static const int cfq_slice_async_rq = 2;
 static int cfq_slice_idle = HZ / 125;
 
@@ -845,10 +845,15 @@ static inline int
 cfq_prio_to_slice(struct cfq_data *cfqd, struct cfq_queue *cfqq)
 {
 	const int base_slice = cfqd->cfq_slice[cfq_cfqq_sync(cfqq)];
+	int slice_ticks = base_slice;
 
 	WARN_ON(cfqq->ioprio >= IOPRIO_BE_NR);
 
-	return base_slice + (base_slice/CFQ_SLICE_SCALE * (4 - cfqq->ioprio));
+	if (cfqq->ioprio < IOPRIO_BE_NR - 1)
+		slice_ticks = base_slice << (IOPRIO_BE_NR + 1 - cfqq->ioprio);
+	/* Convert to ticks with a minimum of 1 */
+	slice_ticks = (slice_ticks * HZ / 1001) + 1;
+	return slice_ticks;
 }
 
 static inline void
@@ -2030,8 +2035,8 @@ static void *cfq_init_queue(request_queu
 	cfqd->cfq_fifo_expire[1] = cfq_fifo_expire[1];
 	cfqd->cfq_back_max = cfq_back_max;
 	cfqd->cfq_back_penalty = cfq_back_penalty;
-	cfqd->cfq_slice[0] = cfq_slice_async;
-	cfqd->cfq_slice[1] = cfq_slice_sync;
+	cfqd->cfq_slice[0] = cfq_base_async_ms;
+	cfqd->cfq_slice[1] = cfq_base_sync_ms;
 	cfqd->cfq_slice_async_rq = cfq_slice_async_rq;
 	cfqd->cfq_slice_idle = cfq_slice_idle;
 
@@ -2179,11 +2184,6 @@ static int __init cfq_init(void)
 {
 	int ret;
 
-	/*
-	 * could be 0 on HZ < 1000 setups
-	 */
-	if (!cfq_slice_async)
-		cfq_slice_async = 1;
 	if (!cfq_slice_idle)
 		cfq_slice_idle = 1;
 
