blk-mq: factor out a blk_rq_init_flush helper
authorChristoph Hellwig <hch@lst.de>
Fri, 19 May 2023 04:40:44 +0000 (06:40 +0200)
committerJens Axboe <axboe@kernel.dk>
Sat, 20 May 2023 01:52:29 +0000 (19:52 -0600)
Factor out a helper from blk_insert_flush that initializes the flush
machine related fields in struct request, and don't bother with the
full memset as there's just a few fields to initialize, and all but
one already have explicit initializers.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20230519044050.107790-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-flush.c

index 04698ed..ed37d27 100644 (file)
@@ -376,6 +376,15 @@ static enum rq_end_io_ret mq_flush_data_end_io(struct request *rq,
        return RQ_END_IO_NONE;
 }
 
+static void blk_rq_init_flush(struct request *rq)
+{
+       rq->flush.seq = 0;
+       INIT_LIST_HEAD(&rq->flush.list);
+       rq->rq_flags |= RQF_FLUSH_SEQ;
+       rq->flush.saved_end_io = rq->end_io; /* Usually NULL */
+       rq->end_io = mq_flush_data_end_io;
+}
+
 /**
  * blk_insert_flush - insert a new PREFLUSH/FUA request
  * @rq: request to insert
@@ -437,13 +446,7 @@ void blk_insert_flush(struct request *rq)
         * @rq should go through flush machinery.  Mark it part of flush
         * sequence and submit for further processing.
         */
-       memset(&rq->flush, 0, sizeof(rq->flush));
-       INIT_LIST_HEAD(&rq->flush.list);
-       rq->rq_flags |= RQF_FLUSH_SEQ;
-       rq->flush.saved_end_io = rq->end_io; /* Usually NULL */
-
-       rq->end_io = mq_flush_data_end_io;
-
+       blk_rq_init_flush(rq);
        spin_lock_irq(&fq->mq_flush_lock);
        blk_flush_complete_seq(rq, fq, REQ_FSEQ_ACTIONS & ~policy, 0);
        spin_unlock_irq(&fq->mq_flush_lock);