On Fri, Mar 23, 2018, 12:04 Jonas Pfefferle <pepperjo@japf.ch> wrote:
Hi @all,

Can anyone clarify this for me:
NVMe spec 6.3 Command Ordering Requirements
"For all commands which are not part of a fused operation (refer to section
4.10), or for which the write size is greater than AWUN, each command is
processed as an independent entity without reference to other commands
submitted to the same I/O Submission Queue or to commands submitted to other
I/O Submission Queues"

So writes <= AWUN size are atomic but there is no ordering between the
commands, e.g. write command A issued before write command B to the same LBA
can be executed in order AB or BA, the only thing guaranteed is that they
are executed atomically? And there is no way to enforce ordering except on
the host side?

Right, that's exactly what the spec says in that same paragraph you quote above: "If there are ordering requirements between these commands, host software or the associated application is required to enforce that ordering above the level of the controller. " (1.3a, P. 179).



SPDK mailing list