On 6/17/25 07:33, Bart Van Assche wrote: > Zoned writes may be requeued. This happens if a block driver returns > BLK_STS_RESOURCE, to handle SCSI unit attentions or by the SCSI error > handler after error handling has finished. Requests may be requeued in > another order than submitted. Restore the request order if requests are > requeued. Add RQF_DONTPREP to RQF_NOMERGE_FLAGS because this patch may > cause RQF_DONTPREP requests to be sent to the code that checks whether > a request can be merged and RQF_DONTPREP requests must not be merged. Shouldn't this last part be a different prep patch ? But overall, the commit message is inadequate because you have not yet enabled pipelining, so this patch will only see one write request per zone at most. And in that case, we do not care about ordering. We only care about the order of requests per zone. > static void blk_mq_insert_request(struct request *rq, blk_insert_t flags) > { > struct request_queue *q = rq->q; > @@ -2649,6 +2665,8 @@ static void blk_mq_insert_request(struct request *rq, blk_insert_t flags) > spin_lock(&ctx->lock); > if (flags & BLK_MQ_INSERT_AT_HEAD) > list_add(&rq->queuelist, &ctx->rq_lists[hctx->type]); > + else if (flags & BLK_MQ_INSERT_ORDERED) > + blk_mq_insert_ordered(rq, &ctx->rq_lists[hctx->type]); > else > list_add_tail(&rq->queuelist, > &ctx->rq_lists[hctx->type]); This pattern is repeated multiple times. Make it a helper ? -- Damien Le Moal Western Digital Research