> Il giorno 9 apr 2020, alle ore 19:09, Jan Kara <jack@xxxxxxx> ha scritto: > > The check in bfq_select_queue() checking whether a waker queue should be > selected has a bug and is checking bfqq->next_rq instead of > bfqq->waker_bfqq->next_rq to verify whether the waker queue has a > request to dispatch. This often results in the condition being false > (most notably when the current queue is idling waiting for next request) > and thus the waker queue logic is ineffective. Fix the condition. > Hi Jan, my huge delay causes problems again, because a student of mine already made this same fix a few months ago. But I did not send it out yet, for lack of time. If ok for you, we could go for a common commit with two authors (I seem to remember it is feasible). Thanks. Paolo > Signed-off-by: Jan Kara <jack@xxxxxxx> > --- > block/bfq-iosched.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c > index 78ba57efd16b..18f85d474c9c 100644 > --- a/block/bfq-iosched.c > +++ b/block/bfq-iosched.c > @@ -4498,7 +4498,7 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd) > bfqq = bfqq->bic->bfqq[0]; > else if (bfq_bfqq_has_waker(bfqq) && > bfq_bfqq_busy(bfqq->waker_bfqq) && > - bfqq->next_rq && > + bfqq->waker_bfqq->next_rq && > bfq_serv_to_charge(bfqq->waker_bfqq->next_rq, > bfqq->waker_bfqq) <= > bfq_bfqq_budget_left(bfqq->waker_bfqq) > -- > 2.16.4 >