<seriesInfo name="ANSI INCITS" value="513-2015"/>
</reference>
- <reference anchor='NVME'>
+ <reference anchor='NVME-BASE'>
<front>
- <title>NVM Express Revision 1.3</title>
+ <title>NVM Express Base Specification, Revision 2.0</title>
<author>
<organization>NVM Express, Inc.</organization>
</author>
- <date month="May" year="2017"/>
+ <date month="May" year="2021"/>
</front>
</reference>
+ <reference anchor='NVME-NVM'>
+ <front>
+ <title>NVM Express NVM Command Set Specification, Revision 1.0</title>
+ <author>
+ <organization>NVM Express, Inc.</organization>
+ </author>
+ <date month="May" year="2021"/>
+ </front>
+ </reference>
+</references>
+
+<references title="Non-Normative References">
<reference anchor='NVME-STLR'>
<front>
<title>NVM Express: SCSI Translation Reference Revision 1.5</title>
<date month="June" year="2015"/>
</front>
</reference>
-
</references>
that allows NFS clients to directly perform I/O to block storage
devices while bypassing the MDS. It is specified by using concepts
from the SCSI protocol family for the data path to the storage
- devices. This documents explains how to access PCI Express, RDMA
- or Fibre Channel devices using the NVM Express protocol
- <xref target="NVME" /> using the SCSI layout type by leveraging
- the SCSI Translation Reference (<xref target="NVME-STLR" />).
- This document does not amend the pNFS SCSI layout document in any
- way, instead of explains how to map the SCSI constructs used in
- the pNFS SCSI layout document to NVMe concepts using the NVMe
- SCSI translation reference.
+ devices.
+ </t>
+ <t>
+ This documents explains how to access NVM Command set Namespaces
+ <xref target="NVME-NVM" /> exported by NVMe Controllers implementing
+ the NVMe Base specification (<xref target="NVME-BASE" />) using
+ the SCSI layout type.
+
+ This document works independent of the underlying transport used by
+ the NVMe Controller and thus supports Controllers implementing a
+ wide variety of transports, including PCIe Express, RDMA, TCP and
+ Fibre Channel.
+ </t>
+ <t>
+ This document does not amend the pNFS SCSI layout document, but
+ instead of explains how to map the SCSI constructs used in
+ the pNFS SCSI layout document to NVMe concepts.
</t>
<section anchor="ssc:intro:reqlang" title="Requirements Language">
<section anchor='sec:slm' title='SCSI Layout mapping to NVMe'>
<t>
The SCSI layout definition <xref target="RFC8154" /> only references
- few SCSI specific concepts directly. This document uses the
- NVMe SCSI Translation Reference document (<xref target="NVME-STLR" />)
- to provide mappings from these SCSI concepts to NVM Express
- (<xref target="NVME" />) concepts that SHOULD be used when using the
- pNFS SCSI layout with NVMe devices.
- </t>
- <t>
- The NVMe SCSI Translation Reference is used to define the
- NVMe command and concepts that SHOULD be used to implement the
- pNFS SCSI layout. Implementations MAY or MAY not use an actual
- SCSI to NVMe translation layer.
+ few SCSI specific concepts directly. This document provides a mapping
+ from these SCSI concepts to NVM Express concepts that SHOULD be used
+ when using the pNFS SCSI layout with NVMe namespaces.
</t>
<section anchor='ssc:volident' title='Volume Identification'>
</t>
<t>
- To be used as storage devices for the pNFS SCSI layout, NVMe devices
- MUST support either the EUI64 or NGUID value in the
- Identify Namespace data, as the methods based on the Serial Number for
- legacy devices might not be suitable for unique addressing needs and
- thus MUST NOT be used. If available, the NGUID value SHOULD be used
- as the larger identifier.
+ To be used as storage devices for the pNFS SCSI layout, NVMe namespaces
+ MUST support either the EUI64 or NGUID value in the Identify Namespace
+ data, as the methods based on the Serial Number are not be suitable for
+ unique addressing needs and thus MUST NOT be used.
+ If available, the NGUID value SHOULD be used as it is the larger
+ identifier.
<!-- XXX also allow the Identifier descriptors -->
</t>
Section 6.7 of <xref target="NVME-STLR" /> contains a full
mapping of the required PERSISTENT RESERVE IN and
PERSISTENT RESERVE OUT SCSI command to NVMe commands which
- SHOULD be used when using NVMe devices as storage devices
+ SHOULD be used when using NVMe namespaces as storage devices
for the pNFS SCSI layout.
One important difference between SCSI and NVMe Persistent Reservations
<section anchor='ssc:caches' title='Volatile write caches'>
<t>
- For NVMe devices a volatile write cache is enabled if bit 0 of the
+ For NVMe controllers a volatile write cache is enabled if bit 0 of the
Volatile Write Cache (VWC) field in the Identify Controller Data
- Structure (see Figure 109 in <xref target="NVME" />) is set and
+ Structure, I/O Command Set Independent (see Figure 275 in
+ <xref target="NVME-BASE" />) is set and
the Volatile Write Cache Enable (WCE) bit (i.e., bit 00) in
the Volatile Write Cache Feature (Feature Identifier 06h)
- (see Section 5.21.1.6 of <xref target="NVME" />) is set.
+ (see Section 5.27.1.4 <xref target="NVME-BASE" />) is set.
If a write cache is enabled on a NVMe device used as a storage
device for the pNFS SCSI layout, the MDS MUST use the NVMe FLUSH
command to flush the volatile write cache.