On Fri, Nov 12, 2021 at 04:11:37PM +0800, Ming Lei wrote: > @@ -2564,13 +2564,15 @@ static inline struct request *blk_mq_get_request(struct request_queue *q, > if (blk_mq_attempt_bio_merge(q, bio, nsegs, > same_queue_rq)) > return NULL; > + if (bio->bi_opf != rq->cmd_flags) > + goto fallback; I think this deserves a comment, as this means a read prealloc can only be used for reads, and no fua can be set if the preallocating I/O didn't use fua, etc. What are the pitfalls of just chanigng cmd_flags?