Commit 81314bfb authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: req->bio is always set in the merge code



As smatch, which is a lot smarter than me noticed.  So remove the checks
for it, and condense these checks a bit including the comments stating
the obvious.

Reported-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarJohn Garry <john.g.garry@oracle.com>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/20241119161157.1328171-3-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 9f8d6828
Loading
Loading
Loading
Loading
+8 −22
Original line number Diff line number Diff line
@@ -864,14 +864,10 @@ static struct request *attempt_merge(struct request_queue *q,
	if (req_op(req) != req_op(next))
		return NULL;

	if (req->bio && next->bio) {
		/* Don't merge requests with different write hints. */
	if (req->bio->bi_write_hint != next->bio->bi_write_hint)
		return NULL;
	if (req->bio->bi_ioprio != next->bio->bi_ioprio)
		return NULL;
	}

	if (!blk_atomic_write_mergeable_rqs(req, next))
		return NULL;

@@ -983,26 +979,16 @@ bool blk_rq_merge_ok(struct request *rq, struct bio *bio)
	if (req_op(rq) != bio_op(bio))
		return false;

	/* don't merge across cgroup boundaries */
	if (!blk_cgroup_mergeable(rq, bio))
		return false;

	/* only merge integrity protected bio into ditto rq */
	if (blk_integrity_merge_bio(rq->q, rq, bio) == false)
		return false;

	/* Only merge if the crypt contexts are compatible */
	if (!bio_crypt_rq_ctx_compatible(rq, bio))
		return false;

	if (rq->bio) {
		/* Don't merge requests with different write hints. */
	if (rq->bio->bi_write_hint != bio->bi_write_hint)
		return false;
	if (rq->bio->bi_ioprio != bio->bi_ioprio)
		return false;
	}

	if (blk_atomic_write_mergeable_rq_bio(rq, bio) == false)
		return false;