summaryrefslogtreecommitdiffstats
path: root/block/cfq-iosched.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2005-11-10 18:20:16 +0100
committerJens Axboe <axboe@nelson.home.kernel.dk>2005-11-12 10:56:36 +0100
commitb740d98f5614e34b4cff2e1e67826f007c8d4f30 (patch)
tree50ff24c84b2ecfc2e8e518b1d9aecf3be2bc8ec5 /block/cfq-iosched.c
parent[BLOCK] fix string handling in elv_iosched_store (diff)
downloadlinux-b740d98f5614e34b4cff2e1e67826f007c8d4f30.tar.xz
linux-b740d98f5614e34b4cff2e1e67826f007c8d4f30.zip
[BLOCK] cfq-iosched: fix slice_left calculation
When cfq slice expires, remainder of slice is calculated and stored in cfqq->slice_left. Current code calculates the opposite of remainder - how many jiffies the cfqq has used past slice end. This patch fixes the bug. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jens Axboe <axboe@suse.de>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r--block/cfq-iosched.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 452538644bce..2b64f5852bfd 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -861,8 +861,8 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq,
* store what was left of this slice, if the queue idled out
* or was preempted
*/
- if (time_after(now, cfqq->slice_end))
- cfqq->slice_left = now - cfqq->slice_end;
+ if (time_after(cfqq->slice_end, now))
+ cfqq->slice_left = cfqq->slice_end - now;
else
cfqq->slice_left = 0;