aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorrado Zoccolo <czoccolo@gmail.com>2009-10-07 19:51:54 +0200
committerJens Axboe <jens.axboe@oracle.com>2009-10-07 19:51:54 +0200
commitec60e4f6749daf535329dac571293cf19c627aff (patch)
tree791e2a15281bf0a3b114af6f6c9c5b2d2b0dc982
parentcfq-iosched: fix the slice residual sign (diff)
downloadlinux-dev-ec60e4f6749daf535329dac571293cf19c627aff.tar.xz
linux-dev-ec60e4f6749daf535329dac571293cf19c627aff.zip
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>
-rw-r--r--block/cfq-iosched.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 4ab33d8a20b2..b35cc56dfd94 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;