On 6/27/22 21:49, Christoph Hellwig wrote:
On Mon, Jun 27, 2022 at 04:43:35PM -0700, Bart Van Assche wrote:
Enabling pipelining for zoned writes. Increase the number of retries
for zoned writes to the maximum number of outstanding commands per hardware
queue.
How is this supposed to work? NVMe controllers are completely free
to reorder. It also doesn't make sense as all zoned writes in Linux
either use zone append or block layer based zone locking.
Agreed that the NVMe specification allows to reorder outstanding
commands. Are there any NVMe controllers that do this if multiple zoned
write commands are outstanding for a single zone? I do not expect that
an NVMe controller would reorder write commands in such a way that an
I/O error is introduced.
Regarding zoned writes in Linux, Android devices use F2FS. F2FS submits
regular writes (REQ_OP_WRITE) to zoned devices. Patch 4/8 from this
patch series disables zone locking in the mq-deadline scheduler if the
block driver has set the QUEUE_FLAG_PIPELINE_ZONED_WRITES flag.
Thanks,
Bart.