The following commit has been merged in the linux branch: commit ec60e4f6749daf535329dac571293cf19c627aff Author: Corrado Zoccolo czoccolo@gmail.com Date: Wed Oct 7 19:51:54 2009 +0200
cfq-iosched: fix think time allowed for seekers
CFQ enables idle only for processes that think less than the allowed idle time. Since idle time is lower for seeky queues, we should use the correct value in the comparison.
Signed-off-by: Corrado Zoccolo czoccolo@gmail.com Signed-off-by: Jens Axboe jens.axboe@oracle.com
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 4ab33d8..b35cc56 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c @@ -1995,7 +1995,10 @@ cfq_update_idle_window(struct cfq_data *cfqd, struct cfq_queue *cfqq, (!cfqd->cfq_latency && cfqd->hw_tag && CIC_SEEKY(cic))) enable_idle = 0; else if (sample_valid(cic->ttime_samples)) { - if (cic->ttime_mean > cfqd->cfq_slice_idle) + unsigned int slice_idle = cfqd->cfq_slice_idle; + if (sample_valid(cic->seek_samples) && CIC_SEEKY(cic)) + slice_idle = msecs_to_jiffies(CFQ_MIN_TT); + if (cic->ttime_mean > slice_idle) enable_idle = 0; else enable_idle = 1;