New feature patches posted for review today on the Linux kernel mailing list are working to implement the NVMe specification’s Controller Data Queue (CDQ) functionality within the NVMe storage driver.
NVMe’s Controller Data Queue functionality allows for an NVMe controller to post information to the host through a single completion queue. The patch series today further describes the Controller Data Queue functionality as:
“The main motivation is to enable Controller Data Queues as described in the 2.2 revision of the NVME base specification. This series places the kernel as an intermediary between the NVME controller producing CDQ entries and the user space process consuming them. It is general enough to encompass different use cases that require controller initiated communication delivered outside the regular I/O traffic streams (like LBA tracking for example).”
Linux developer Christoph Hellwig in reviewing the patches went on to note that NVMe CDQ will primarily be of benefit in the future with live migration functionality that is still under “heavy development” for NVMe.
Controller Data Queue can be found documented in the NVMe 2.2 specification (PDF) that was published in March.
Joel Granados of Samsung has been working on this NVMe Controller Data Queue support and today posted it via this RFC patch series for those interested in this CDQ feature for NVMe storage devices moving forward. For testing these preliminary NVMe driver patches, support for the new specification was implemented within the QEMU NVMe emulated device.