From 4681e2c5330c2ae3592cb9ba2829f95129367498 Mon Sep 17 00:00:00 2001 From: Corrado Zoccolo Date: Thu, 8 Oct 2009 08:43:32 +0200 Subject: [PATCH] --- yaml --- r: 167436 b: refs/heads/master c: 355b659c87432a4e76160640625c47fcf9174e8d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/block/cfq-iosched.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 7f079377c476..7000dd83af95 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a6151c3a5c8e1ff5a28450bc8d6a99a2a0add0a7 +refs/heads/master: 355b659c87432a4e76160640625c47fcf9174e8d diff --git a/trunk/block/cfq-iosched.c b/trunk/block/cfq-iosched.c index a592afcf1e6d..069a61017c02 100644 --- a/trunk/block/cfq-iosched.c +++ b/trunk/block/cfq-iosched.c @@ -1093,6 +1093,15 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd) if (!cic || !atomic_read(&cic->ioc->nr_tasks)) return; + /* + * If our average think time is larger than the remaining time + * slice, then don't idle. This avoids overrunning the allotted + * time slice. + */ + if (sample_valid(cic->ttime_samples) && + (cfqq->slice_end - jiffies < cic->ttime_mean)) + return; + cfq_mark_cfqq_wait_request(cfqq); /*