Re: [PATCH BUGFIX/IMPROVEMENT 1/6] block, bfq: always inject I/O of queues blocked by wakers

From: Paolo Valente
Date: Thu Feb 25 2021 - 10:59:05 EST




> Il giorno 26 gen 2021, alle ore 17:17, Jens Axboe <axboe@xxxxxxxxx> ha scritto:
>
> On 1/26/21 3:50 AM, Paolo Valente wrote:
>> diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
>> index 445cef9c0bb9..a83149407336 100644
>> --- a/block/bfq-iosched.c
>> +++ b/block/bfq-iosched.c
>> @@ -4487,9 +4487,15 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
>> bfq_bfqq_busy(bfqq->bic->bfqq[0]) &&
>> bfqq->bic->bfqq[0]->next_rq ?
>> bfqq->bic->bfqq[0] : NULL;
>> + struct bfq_queue *blocked_bfqq =
>> + !hlist_empty(&bfqq->woken_list) ?
>> + container_of(bfqq->woken_list.first,
>> + struct bfq_queue,
>> + woken_list_node)
>> + : NULL;
>
> hlist_first_entry_or_null?
>

I didn't find any such function. There is a list_first_entry_or_null,
but it's for circular doubly linked lists.

I'll wait a little bit for your reply, then send a V2 with this patch
unchanged.

Thanks,
Paolo

> --
> Jens Axboe
>