block: cache rq_flags inside blk_mq_rq_ctx_init()
authorPavel Begunkov <asml.silence@gmail.com>
Mon, 18 Oct 2021 20:37:29 +0000 (21:37 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 18 Oct 2021 20:38:45 +0000 (14:38 -0600)
Add a local variable for rq_flags, it helps to compile out some of
rq_flags reloads.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c

index fa4de25..633d735 100644 (file)
@@ -318,17 +318,23 @@ static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data,
        struct elevator_queue *e = q->elevator;
        struct blk_mq_tags *tags = blk_mq_tags_from_data(data);
        struct request *rq = tags->static_rqs[tag];
+       unsigned int rq_flags = 0;
 
        if (e) {
-               rq->rq_flags = RQF_ELV;
+               rq_flags = RQF_ELV;
                rq->tag = BLK_MQ_NO_TAG;
                rq->internal_tag = tag;
        } else {
-               rq->rq_flags = 0;
                rq->tag = tag;
                rq->internal_tag = BLK_MQ_NO_TAG;
        }
 
+       if (data->flags & BLK_MQ_REQ_PM)
+               rq_flags |= RQF_PM;
+       if (blk_queue_io_stat(q))
+               rq_flags |= RQF_IO_STAT;
+       rq->rq_flags = rq_flags;
+
        if (blk_mq_need_time_stamp(rq))
                rq->start_time_ns = ktime_get_ns();
        else
@@ -338,10 +344,6 @@ static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data,
        rq->mq_ctx = ctx;
        rq->mq_hctx = hctx;
        rq->cmd_flags = data->cmd_flags;
-       if (data->flags & BLK_MQ_REQ_PM)
-               rq->rq_flags |= RQF_PM;
-       if (blk_queue_io_stat(q))
-               rq->rq_flags |= RQF_IO_STAT;
        rq->rq_disk = NULL;
        rq->part = NULL;
 #ifdef CONFIG_BLK_RQ_ALLOC_TIME