diff options
author | Paolo Valente <paolo.valente@linaro.org> | 2019-08-22 17:20:35 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-09-18 04:03:49 +0200 |
commit | c1e0a18228822258cbeb49a923d93f8f01c74a76 (patch) | |
tree | 087acf5f0e8c93f2900cbbeca6cf967f3f899f94 /block | |
parent | block, bfq: update inject limit only after injection occurred (diff) | |
download | linux-c1e0a18228822258cbeb49a923d93f8f01c74a76.tar.xz linux-c1e0a18228822258cbeb49a923d93f8f01c74a76.zip |
block, bfq: reduce upper bound for inject limit to max_rq_in_driver+1
Upon an increment attempt of the injection limit, the latter is
constrained not to become higher than twice the maximum number
max_rq_in_driver of I/O requests that have happened to be in service
in the drive. This high bound allows the injection limit to grow
beyond max_rq_in_driver, which may then cause max_rq_in_driver itself
to grow.
However, since the limit is incremented by only one unit at a time,
there is no need for such a high bound, and just max_rq_in_driver+1 is
enough.
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block')
-rw-r--r-- | block/bfq-iosched.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index 5a2bbd8613a8..e114282204f6 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c @@ -5805,7 +5805,7 @@ static void bfq_update_inject_limit(struct bfq_data *bfqd, bfqq->inject_limit--; bfqq->decrease_time_jif = jiffies; } else if (tot_time_ns < threshold && - old_limit < bfqd->max_rq_in_driver<<1) + old_limit <= bfqd->max_rq_in_driver) bfqq->inject_limit++; } |