Skip to content

nvmf NVMe 2.0 compliance #3748

@mgalecki1

Description

@mgalecki1

Sighting report

This ticket tracks the initiative to upgrade the SPDK NVMeoF Target from NVMe 1.4 to NVMe 2.0.

SPDK already implements some of the required features of NVMe 2.0.
To be fully compliant, we need to additionaly implement:

  • 1. Asymmetric Namespace Access Change was changed to remove redundant notifications due to detachment of a namespaces (reference NVMe base spec 2.0 section 5.2.1).
  • 2. Add mandatory log page of Supported log pages (reference NVMe base spec 2.0 section 15.16.1.1).
  • 3. Commands Supported and Effects log page added defining the scope of the commands (reference NVMe base spec 2.0 section 15.16.1.6).
  • 4. Add mandatory log page of supported Feature Identifiers Supported and the effects (reference 15.16.1.18).
  • 5. Required to set bit 5 in the Log Page Attributes field in the Identify Controller data structure (reference NVMe base spec 2.0 section 5.17.2).
  • 6. CAP.TO Controller Ready Modes supported bits are required to be supported. Bit 0 of that field is required to be set to '1'. the other bit setting is optional (reference NVMe base spec 2.0 section 3.1.3.1)
  • 7. Required to add the Controller Ready Timeouts register at offset 68h (reference NVMe base spec 2.0 section 3.1.3.21)
  • 8. Required to support the Namespace Status filed in the I/O Command Set Independent Identify Namespace data structure (see TP 4105a) (reference NVMe base spec 2.0 section 5.17.2.8).
  • 9. The Namespace Attribute Changed notice occurs on changes to the new I/O Command Set Independent Identify Namespace data structure defined by TP 4105a (reference NVMe base spec 2.0 section 5.2.1).
  • 10. New CNS 08h defined to access the new I/O Command Set Independent Identify Namespace data structure defined by TP 4105a. This namespace data structure is for fields not associated with an I/O command set. Some fields are replicated from the Identify Namespace data structure defined by the NVM Command Set Specification 1.0 (reference NVMe base spec 2.0 section 15.17.1).
  • 11. The Changed Namespace List log page is updated if the new I/O Command Set Independent Identify Namespace data structure changes (reference NVMe base spec 2.0 section 5.16.1.5).
  • 12. Mandatory support for CNS 07h Active Namespace ID list associated with the specified I/O Command Set.

The full list of changes is available here: https://nvmexpress.org/wp-content/uploads/NVM-Express-Revision-2.0-Changes.pdf

Expected Behavior

For SPDK NVMeoF Target application, all admin and IO commands should be compliant with at least NVMe 2.0.

Current Behavior

Implementation of various admin and IO commands is not consistent with NVMe 2.0 or higher revisions.

Possible Solution

Implementing the items listed above should be enough to provide compliance with NVMe 2.0.

Steps to Reproduce

Context (Environment including OS version, SPDK version, etc.)

Verified on SPDK v25.09

Metadata

Metadata

Assignees

Projects

Status

Done 24.05

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions