diff options
author | Chengming Zhou <zhouchengming@bytedance.com> | 2023-09-13 17:16:13 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2023-09-22 16:52:13 +0200 |
commit | 48554df6bf2b1e83f70749bf4b4d7914f8b3c01d (patch) | |
tree | 980a356f55069859553e6a4dc96e05f55faaff56 /block/blk-flush.c | |
parent | blk-mq: account active requests when get driver tag (diff) | |
download | linux-48554df6bf2b1e83f70749bf4b4d7914f8b3c01d.tar.xz linux-48554df6bf2b1e83f70749bf4b4d7914f8b3c01d.zip |
blk-mq: remove RQF_MQ_INFLIGHT
Since the previous patch change to only account active requests when
we really allocate the driver tag, the RQF_MQ_INFLIGHT can be removed
and no double account problem.
1. none elevator: flush request will use the first pending request's
driver tag, won't double account.
2. other elevator: flush request will be accounted when allocate driver
tag when issue, and will be unaccounted when it put the driver tag.
Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20230913151616.3164338-3-chengming.zhou@linux.dev
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-flush.c')
-rw-r--r-- | block/blk-flush.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/block/blk-flush.c b/block/blk-flush.c index e73dc22d05c1..3f4d41952ef2 100644 --- a/block/blk-flush.c +++ b/block/blk-flush.c @@ -323,16 +323,9 @@ static void blk_kick_flush(struct request_queue *q, struct blk_flush_queue *fq, flush_rq->mq_ctx = first_rq->mq_ctx; flush_rq->mq_hctx = first_rq->mq_hctx; - if (!q->elevator) { + if (!q->elevator) flush_rq->tag = first_rq->tag; - - /* - * We borrow data request's driver tag, so have to mark - * this flush request as INFLIGHT for avoiding double - * account of this driver tag - */ - flush_rq->rq_flags |= RQF_MQ_INFLIGHT; - } else + else flush_rq->internal_tag = first_rq->internal_tag; flush_rq->cmd_flags = REQ_OP_FLUSH | REQ_PREFLUSH; |