bfq io scheduler fifo_expire_sync have no function

From: Zhang Bo
Date: Wed Jul 19 2023 - 09:51:19 EST


In bfq_check_fifo(...) function, bfq_bfqq_fifo_expire(bfqq) is checked at first, and then bfq_mark_bfqq_fifo_expire(bfqq) later.
I think bfq_check_fifo return NULL because of bfq_bfqq_fifo_expire(bfqq) return true. So expired request is not dispatch.
Could any one explain this problem?

static struct request *bfq_check_fifo(struct bfq_queue *bfqq,
struct request *last)
{
struct request *rq;

if (bfq_bfqq_fifo_expire(bfqq)) {
return NULL;
}

bfq_mark_bfqq_fifo_expire(bfqq);

...................
}