> Of note about io_uring: if writes are submitted from multiple jobs to > multiple queues, then you will see unaligned write errors, but the > same test with libaio will work just fine. The reason is that io_uring > fio engine IO submission only adds write requests to the io rings, > which will then be submitted by the kernel ring handling later. But at > that time, the ordering information is lost and if the rings are > processed in the wrong order, you'll get unaligned errors. Sorry, but this is woefully incorrect. Submissions are always in order, I suspect the main difference here is that some submissions would block, and that will certainly cause the effective issue point to be reordered, as the initial issue will get -EAGAIN. This isn't a problem on libaio as it simply blocks on submission instead. Because the actual issue is the same, and the kernel will absolutely see the submissions in order when io_uring_enter() is called, just like it would when io_submit() is called. If you stay within the queue limits of the device, then there should be no reordering. Unless the kernel side prevents non-blocking issues for some reason. It's either that, or something being broken with REQ_NOWAIT handling for zoned writes. -- Jens Axboe