On 3/27/20 12:14 AM, Alexey Dobriyan wrote: > On Fri, Mar 27, 2020 at 12:56:00AM +0000, Damien Le Moal wrote: >> >> On 2020/03/27 5:44, Alexey Dobriyan wrote: >>> Add simple iodepth=1 NVMe engine: >>> >>> ioengine=nvme >>> >>> It works via standard Linux NVMe ioctls. >> Keith is working on splitting up nvmecli into the cli part and libnvme which >> uses the kernel ioctl iinterface for NVMe command passthrough. So I think it may >> be better to implement ioengine=libnvme using Keith libnvme library. That will >> remove the need to define all the NVMe command stuff here. > Sure. It is just standalone file you can send to colleagues and forget. > Similar to how header-only C++ libraries work. > >>> It will be used for testing upcoming ZNS stuff. I'm not completely against fio providing an nvme ioengine, and libnvme could easily fit in, but I don't think that faithfully represents how these devices are actually used. The passthrough interface is not really our fast path, and being a synchronous interface is a bit limiting in testing device capabilities. If you need to test ZNS features, it would be more worthwhile to wire that up through an existing proper syscall rather than going through the driver's ioctl interface. Just my $.02. If you're really going to do it, though, I would recommend not using NVME_IOCTL_SUBMIT_IO, and instead always use the more flexible NVME_IOCTL_SUBMIT_IO.