From: Chunguang Xu <brookxu@xxxxxxxxxxx> From: Chunguang Xu <brookxu@xxxxxxxxxxx> The IO depth of idle_class is limited to 1, so that it can avoid introducing a larger tail latency under a device with a larger IO depth. Although limiting the IO depth may reduce the performance of idle_class, it is generally not a big problem, because idle_class usually does not have strict performance requirements. Signed-off-by: Chunguang Xu <brookxu@xxxxxxxxxxx> --- block/bfq-iosched.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index ec482e6641ff..ea9d7f6f4e3d 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c @@ -4808,6 +4808,17 @@ static struct request *__bfq_dispatch_request(struct blk_mq_hw_ctx *hctx) if (!bfqq) goto exit; + /* + * Here, the IO depth of idle_class is limited to 1, so that it + * can avoid introducing a larger tail latency under a device + * with a larger IO depth. Although limiting the IO depth may + * reduce the performance of idle_class, it is generally not a + * big problem, because idle_class usually does not have strict + * performance requirements. + */ + if (bfq_class_idle(bfqq) && bfqq->dispatched) + goto exit; + rq = bfq_dispatch_rq_from_bfqq(bfqd, bfqq); if (rq) { -- 2.30.0