Async. I/O via io_uring#

xNVMe supports io_uring by mapping the NVMe NVM Commands Read and Write to io_uring opcodes:

  • IORING_OP_READ / IORING_OP_WRITE

    • Mapped when using xnvme_cmd_pass(..) with payload as contiguous / fixed buffers

  • IORING_OP_READV / IORING_OP_WRITEV

    • Mapped when using xnvme_cmd_passv(...) with payload as iovec

Passthru#

If you are looking to do command-passthru, that is, send arbitrary user-defined NVMe commands via the Linux kernel NVMe driver, then io_uring is not the backend configuration to use. Rather, select one of:

Or use a user-space driver such as SPDK or libvfn.