Checks for data direction in attempt_merge() and blk_rq_merge_ok() are redundant and will always succeed when the both I/O request operations are equal. Therefore, remove them. Signed-off-by: Dmitry Fomichev <dmitry.fomichev@xxxxxxx> --- block/blk-merge.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/block/blk-merge.c b/block/blk-merge.c index d783bdc4559b..796451aed7d6 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -745,8 +745,7 @@ static struct request *attempt_merge(struct request_queue *q, if (req_op(req) != req_op(next)) return NULL; - if (rq_data_dir(req) != rq_data_dir(next) - || req->rq_disk != next->rq_disk) + if (req->rq_disk != next->rq_disk) return NULL; if (req_op(req) == REQ_OP_WRITE_SAME && @@ -868,10 +867,6 @@ bool blk_rq_merge_ok(struct request *rq, struct bio *bio) if (req_op(rq) != bio_op(bio)) return false; - /* different data direction or already started, don't merge */ - if (bio_data_dir(bio) != rq_data_dir(rq)) - return false; - /* must be same device */ if (rq->rq_disk != bio->bi_disk) return false; -- 2.21.0