aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2022-05-19 12:52:30 +0200
committerJens Axboe <axboe@kernel.dk>2022-05-19 06:52:36 -0600
commitc5ac56bb6110e42e79d3106866658376b2e48ab9 (patch)
treeb0deddac8e7dcbedc254aab05e0500842a905ead
parentbfq: Relax waker detection for shared queues (diff)
downloadlinux-dev-c5ac56bb6110e42e79d3106866658376b2e48ab9.tar.xz
linux-dev-c5ac56bb6110e42e79d3106866658376b2e48ab9.zip
bfq: Allow current waker to defend against a tentative one
The code in bfq_check_waker() ignores wake up events from the current waker. This makes it more likely we select a new tentative waker although the current one is generating more wake up events. Treat current waker the same way as any other process and allow it to reset the waker detection logic. Fixes: 71217df39dc6 ("block, bfq: make waker-queue detection more robust") Signed-off-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20220519105235.31397-2-jack@suse.cz Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--block/bfq-iosched.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 7545f589d8c3..9e1d713de942 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -2129,8 +2129,7 @@ static void bfq_check_waker(struct bfq_data *bfqd, struct bfq_queue *bfqq,
if (!bfqd->last_completed_rq_bfqq ||
bfqd->last_completed_rq_bfqq == bfqq ||
bfq_bfqq_has_short_ttime(bfqq) ||
- now_ns - bfqd->last_completion >= 4 * NSEC_PER_MSEC ||
- bfqd->last_completed_rq_bfqq == bfqq->waker_bfqq)
+ now_ns - bfqd->last_completion >= 4 * NSEC_PER_MSEC)
return;
/*