]> www.infradead.org Git - nvme.git/commitdiff
block: remove blk_flush_policy
authorChristoph Hellwig <hch@lst.de>
Mon, 17 Jun 2024 06:04:39 +0000 (08:04 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 19 Jun 2024 13:58:28 +0000 (07:58 -0600)
Fold blk_flush_policy into the only caller to prepare for pending changes
to it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Link: https://lore.kernel.org/r/20240617060532.127975-13-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-flush.c

index c17cf8ed8113db5826be4d7af1c3ce44486e3a01..2234f8b3fc05f2c473d620216dd3bfbf7f4b2ddb 100644 (file)
@@ -100,23 +100,6 @@ blk_get_flush_queue(struct request_queue *q, struct blk_mq_ctx *ctx)
        return blk_mq_map_queue(q, REQ_OP_FLUSH, ctx)->fq;
 }
 
-static unsigned int blk_flush_policy(unsigned long fflags, struct request *rq)
-{
-       unsigned int policy = 0;
-
-       if (blk_rq_sectors(rq))
-               policy |= REQ_FSEQ_DATA;
-
-       if (fflags & (1UL << QUEUE_FLAG_WC)) {
-               if (rq->cmd_flags & REQ_PREFLUSH)
-                       policy |= REQ_FSEQ_PREFLUSH;
-               if (!(fflags & (1UL << QUEUE_FLAG_FUA)) &&
-                   (rq->cmd_flags & REQ_FUA))
-                       policy |= REQ_FSEQ_POSTFLUSH;
-       }
-       return policy;
-}
-
 static unsigned int blk_flush_cur_seq(struct request *rq)
 {
        return 1 << ffz(rq->flush.seq);
@@ -399,12 +382,26 @@ bool blk_insert_flush(struct request *rq)
 {
        struct request_queue *q = rq->q;
        unsigned long fflags = q->queue_flags;  /* may change, cache */
-       unsigned int policy = blk_flush_policy(fflags, rq);
        struct blk_flush_queue *fq = blk_get_flush_queue(q, rq->mq_ctx);
+       unsigned int policy = 0;
 
        /* FLUSH/FUA request must never be merged */
        WARN_ON_ONCE(rq->bio != rq->biotail);
 
+       if (blk_rq_sectors(rq))
+               policy |= REQ_FSEQ_DATA;
+
+       /*
+        * Check which flushes we need to sequence for this operation.
+        */
+       if (fflags & (1UL << QUEUE_FLAG_WC)) {
+               if (rq->cmd_flags & REQ_PREFLUSH)
+                       policy |= REQ_FSEQ_PREFLUSH;
+               if (!(fflags & (1UL << QUEUE_FLAG_FUA)) &&
+                   (rq->cmd_flags & REQ_FUA))
+                       policy |= REQ_FSEQ_POSTFLUSH;
+       }
+
        /*
         * @policy now records what operations need to be done.  Adjust
         * REQ_PREFLUSH and FUA for the driver.