blk_attempt_plug_merge is only called by blk_mq_submit_bio and the parameter of same_queue_rq is not NULL. This patch remove redundant check for same_queue_rq is not NULL in list_for_each_entry_reverse. Signed-off-by: Daejun Park <daejun7.park@xxxxxxxxxxx> --- block/blk-merge.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/block/blk-merge.c b/block/blk-merge.c index ffb4aa0ea68b..0af8a276de09 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -1030,7 +1030,6 @@ static enum bio_merge_status blk_attempt_bio_merge(struct request_queue *q, * @nr_segs: number of segments in @bio * @same_queue_rq: pointer to &struct request that gets filled in when * another request associated with @q is found on the plug list - * (optional, may be %NULL) * * Determine whether @bio being queued on @q can be merged with a request * on %current's plugged list. Returns %true if merge was successful, @@ -1059,18 +1058,16 @@ bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio, plug_list = &plug->mq_list; list_for_each_entry_reverse(rq, plug_list, queuelist) { - if (rq->q == q && same_queue_rq) { - /* - * Only blk-mq multiple hardware queues case checks the - * rq in the same queue, there should be only one such - * rq in a queue - **/ - *same_queue_rq = rq; - } - if (rq->q != q) continue; + /* + * Only blk-mq multiple hardware queues case checks the + * rq in the same queue, there should be only one such + * rq in a queue + **/ + *same_queue_rq = rq; + if (blk_attempt_bio_merge(q, rq, bio, nr_segs, false) == BIO_MERGE_OK) return true; -- 2.25.1