]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Revert "block: consider discard merge last"
authorJens Axboe <axboe@kernel.dk>
Tue, 18 Nov 2025 15:37:26 +0000 (08:37 -0700)
committerJens Axboe <axboe@kernel.dk>
Tue, 18 Nov 2025 22:00:12 +0000 (15:00 -0700)
This reverts commit 2516c246d01c23a5f5310e9ac78d9f8aad9b1d0e.

Suspected issues with discard merging post this patch, hence revert
it for now.

Link: https://lore.kernel.org/linux-block/26acdfdf-de13-430b-8c73-f890c7689a84@kernel.dk/
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-merge.c

index db08bc90609165d08d337451a85a3bacd1e954e3..d3115d7469df07f7b36b3cc9b0a7e494ce2e6150 100644 (file)
@@ -712,10 +712,10 @@ static void blk_account_io_merge_request(struct request *req)
 static enum elv_merge blk_try_req_merge(struct request *req,
                                        struct request *next)
 {
-       if (blk_rq_pos(req) + blk_rq_sectors(req) == blk_rq_pos(next))
-               return ELEVATOR_BACK_MERGE;
-       else if (blk_discard_mergable(req))
+       if (blk_discard_mergable(req))
                return ELEVATOR_DISCARD_MERGE;
+       else if (blk_rq_pos(req) + blk_rq_sectors(req) == blk_rq_pos(next))
+               return ELEVATOR_BACK_MERGE;
 
        return ELEVATOR_NO_MERGE;
 }
@@ -903,12 +903,12 @@ bool blk_rq_merge_ok(struct request *rq, struct bio *bio)
 
 enum elv_merge blk_try_merge(struct request *rq, struct bio *bio)
 {
-       if (blk_rq_pos(rq) + blk_rq_sectors(rq) == bio->bi_iter.bi_sector)
+       if (blk_discard_mergable(rq))
+               return ELEVATOR_DISCARD_MERGE;
+       else if (blk_rq_pos(rq) + blk_rq_sectors(rq) == bio->bi_iter.bi_sector)
                return ELEVATOR_BACK_MERGE;
        else if (blk_rq_pos(rq) - bio_sectors(bio) == bio->bi_iter.bi_sector)
                return ELEVATOR_FRONT_MERGE;
-       else if (blk_discard_mergable(rq))
-               return ELEVATOR_DISCARD_MERGE;
        return ELEVATOR_NO_MERGE;
 }