mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
cfq-iosched: fix the slice residual sign
We should subtract the slice residual from the rb tree key, since a negative residual count indicates that the cfqq overran its slice the last time. Hence we want to add the overrun time, to position it a bit further away in the service tree. Reported-by: Corrado Zoccolo <czoccolo@gmail.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
0b182d617e
commit
b9c8946b19
@ -507,8 +507,14 @@ static void cfq_service_tree_add(struct cfq_data *cfqd, struct cfq_queue *cfqq,
|
||||
} else
|
||||
rb_key += jiffies;
|
||||
} else if (!add_front) {
|
||||
/*
|
||||
* Get our rb key offset. Subtract any residual slice
|
||||
* value carried from last service. A negative resid
|
||||
* count indicates slice overrun, and this should position
|
||||
* the next service time further away in the tree.
|
||||
*/
|
||||
rb_key = cfq_slice_offset(cfqd, cfqq) + jiffies;
|
||||
rb_key += cfqq->slice_resid;
|
||||
rb_key -= cfqq->slice_resid;
|
||||
cfqq->slice_resid = 0;
|
||||
} else {
|
||||
rb_key = -HZ;
|
||||
|
Loading…
Reference in New Issue
Block a user