]> git.baikalelectronics.ru Git - kernel.git/commitdiff
bfq: Allow current waker to defend against a tentative one
authorJan Kara <jack@suse.cz>
Thu, 19 May 2022 10:52:30 +0000 (12:52 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 19 May 2022 12:52:36 +0000 (06:52 -0600)
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>
block/bfq-iosched.c

index 7545f589d8c3f4de726ebc830ce74d1210a08ec1..9e1d713de9427e77c8f67d2adca6f0dd0d1a8f3a 100644 (file)
@@ -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;
 
        /*