diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c index 4e027f6108ae..f3b4b5ceb4d1 100644 --- a/block/blk-mq-sched.c +++ b/block/blk-mq-sched.c @@ -326,7 +326,8 @@ bool __blk_mq_sched_bio_merge(struct request_queue *q, struct bio *bio) return e->type->ops.mq.bio_merge(hctx, bio); } - if (hctx->flags & BLK_MQ_F_SHOULD_MERGE) { + if ((hctx->flags & BLK_MQ_F_SHOULD_MERGE) && + !list_empty_careful(&ctx->rq_list)) { /* default per sw-queue merge */ spin_lock(&ctx->lock); ret = blk_mq_attempt_merge(q, ctx, bio);