From: Jens Axboe Date: Tue, 18 Nov 2025 15:37:26 +0000 (-0700) Subject: Revert "block: consider discard merge last" X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=caebce24f6a7f8315b1b87505b74066efb592d92;p=thirdparty%2Flinux.git Revert "block: consider discard merge last" 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 --- diff --git a/block/blk-merge.c b/block/blk-merge.c index db08bc9060916..d3115d7469df0 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -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; }