1
0
Fork 0
libnvme/doc/rst/types.rst

11740 lines
218 KiB
ReStructuredText
Raw Normal View History

.. _types.h:
**types.h**
NVMe standard definitions
.. c:macro:: NVME_GET
``NVME_GET (value, name)``
extract field from complex value
**Parameters**
``value``
The original value of a complex field
``name``
The name of the sub-field within an nvme value
**Description**
By convention, this library defines _SHIFT and _MASK such that mask can be
applied after the shift to isolate a specific set of bits that decode to a
sub-field.
**Return**
The 'name' field from 'value'
.. c:macro:: NVME_SET
``NVME_SET (value, name)``
set field into complex value
**Parameters**
``value``
The value to be set in its completed position
``name``
The name of the sub-field within an nvme value
**Return**
The 'name' field from 'value'
.. c:enum:: nvme_constants
A place to stash various constant nvme values
**Constants**
``NVME_NSID_ALL``
A broadcast value that is used to specify all
namespaces
``NVME_NSID_NONE``
The invalid namespace id, for when the nsid
parameter is not used in a command
``NVME_UUID_NONE``
Use to omit a uuid command parameter
``NVME_CNTLID_NONE``
Use to omit a cntlid command parameter
``NVME_CNSSPECID_NONE``
Use to omit a cns_specific_id command parameter
``NVME_LOG_LSP_NONE``
Use to omit a log lsp command parameter
``NVME_LOG_LSI_NONE``
Use to omit a log lsi command parameter
``NVME_LOG_LPO_NONE``
Use to omit a log lpo command parameter
``NVME_IDENTIFY_DATA_SIZE``
The transfer size for nvme identify commands
``NVME_LOG_SUPPORTED_LOG_PAGES_MAX``
The largest possible index in the supported
log pages log.
``NVME_ID_NVMSET_LIST_MAX``
The largest possible nvmset index in identify
nvmeset
``NVME_ID_UUID_LIST_MAX``
The largest possible uuid index in identify
uuid list
``NVME_ID_CTRL_LIST_MAX``
The largest possible controller index in
identify controller list
``NVME_ID_NS_LIST_MAX``
The largest possible namespace index in
identify namespace list
``NVME_ID_SECONDARY_CTRL_MAX``
The largest possible secondary controller index
in identify secondary controller
``NVME_ID_DOMAIN_LIST_MAX``
The largest possible domain index in the
in domain list
``NVME_ID_ENDURANCE_GROUP_LIST_MAX``
The largest possible endurance group
index in the endurance group list
``NVME_ID_ND_DESCRIPTOR_MAX``
The largest possible namespace granularity
index in the namespace granularity descriptor
list
``NVME_FEAT_LBA_RANGE_MAX``
The largest possible LBA range index in feature
lba range type
``NVME_LOG_ST_MAX_RESULTS``
The largest possible self test result index in the
device self test log
``NVME_LOG_TELEM_BLOCK_SIZE``
Specification defined size of Telemetry Data Blocks
``NVME_LOG_FID_SUPPORTED_EFFECTS_MAX``
The largest possible FID index in the
feature identifiers effects log.
``NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_MAX``
The largest possible MI Command index
in the MI Command effects log.
``NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_RESERVED``
The reserved space in the MI Command
effects log.
``NVME_DSM_MAX_RANGES``
The largest possible range index in a data-set
management command
``NVME_NQN_LENGTH``
Max length for NVMe Qualified Name
``NVMF_TRADDR_SIZE``
Max Transport Address size
``NVMF_TSAS_SIZE``
Max Transport Specific Address Subtype size
``NVME_ZNS_CHANGED_ZONES_MAX``
Max number of zones in the changed zones log
page
.. c:enum:: nvme_csi
Defined command set indicators
**Constants**
``NVME_CSI_NVM``
NVM Command Set Indicator
``NVME_CSI_KV``
Key Value Command Set
``NVME_CSI_ZNS``
Zoned Namespace Command Set
.. c:enum:: nvme_register_offsets
controller registers for all transports. This is the layout of BAR0/1 for PCIe, and properties for fabrics.
**Constants**
``NVME_REG_CAP``
Controller Capabilities
``NVME_REG_VS``
Version
``NVME_REG_INTMS``
Interrupt Mask Set
``NVME_REG_INTMC``
Interrupt Mask Clear
``NVME_REG_CC``
Controller Configuration
``NVME_REG_CSTS``
Controller Status
``NVME_REG_NSSR``
NVM Subsystem Reset
``NVME_REG_AQA``
Admin Queue Attributes
``NVME_REG_ASQ``
Admin SQ Base Address
``NVME_REG_ACQ``
Admin CQ Base Address
``NVME_REG_CMBLOC``
Controller Memory Buffer Location
``NVME_REG_CMBSZ``
Controller Memory Buffer Size
``NVME_REG_BPINFO``
Boot Partition Information
``NVME_REG_BPRSEL``
Boot Partition Read Select
``NVME_REG_BPMBL``
Boot Partition Memory Buffer Location
``NVME_REG_CMBMSC``
Controller Memory Buffer Memory Space Control
``NVME_REG_CMBSTS``
Controller Memory Buffer Status
``NVME_REG_CRTO``
Controller Ready Timeouts
``NVME_REG_PMRCAP``
Persistent Memory Capabilities
``NVME_REG_PMRCTL``
Persistent Memory Region Control
``NVME_REG_PMRSTS``
Persistent Memory Region Status
``NVME_REG_PMREBS``
Persistent Memory Region Elasticity Buffer Size
``NVME_REG_PMRSWTP``
Memory Region Sustained Write Throughput
``NVME_REG_PMRMSCL``
Persistent Memory Region Controller Memory Space Control Lower
``NVME_REG_PMRMSCU``
Persistent Memory Region Controller Memory Space Control Upper
.. c:function:: bool nvme_is_64bit_reg (__u32 offset)
Checks if offset of the controller register is a know 64bit value.
**Parameters**
``__u32 offset``
Offset of controller register field in bytes
**Description**
This function does not care about transport so that the offset is not going
to be checked inside of this function for the unsupported fields in a
specific transport. For example, BPMBL(Boot Partition Memory Buffer
Location) register is not supported by fabrics, but it can be checked here.
**Return**
true if given offset is 64bit register, otherwise it returns false.
.. c:function:: __u64 nvme_cmb_size (__u32 cmbsz)
Calculate size of the controller memory buffer
**Parameters**
``__u32 cmbsz``
Value from controller register ``NVME_REG_CMBSZ``
**Return**
size of controller memory buffer in bytes
.. c:function:: __u64 nvme_pmr_size (__u32 pmrebs)
Calculate size of persistent memory region elasticity buffer
**Parameters**
``__u32 pmrebs``
Value from controller register ``NVME_REG_PMREBS``
**Return**
size of controller persistent memory buffer in bytes
.. c:function:: __u64 nvme_pmr_throughput (__u32 pmrswtp)
Calculate throughput of persistent memory buffer
**Parameters**
``__u32 pmrswtp``
Value from controller register ``NVME_REG_PMRSWTP``
**Return**
throughput of controller persistent memory buffer in bytes/second
.. c:enum:: nvme_psd_flags
Possible flag values in nvme power state descriptor
**Constants**
``NVME_PSD_FLAGS_MXPS``
Indicates the scale for the Maximum Power
field. If this bit is cleared, then the scale of the
Maximum Power field is in 0.01 Watts. If this bit is
set, then the scale of the Maximum Power field is in
0.0001 Watts.
``NVME_PSD_FLAGS_NOPS``
Indicates whether the controller processes I/O
commands in this power state. If this bit is cleared,
then the controller processes I/O commands in this
power state. If this bit is set, then the controller
does not process I/O commands in this power state.
.. c:enum:: nvme_psd_ps
Known values for :c:type:`struct nvme_psd <nvme_psd>` ``ips`` and ``aps``. Use with nvme_psd_power_scale() to extract the power scale field to match this enum.
**Constants**
``NVME_PSD_PS_NOT_REPORTED``
Not reported
``NVME_PSD_PS_100_MICRO_WATT``
0.0001 watt scale
``NVME_PSD_PS_10_MILLI_WATT``
0.01 watt scale
.. c:function:: unsigned int nvme_psd_power_scale (__u8 ps)
power scale occupies the upper 3 bits
**Parameters**
``__u8 ps``
power scale value
**Return**
power scale value
.. c:enum:: nvme_psd_workload
Specifies a workload hint in the Power Management Feature (see :c:type:`struct nvme_psd <nvme_psd>`.apw) to inform the NVM subsystem or indicate the conditions for the active power level.
**Constants**
``NVME_PSD_WORKLOAD_NP``
The workload is unknown or not provided.
``NVME_PSD_WORKLOAD_1``
Extended Idle Period with a Burst of Random Write
consists of five minutes of idle followed by
thirty-two random write commands of size 1 MiB
submitted to a single controller while all other
controllers in the NVM subsystem are idle, and then
thirty (30) seconds of idle.
``NVME_PSD_WORKLOAD_2``
Heavy Sequential Writes consists of 80,000
sequential write commands of size 128 KiB submitted to
a single controller while all other controllers in the
NVM subsystem are idle. The submission queue(s)
should be sufficiently large allowing the host to
ensure there are multiple commands pending at all
times during the workload.
.. c:struct:: nvme_id_psd
Power Management data structure
**Definition**
::
struct nvme_id_psd {
__le16 mp;
__u8 rsvd2;
__u8 flags;
__le32 enlat;
__le32 exlat;
__u8 rrt;
__u8 rrl;
__u8 rwt;
__u8 rwl;
__le16 idlp;
__u8 ips;
__u8 rsvd19;
__le16 actp;
__u8 apws;
__u8 rsvd23[9];
};
**Members**
``mp``
Maximum Power indicates the sustained maximum power consumed by the
NVM subsystem in this power state. The power in Watts is equal to
the value in this field multiplied by the scale specified in the Max
Power Scale bit (see :c:type:`enum nvme_psd_flags <nvme_psd_flags>`). A value of 0 indicates
Maximum Power is not reported.
``rsvd2``
Reserved
``flags``
Additional decoding flags, see :c:type:`enum nvme_psd_flags <nvme_psd_flags>`.
``enlat``
Entry Latency indicates the maximum latency in microseconds
associated with entering this power state. A value of 0 indicates
Entry Latency is not reported.
``exlat``
Exit Latency indicates the maximum latency in microseconds
associated with exiting this power state. A value of 0 indicates
Exit Latency is not reported.
``rrt``
Relative Read Throughput indicates the read throughput rank
associated with this power state relative to others. The value in
this is less than the number of supported power states.
``rrl``
Relative Read Latency indicates the read latency rank associated
with this power state relative to others. The value in this field is
less than the number of supported power states.
``rwt``
Relative Write Throughput indicates write throughput rank associated
with this power state relative to others. The value in this field is
less than the number of supported power states
``rwl``
Relative Write Latency indicates the write latency rank associated
with this power state relative to others. The value in this field is
less than the number of supported power states
``idlp``
Idle Power indicates the typical power consumed by the NVM
subsystem over 30 seconds in this power state when idle.
``ips``
Idle Power Scale indicates the scale for :c:type:`struct nvme_id_psd <nvme_id_psd>`.idlp,
see :c:type:`enum nvme_psd_ps <nvme_psd_ps>` for decoding this field.
``rsvd19``
Reserved
``actp``
Active Power indicates the largest average power consumed by the
NVM subsystem over a 10 second period in this power state with
the workload indicated in the Active Power Workload field.
``apws``
Bits 7-6: Active Power Scale(APS) indicates the scale for the :c:type:`struct
nvme_id_psd <nvme_id_psd>`.actp, see :c:type:`enum nvme_psd_ps <nvme_psd_ps>` for decoding this value.
Bits 2-0: Active Power Workload(APW) indicates the workload
used to calculate maximum power for this power state.
See :c:type:`enum nvme_psd_workload <nvme_psd_workload>` for decoding this field.
``rsvd23``
Reserved
.. c:struct:: nvme_id_ctrl
Identify Controller data structure
**Definition**
::
struct nvme_id_ctrl {
__le16 vid;
__le16 ssvid;
char sn[20];
char mn[40];
char fr[8];
__u8 rab;
__u8 ieee[3];
__u8 cmic;
__u8 mdts;
__le16 cntlid;
__le32 ver;
__le32 rtd3r;
__le32 rtd3e;
__le32 oaes;
__le32 ctratt;
__le16 rrls;
__u8 rsvd102[9];
__u8 cntrltype;
__u8 fguid[16];
__le16 crdt1;
__le16 crdt2;
__le16 crdt3;
__u8 rsvd134[119];
__u8 nvmsr;
__u8 vwci;
__u8 mec;
__le16 oacs;
__u8 acl;
__u8 aerl;
__u8 frmw;
__u8 lpa;
__u8 elpe;
__u8 npss;
__u8 avscc;
__u8 apsta;
__le16 wctemp;
__le16 cctemp;
__le16 mtfa;
__le32 hmpre;
__le32 hmmin;
__u8 tnvmcap[16];
__u8 unvmcap[16];
__le32 rpmbs;
__le16 edstt;
__u8 dsto;
__u8 fwug;
__le16 kas;
__le16 hctma;
__le16 mntmt;
__le16 mxtmt;
__le32 sanicap;
__le32 hmminds;
__le16 hmmaxd;
__le16 nsetidmax;
__le16 endgidmax;
__u8 anatt;
__u8 anacap;
__le32 anagrpmax;
__le32 nanagrpid;
__le32 pels;
__le16 domainid;
__u8 rsvd358[10];
__u8 megcap[16];
__u8 rsvd384[128];
__u8 sqes;
__u8 cqes;
__le16 maxcmd;
__le32 nn;
__le16 oncs;
__le16 fuses;
__u8 fna;
__u8 vwc;
__le16 awun;
__le16 awupf;
__u8 icsvscc;
__u8 nwpc;
__le16 acwu;
__le16 ocfs;
__le32 sgls;
__le32 mnan;
__u8 maxdna[16];
__le32 maxcna;
__u8 rsvd564[204];
char subnqn[NVME_NQN_LENGTH];
__u8 rsvd1024[768];
__le32 ioccsz;
__le32 iorcsz;
__le16 icdoff;
__u8 fcatt;
__u8 msdbd;
__le16 ofcs;
__u8 dctype;
__u8 rsvd1807[241];
struct nvme_id_psd psd[32];
__u8 vs[1024];
};
**Members**
``vid``
PCI Vendor ID, the company vendor identifier that is assigned by
the PCI SIG.
``ssvid``
PCI Subsystem Vendor ID, the company vendor identifier that is
assigned by the PCI SIG for the subsystem.
``sn``
Serial Number in ASCII
``mn``
Model Number in ASCII
``fr``
Firmware Revision in ASCII, the currently active firmware
revision for the NVM subsystem
``rab``
Recommended Arbitration Burst, reported as a power of two
``ieee``
IEEE assigned Organization Unique Identifier
``cmic``
Controller Multipath IO and Namespace Sharing Capabilities of
the controller and NVM subsystem. See :c:type:`enum nvme_id_ctrl_cmic <nvme_id_ctrl_cmic>`.
``mdts``
Max Data Transfer Size is the largest data transfer size. The
host should not submit a command that exceeds this maximum data
transfer size. The value is in units of the minimum memory page
size (CAP.MPSMIN) and is reported as a power of two
``cntlid``
Controller ID, the NVM subsystem unique controller identifier
associated with the controller.
``ver``
Version, this field contains the value reported in the Version
register, or property (see :c:type:`enum nvme_registers <nvme_registers>` ``NVME_REG_VS``).
``rtd3r``
RTD3 Resume Latency, the expected latency in microseconds to resume
from Runtime D3
``rtd3e``
RTD3 Exit Latency, the typical latency in microseconds to enter
Runtime D3.
``oaes``
Optional Async Events Supported, see **enum** nvme_id_ctrl_oaes.
``ctratt``
Controller Attributes, see **enum** nvme_id_ctrl_ctratt.
``rrls``
Read Recovery Levels. If a bit is set, then the corresponding
Read Recovery Level is supported. If a bit is cleared, then the
corresponding Read Recovery Level is not supported.
``rsvd102``
Reserved
``cntrltype``
Controller Type, see :c:type:`enum nvme_id_ctrl_cntrltype <nvme_id_ctrl_cntrltype>`
``fguid``
FRU GUID, a 128-bit value that is globally unique for a given
Field Replaceable Unit
``crdt1``
Controller Retry Delay time in 100 millisecond units if CQE CRD
field is 1
``crdt2``
Controller Retry Delay time in 100 millisecond units if CQE CRD
field is 2
``crdt3``
Controller Retry Delay time in 100 millisecond units if CQE CRD
field is 3
``rsvd134``
Reserved
``nvmsr``
NVM Subsystem Report, see :c:type:`enum nvme_id_ctrl_nvmsr <nvme_id_ctrl_nvmsr>`
``vwci``
VPD Write Cycle Information, see :c:type:`enum nvme_id_ctrl_vwci <nvme_id_ctrl_vwci>`
``mec``
Management Endpoint Capabilities, see :c:type:`enum nvme_id_ctrl_mec <nvme_id_ctrl_mec>`
``oacs``
Optional Admin Command Support,the optional Admin commands and
features supported by the controller, see :c:type:`enum nvme_id_ctrl_oacs <nvme_id_ctrl_oacs>`.
``acl``
Abort Command Limit, the maximum number of concurrently
executing Abort commands supported by the controller. This is a
0's based value.
``aerl``
Async Event Request Limit, the maximum number of concurrently
outstanding Asynchronous Event Request commands supported by the
controller This is a 0's based value.
``frmw``
Firmware Updates indicates capabilities regarding firmware
updates. See :c:type:`enum nvme_id_ctrl_frmw <nvme_id_ctrl_frmw>`.
``lpa``
Log Page Attributes, see :c:type:`enum nvme_id_ctrl_lpa <nvme_id_ctrl_lpa>`.
``elpe``
Error Log Page Entries, the maximum number of Error Information
log entries that are stored by the controller. This field is a
0's based value.
``npss``
Number of Power States Supported, the number of NVM Express
power states supported by the controller, indicating the number
of valid entries in :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.psd. This is a 0's
based value.
``avscc``
Admin Vendor Specific Command Configuration, see
:c:type:`enum nvme_id_ctrl_avscc <nvme_id_ctrl_avscc>`.
``apsta``
Autonomous Power State Transition Attributes, see
:c:type:`enum nvme_id_ctrl_apsta <nvme_id_ctrl_apsta>`.
``wctemp``
Warning Composite Temperature Threshold indicates
the minimum Composite Temperature field value (see :c:type:`struct
nvme_smart_log <nvme_smart_log>`.critical_comp_time) that indicates an overheating
condition during which controller operation continues.
``cctemp``
Critical Composite Temperature Threshold, field indicates the
minimum Composite Temperature field value (see :c:type:`struct
nvme_smart_log <nvme_smart_log>`.critical_comp_time) that indicates a critical
overheating condition.
``mtfa``
Maximum Time for Firmware Activation indicates the maximum time
the controller temporarily stops processing commands to activate
the firmware image, specified in 100 millisecond units. This
field is always valid if the controller supports firmware
activation without a reset.
``hmpre``
Host Memory Buffer Preferred Size indicates the preferred size
that the host is requested to allocate for the Host Memory
Buffer feature in 4 KiB units.
``hmmin``
Host Memory Buffer Minimum Size indicates the minimum size that
the host is requested to allocate for the Host Memory Buffer
feature in 4 KiB units.
``tnvmcap``
Total NVM Capacity, the total NVM capacity in the NVM subsystem.
The value is in bytes.
``unvmcap``
Unallocated NVM Capacity, the unallocated NVM capacity in the
NVM subsystem. The value is in bytes.
``rpmbs``
Replay Protected Memory Block Support, see
:c:type:`enum nvme_id_ctrl_rpmbs <nvme_id_ctrl_rpmbs>`.
``edstt``
Extended Device Self-test Time, if Device Self-test command is
supported (see :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.oacs, ``NVME_CTRL_OACS_SELF_TEST``),
then this field indicates the nominal amount of time in one
minute units that the controller takes to complete an extended
device self-test operation when in power state 0.
``dsto``
Device Self-test Options, see :c:type:`enum nvme_id_ctrl_dsto <nvme_id_ctrl_dsto>`.
``fwug``
Firmware Update Granularity indicates the granularity and
alignment requirement of the firmware image being updated by the
Firmware Image Download command. The value is reported in 4 KiB
units. A value of 0h indicates no information on granularity is
provided. A value of FFh indicates no restriction
``kas``
Keep Alive Support indicates the granularity of the Keep Alive
Timer in 100 millisecond units.
``hctma``
Host Controlled Thermal Management Attributes, see
:c:type:`enum nvme_id_ctrl_hctm <nvme_id_ctrl_hctm>`.
``mntmt``
Minimum Thermal Management Temperature indicates the minimum
temperature, in degrees Kelvin, that the host may request in the
Thermal Management Temperature 1 field and Thermal Management
Temperature 2 field of a Set Features command with the Feature
Identifier field set to ``NVME_FEAT_FID_HCTM``.
``mxtmt``
Maximum Thermal Management Temperature indicates the maximum
temperature, in degrees Kelvin, that the host may request in the
Thermal Management Temperature 1 field and Thermal Management
Temperature 2 field of the Set Features command with the Feature
Identifier set to ``NVME_FEAT_FID_HCTM``.
``sanicap``
Sanitize Capabilities, see :c:type:`enum nvme_id_ctrl_sanicap <nvme_id_ctrl_sanicap>`
``hmminds``
Host Memory Buffer Minimum Descriptor Entry Size indicates the
minimum usable size of a Host Memory Buffer Descriptor Entry in
4 KiB units.
``hmmaxd``
Host Memory Maximum Descriptors Entries indicates the number of
usable Host Memory Buffer Descriptor Entries.
``nsetidmax``
NVM Set Identifier Maximum, defines the maximum value of a valid
NVM Set Identifier for any controller in the NVM subsystem.
``endgidmax``
Endurance Group Identifier Maximum, defines the maximum value of
a valid Endurance Group Identifier for any controller in the NVM
subsystem.
``anatt``
ANA Transition Time indicates the maximum amount of time, in
seconds, for a transition between ANA states or the maximum
amount of time, in seconds, that the controller reports the ANA
change state.
``anacap``
Asymmetric Namespace Access Capabilities, see
:c:type:`enum nvme_id_ctrl_anacap <nvme_id_ctrl_anacap>`.
``anagrpmax``
ANA Group Identifier Maximum indicates the maximum value of a
valid ANA Group Identifier for any controller in the NVM
subsystem.
``nanagrpid``
Number of ANA Group Identifiers indicates the number of ANA
groups supported by this controller.
``pels``
Persistent Event Log Size indicates the maximum reportable size
for the Persistent Event Log.
``domainid``
Domain Identifier indicates the identifier of the domain
that contains this controller.
``rsvd358``
Reserved
``megcap``
Max Endurance Group Capacity indicates the maximum capacity
of a single Endurance Group.
``rsvd384``
Reserved
``sqes``
Submission Queue Entry Size, see :c:type:`enum nvme_id_ctrl_sqes <nvme_id_ctrl_sqes>`.
``cqes``
Completion Queue Entry Size, see :c:type:`enum nvme_id_ctrl_cqes <nvme_id_ctrl_cqes>`.
``maxcmd``
Maximum Outstanding Commands indicates the maximum number of
commands that the controller processes at one time for a
particular queue.
``nn``
Number of Namespaces indicates the maximum value of a valid
nsid for the NVM subsystem. If the MNAN (:c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.mnan
field is cleared to 0h, then this field also indicates the
maximum number of namespaces supported by the NVM subsystem.
``oncs``
Optional NVM Command Support, see :c:type:`enum nvme_id_ctrl_oncs <nvme_id_ctrl_oncs>`.
``fuses``
Fused Operation Support, see :c:type:`enum nvme_id_ctrl_fuses <nvme_id_ctrl_fuses>`.
``fna``
Format NVM Attributes, see :c:type:`enum nvme_id_ctrl_fna <nvme_id_ctrl_fna>`.
``vwc``
Volatile Write Cache, see :c:type:`enum nvme_id_ctrl_vwc <nvme_id_ctrl_vwc>`.
``awun``
Atomic Write Unit Normal indicates the size of the write
operation guaranteed to be written atomically to the NVM across
all namespaces with any supported namespace format during normal
operation. This field is specified in logical blocks and is a
0's based value.
``awupf``
Atomic Write Unit Power Fail indicates the size of the write
operation guaranteed to be written atomically to the NVM across
all namespaces with any supported namespace format during a
power fail or error condition. This field is specified in
logical blocks and is a 0s based value.
``icsvscc``
NVM Vendor Specific Command Configuration, see
:c:type:`enum nvme_id_ctrl_nvscc <nvme_id_ctrl_nvscc>`.
``nwpc``
Namespace Write Protection Capabilities, see
:c:type:`enum nvme_id_ctrl_nwpc <nvme_id_ctrl_nwpc>`.
``acwu``
Atomic Compare & Write Unit indicates the size of the write
operation guaranteed to be written atomically to the NVM across
all namespaces with any supported namespace format for a Compare
and Write fused operation. This field is specified in logical
blocks and is a 0s based value.
``ocfs``
Optional Copy Formats Supported, each bit n means controller
supports Copy Format n.
``sgls``
SGL Support, see :c:type:`enum nvme_id_ctrl_sgls <nvme_id_ctrl_sgls>`
``mnan``
Maximum Number of Allowed Namespaces indicates the maximum
number of namespaces supported by the NVM subsystem.
``maxdna``
Maximum Domain Namespace Attachments indicates the maximum
of the sum of the number of namespaces attached to each I/O
controller in the Domain.
``maxcna``
Maximum I/O Controller Namespace Attachments indicates the
maximum number of namespaces that are allowed to be attached to
this I/O controller.
``rsvd564``
Reserved
``subnqn``
NVM Subsystem NVMe Qualified Name, UTF-8 null terminated string
``rsvd1024``
Reserved
``ioccsz``
I/O Queue Command Capsule Supported Size, defines the maximum
I/O command capsule size in 16 byte units.
``iorcsz``
I/O Queue Response Capsule Supported Size, defines the maximum
I/O response capsule size in 16 byte units.
``icdoff``
In Capsule Data Offset, defines the offset where data starts
within a capsule. This value is applicable to I/O Queues only.
``fcatt``
Fabrics Controller Attributes, see :c:type:`enum nvme_id_ctrl_fcatt <nvme_id_ctrl_fcatt>`.
``msdbd``
Maximum SGL Data Block Descriptors indicates the maximum
number of SGL Data Block or Keyed SGL Data Block descriptors
that a host is allowed to place in a capsule. A value of 0h
indicates no limit.
``ofcs``
Optional Fabric Commands Support, see :c:type:`enum nvme_id_ctrl_ofcs <nvme_id_ctrl_ofcs>`.
``dctype``
Discovery Controller Type (DCTYPE). This field indicates what
type of Discovery controller the controller is (see enum
nvme_id_ctrl_dctype)
``rsvd1807``
Reserved
``psd``
Power State Descriptors, see :c:type:`struct nvme_id_psd <nvme_id_psd>`.
``vs``
Vendor Specific
.. c:enum:: nvme_id_ctrl_cmic
Controller Multipath IO and Namespace Sharing Capabilities of the controller and NVM subsystem.
**Constants**
``NVME_CTRL_CMIC_MULTI_PORT``
If set, then the NVM subsystem may contain
more than one NVM subsystem port, otherwise
the NVM subsystem contains only a single
NVM subsystem port.
``NVME_CTRL_CMIC_MULTI_CTRL``
If set, then the NVM subsystem may contain
two or more controllers, otherwise the
NVM subsystem contains only a single
controller. An NVM subsystem that contains
multiple controllers may be used by
multiple hosts, or may provide multiple
paths for a single host.
``NVME_CTRL_CMIC_MULTI_SRIOV``
If set, then the controller is associated
with an SR-IOV Virtual Function, otherwise
it is associated with a PCI Function
or a Fabrics connection.
``NVME_CTRL_CMIC_MULTI_ANA_REPORTING``
If set, then the NVM subsystem supports
Asymmetric Namespace Access Reporting.
.. c:enum:: nvme_id_ctrl_oaes
Optional Asynchronous Events Supported
**Constants**
``NVME_CTRL_OAES_NA``
Namespace Attribute Notices event supported
``NVME_CTRL_OAES_FA``
Firmware Activation Notices event supported
``NVME_CTRL_OAES_ANA``
ANA Change Notices supported
``NVME_CTRL_OAES_PLEA``
Predictable Latency Event Aggregate Log
Change Notices event supported
``NVME_CTRL_OAES_LBAS``
LBA Status Information Notices event supported
``NVME_CTRL_OAES_EGE``
Endurance Group Events Aggregate Log Change
Notices event supported
``NVME_CTRL_OAES_NS``
Normal NVM Subsystem Shutdown event supported
``NVME_CTRL_OAES_ZD``
Zone Descriptor Change Notifications supported
``NVME_CTRL_OAES_DL``
Discover Log Page Change Notifications supported
.. c:enum:: nvme_id_ctrl_ctratt
Controller attributes
**Constants**
``NVME_CTRL_CTRATT_128_ID``
128-bit Host Identifier supported
``NVME_CTRL_CTRATT_NON_OP_PSP``
Non-Operational Poser State Permissive Mode
supported
``NVME_CTRL_CTRATT_NVM_SETS``
NVM Sets supported
``NVME_CTRL_CTRATT_READ_RECV_LVLS``
Read Recovery Levels supported
``NVME_CTRL_CTRATT_ENDURANCE_GROUPS``
Endurance Groups supported
``NVME_CTRL_CTRATT_PREDICTABLE_LAT``
Predictable Latency Mode supported
``NVME_CTRL_CTRATT_TBKAS``
Traffic Based Keep Alive Support
``NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY``
Namespace Granularity reporting
supported
``NVME_CTRL_CTRATT_SQ_ASSOCIATIONS``
SQ Associations supported
``NVME_CTRL_CTRATT_UUID_LIST``
UUID List reporting supported
``NVME_CTRL_CTRATT_MDS``
Multi-Domain Subsystem supported
``NVME_CTRL_CTRATT_FIXED_CAP``
Fixed Capacity Management supported
``NVME_CTRL_CTRATT_VARIABLE_CAP``
Variable Capacity Management supported
``NVME_CTRL_CTRATT_DEL_ENDURANCE_GROUPS``
Delete Endurance Groups supported
``NVME_CTRL_CTRATT_DEL_NVM_SETS``
Delete NVM Sets supported
``NVME_CTRL_CTRATT_ELBAS``
Extended LBA Formats supported
``NVME_CTRL_CTRATT_FDPS``
Flexible Data Placement supported
.. c:enum:: nvme_id_ctrl_cntrltype
Controller types
**Constants**
``NVME_CTRL_CNTRLTYPE_IO``
NVM I/O controller
``NVME_CTRL_CNTRLTYPE_DISCOVERY``
Discovery controller
``NVME_CTRL_CNTRLTYPE_ADMIN``
Admin controller
.. c:enum:: nvme_id_ctrl_dctype
Discovery Controller types
**Constants**
``NVME_CTRL_DCTYPE_NOT_REPORTED``
Not reported (I/O, Admin, and pre-TP8010)
``NVME_CTRL_DCTYPE_DDC``
Direct Discovery controller
``NVME_CTRL_DCTYPE_CDC``
Central Discovery controller
.. c:enum:: nvme_id_ctrl_nvmsr
This field reports information associated with the NVM Subsystem, see :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.nvmsr.
**Constants**
``NVME_CTRL_NVMSR_NVMESD``
If set, then the NVM Subsystem is part of an NVMe
Storage Device; if cleared, then the NVM Subsystem
is not part of an NVMe Storage Device.
``NVME_CTRL_NVMSR_NVMEE``
If set, then the NVM Subsystem is part of an NVMe
Enclosure; if cleared, then the NVM Subsystem is
not part of an NVMe Enclosure.
.. c:enum:: nvme_id_ctrl_vwci
This field indicates information about remaining number of times that VPD contents are able to be updated using the VPD Write command, see :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.vwci.
**Constants**
``NVME_CTRL_VWCI_VWCR``
Mask to get value of VPD Write Cycles Remaining. If
the VPD Write Cycle Remaining Valid bit is set, then
this field contains a value indicating the remaining
number of times that VPD contents are able to be
updated using the VPD Write command. If this field is
set to 7Fh, then the remaining number of times that
VPD contents are able to be updated using the VPD
Write command is greater than or equal to 7Fh.
``NVME_CTRL_VWCI_VWCRV``
VPD Write Cycle Remaining Valid. If this bit is set,
then the VPD Write Cycle Remaining field is valid. If
this bit is cleared, then the VPD Write Cycles
Remaining field is invalid and cleared to 0h.
.. c:enum:: nvme_id_ctrl_mec
Flags indicating the capabilities of the Management Endpoint in the Controller, :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.mec.
**Constants**
``NVME_CTRL_MEC_SMBUSME``
If set, then the NVM Subsystem contains a Management
Endpoint on an SMBus/I2C port.
``NVME_CTRL_MEC_PCIEME``
If set, then the NVM Subsystem contains a Management
Endpoint on a PCIe port.
.. c:enum:: nvme_id_ctrl_oacs
Flags indicating the optional Admin commands and features supported by the controller, see :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.oacs.
**Constants**
``NVME_CTRL_OACS_SECURITY``
If set, then the controller supports the
Security Send and Security Receive commands.
``NVME_CTRL_OACS_FORMAT``
If set then the controller supports the Format
NVM command.
``NVME_CTRL_OACS_FW``
If set, then the controller supports the
Firmware Commit and Firmware Image Download commands.
``NVME_CTRL_OACS_NS_MGMT``
If set, then the controller supports the
Namespace Management capability
``NVME_CTRL_OACS_SELF_TEST``
If set, then the controller supports the Device
Self-test command.
``NVME_CTRL_OACS_DIRECTIVES``
If set, then the controller supports Directives
and the Directive Send and Directive Receive
commands.
``NVME_CTRL_OACS_NVME_MI``
If set, then the controller supports the NVMe-MI
Send and NVMe-MI Receive commands.
``NVME_CTRL_OACS_VIRT_MGMT``
If set, then the controller supports the
Virtualization Management command.
``NVME_CTRL_OACS_DBBUF_CFG``
If set, then the controller supports the
Doorbell Buffer Config command.
``NVME_CTRL_OACS_LBA_STATUS``
If set, then the controller supports the Get LBA
Status capability.
``NVME_CTRL_OACS_CMD_FEAT_LD``
If set, then the controller supports the command
and feature lockdown capability.
.. c:enum:: nvme_id_ctrl_frmw
Flags and values indicates capabilities regarding firmware updates from :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.frmw.
**Constants**
``NVME_CTRL_FRMW_1ST_RO``
If set, the first firmware slot is readonly
``NVME_CTRL_FRMW_NR_SLOTS``
Mask to get the value of the number of
firmware slots that the controller supports.
``NVME_CTRL_FRMW_FW_ACT_NO_RESET``
If set, the controller supports firmware
activation without a reset.
``NVME_CTRL_FRMW_MP_UP_DETECTION``
If set, the controller is able to detect
overlapping firmware/boot partition
image update.
.. c:enum:: nvme_id_ctrl_lpa
Flags indicating optional attributes for log pages that are accessed via the Get Log Page command.
**Constants**
``NVME_CTRL_LPA_SMART_PER_NS``
If set, controller supports SMART/Health log
page on a per namespace basis.
``NVME_CTRL_LPA_CMD_EFFECTS``
If Set, the controller supports the commands
supported and effects log page.
``NVME_CTRL_LPA_EXTENDED``
If set, the controller supports extended data
for log page command including extended number
of dwords and log page offset fields.
``NVME_CTRL_LPA_TELEMETRY``
If set, the controller supports the telemetry
host-initiated and telemetry controller-initiated
log pages and sending telemetry log notices.
``NVME_CTRL_LPA_PERSETENT_EVENT``
If set, the controller supports
persistent event log.
``NVME_CTRL_LPA_LI0_LI5_LI12_LI13``
If set, the controller supports
- log pages log page.
- returning scope of each command in
commands supported and effects log
page.
- feature identifiers supported and
effects log page.
- NVMe-MI commands supported and
effects log page.
``NVME_CTRL_LPA_DA4_TELEMETRY``
If set, the controller supports data
area 4 for telemetry host-initiated and
telemetry.
.. c:enum:: nvme_id_ctrl_avscc
Flags indicating the configuration settings for Admin Vendor Specific command handling.
**Constants**
``NVME_CTRL_AVSCC_AVS``
If set, all Admin Vendor Specific Commands use the
optional vendor specific command format with NDT and
NDM fields.
.. c:enum:: nvme_id_ctrl_apsta
Flags indicating the attributes of the autonomous power state transition feature.
**Constants**
``NVME_CTRL_APSTA_APST``
If set, then the controller supports autonomous power
state transitions.
.. c:enum:: nvme_id_ctrl_rpmbs
This field indicates if the controller supports one or more Replay Protected Memory Blocks, from :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.rpmbs.
**Constants**
``NVME_CTRL_RPMBS_NR_UNITS``
Mask to get the value of the Number of RPMB Units
``NVME_CTRL_RPMBS_AUTH_METHOD``
Mask to get the value of the Authentication Method
``NVME_CTRL_RPMBS_TOTAL_SIZE``
Mask to get the value of Total Size
``NVME_CTRL_RPMBS_ACCESS_SIZE``
Mask to get the value of Access Size
.. c:enum:: nvme_id_ctrl_dsto
Flags indicating the optional Device Self-test command or operation behaviors supported by the controller or NVM subsystem.
**Constants**
``NVME_CTRL_DSTO_ONE_DST``
If set, then the NVM subsystem supports only one
device self-test operation in progress at a time.
.. c:enum:: nvme_id_ctrl_hctm
Flags indicate the attributes of the host controlled thermal management feature
**Constants**
``NVME_CTRL_HCTMA_HCTM``
then the controller supports host controlled thermal
management, and the Set Features command and Get
Features command with the Feature Identifier field
set to ``NVME_FEAT_FID_HCTM``.
.. c:enum:: nvme_id_ctrl_sanicap
Indicates attributes for sanitize operations.
**Constants**
``NVME_CTRL_SANICAP_CES``
Crypto Erase Support. If set, then the
controller supports the Crypto Erase sanitize operation.
``NVME_CTRL_SANICAP_BES``
Block Erase Support. If set, then the controller
supports the Block Erase sanitize operation.
``NVME_CTRL_SANICAP_OWS``
Overwrite Support. If set, then the controller
supports the Overwrite sanitize operation.
``NVME_CTRL_SANICAP_NDI``
No-Deallocate Inhibited. If set and the No-
Deallocate Response Mode bit is set, then the
controller deallocates after the sanitize
operation even if the No-Deallocate After
Sanitize bit is set in a Sanitize command.
``NVME_CTRL_SANICAP_NODMMAS``
No-Deallocate Modifies Media After Sanitize,
mask to extract value.
.. c:enum:: nvme_id_ctrl_anacap
This field indicates the capabilities associated with Asymmetric Namespace Access Reporting.
**Constants**
``NVME_CTRL_ANACAP_OPT``
If set, then the controller is able to
report ANA Optimized state.
``NVME_CTRL_ANACAP_NON_OPT``
If set, then the controller is able to
report ANA Non-Optimized state.
``NVME_CTRL_ANACAP_INACCESSIBLE``
If set, then the controller is able to
report ANA Inaccessible state.
``NVME_CTRL_ANACAP_PERSISTENT_LOSS``
If set, then the controller is able to
report ANA Persistent Loss state.
``NVME_CTRL_ANACAP_CHANGE``
If set, then the controller is able to
report ANA Change state.
``NVME_CTRL_ANACAP_GRPID_NO_CHG``
If set, then the ANAGRPID field in the
Identify Namespace data structure
(:c:type:`struct nvme_id_ns <nvme_id_ns>`.anagrpid), does not
change while the namespace is attached to
any controller.
``NVME_CTRL_ANACAP_GRPID_MGMT``
If set, then the controller supports a
non-zero value in the ANAGRPID field of
the Namespace Management command.
.. c:enum:: nvme_id_ctrl_sqes
Defines the required and maximum Submission Queue entry size when using the NVM Command Set.
**Constants**
``NVME_CTRL_SQES_MIN``
Mask to get the value of the required Submission Queue
Entry size when using the NVM Command Set.
``NVME_CTRL_SQES_MAX``
Mask to get the value of the maximum Submission Queue
entry size when using the NVM Command Set.
.. c:enum:: nvme_id_ctrl_cqes
Defines the required and maximum Completion Queue entry size when using the NVM Command Set.
**Constants**
``NVME_CTRL_CQES_MIN``
Mask to get the value of the required Completion Queue
Entry size when using the NVM Command Set.
``NVME_CTRL_CQES_MAX``
Mask to get the value of the maximum Completion Queue
entry size when using the NVM Command Set.
.. c:enum:: nvme_id_ctrl_oncs
This field indicates the optional NVM commands and features supported by the controller.
**Constants**
``NVME_CTRL_ONCS_COMPARE``
If set, then the controller supports
the Compare command.
``NVME_CTRL_ONCS_WRITE_UNCORRECTABLE``
If set, then the controller supports
the Write Uncorrectable command.
``NVME_CTRL_ONCS_DSM``
If set, then the controller supports
the Dataset Management command.
``NVME_CTRL_ONCS_WRITE_ZEROES``
If set, then the controller supports
the Write Zeroes command.
``NVME_CTRL_ONCS_SAVE_FEATURES``
If set, then the controller supports
the Save field set to a non-zero value
in the Set Features command and the
Select field set to a non-zero value in
the Get Features command.
``NVME_CTRL_ONCS_RESERVATIONS``
If set, then the controller supports
reservations.
``NVME_CTRL_ONCS_TIMESTAMP``
If set, then the controller supports
the Timestamp feature.
``NVME_CTRL_ONCS_VERIFY``
If set, then the controller supports
the Verify command.
``NVME_CTRL_ONCS_COPY``
If set, then the controller supports
the copy command.
.. c:enum:: nvme_id_ctrl_fuses
This field indicates the fused operations that the controller supports.
**Constants**
``NVME_CTRL_FUSES_COMPARE_AND_WRITE``
If set, then the controller supports the
Compare and Write fused operation.
.. c:enum:: nvme_id_ctrl_fna
This field indicates attributes for the Format NVM command.
**Constants**
``NVME_CTRL_FNA_FMT_ALL_NAMESPACES``
If set, then all namespaces in an NVM
subsystem shall be configured with the
same attributes and a format (excluding
secure erase) of any namespace results in
a format of all namespaces in an NVM
subsystem. If cleared, then the
controller supports format on a per
namespace basis.
``NVME_CTRL_FNA_SEC_ALL_NAMESPACES``
If set, then any secure erase performed
as part of a format operation results in
a secure erase of all namespaces in the
NVM subsystem. If cleared, then any
secure erase performed as part of a
format results in a secure erase of the
particular namespace specified.
``NVME_CTRL_FNA_CRYPTO_ERASE``
If set, then cryptographic erase is
supported. If cleared, then cryptographic
erase is not supported.
``NVME_CTRL_FNA_NSID_FFFFFFFF``
If set, then format does not support
nsid value set to FFFFFFFFh. If cleared,
format supports nsid value set to
FFFFFFFFh.
.. c:enum:: nvme_id_ctrl_vwc
Volatile write cache
**Constants**
``NVME_CTRL_VWC_PRESENT``
If set, indicates a volatile write cache is present.
If a volatile write cache is present, then the host
controls whether the volatile write cache is enabled
with a Set Features command specifying the value
``NVME_FEAT_FID_VOLATILE_WC``.
``NVME_CTRL_VWC_FLUSH``
Mask to get the value of the flush command behavior.
.. c:enum:: nvme_id_ctrl_nvscc
This field indicates the configuration settings for NVM Vendor Specific command handling.
**Constants**
``NVME_CTRL_NVSCC_FMT``
If set, all NVM Vendor Specific Commands use the
format with NDT and NDM fields.
.. c:enum:: nvme_id_ctrl_nwpc
This field indicates the optional namespace write protection capabilities supported by the controller.
**Constants**
``NVME_CTRL_NWPC_WRITE_PROTECT``
If set, then the controller shall
support the No Write Protect and
Write Protect namespace write
protection states and may support
the Write Protect Until Power
Cycle state and Permanent Write
Protect namespace write
protection states.
``NVME_CTRL_NWPC_WRITE_PROTECT_POWER_CYCLE``
If set, then the controller
supports the Write Protect Until
Power Cycle state.
``NVME_CTRL_NWPC_WRITE_PROTECT_PERMANENT``
If set, then the controller
supports the Permanent Write
Protect state.
.. c:enum:: nvme_id_ctrl_sgls
This field indicates if SGLs are supported for the NVM Command Set and the particular SGL types supported.
**Constants**
``NVME_CTRL_SGLS_SUPPORTED``
``NVME_CTRL_SGLS_KEYED``
``NVME_CTRL_SGLS_BIT_BUCKET``
``NVME_CTRL_SGLS_MPTR_BYTE_ALIGNED``
``NVME_CTRL_SGLS_OVERSIZE``
``NVME_CTRL_SGLS_MPTR_SGL``
``NVME_CTRL_SGLS_OFFSET``
``NVME_CTRL_SGLS_TPORT``
.. c:enum:: nvme_id_ctrl_fcatt
This field indicates attributes of the controller that are specific to NVMe over Fabrics.
**Constants**
``NVME_CTRL_FCATT_DYNAMIC``
If cleared, then the NVM subsystem uses a dynamic
controller model. If set, then the NVM subsystem
uses a static controller model.
.. c:enum:: nvme_id_ctrl_ofcs
Indicate whether the controller supports optional fabric commands.
**Constants**
``NVME_CTRL_OFCS_DISCONNECT``
If set, then the controller supports the
Disconnect command and deletion of individual
I/O Queues.
.. c:struct:: nvme_lbaf
LBA Format Data Structure
**Definition**
::
struct nvme_lbaf {
__le16 ms;
__u8 ds;
__u8 rp;
};
**Members**
``ms``
Metadata Size indicates the number of metadata bytes provided per LBA
based on the LBA Data Size indicated.
``ds``
LBA Data Size indicates the LBA data size supported, reported as a
power of two.
``rp``
Relative Performance, see :c:type:`enum nvme_lbaf_rp <nvme_lbaf_rp>`.
.. c:enum:: nvme_lbaf_rp
This field indicates the relative performance of the LBA format indicated relative to other LBA formats supported by the controller.
**Constants**
``NVME_LBAF_RP_BEST``
Best performance
``NVME_LBAF_RP_BETTER``
Better performance
``NVME_LBAF_RP_GOOD``
Good performance
``NVME_LBAF_RP_DEGRADED``
Degraded performance
``NVME_LBAF_RP_MASK``
Mask to get the relative performance value from the
field
.. c:struct:: nvme_id_ns
Identify Namespace data structure
**Definition**
::
struct nvme_id_ns {
__le64 nsze;
__le64 ncap;
__le64 nuse;
__u8 nsfeat;
__u8 nlbaf;
__u8 flbas;
__u8 mc;
__u8 dpc;
__u8 dps;
__u8 nmic;
__u8 rescap;
__u8 fpi;
__u8 dlfeat;
__le16 nawun;
__le16 nawupf;
__le16 nacwu;
__le16 nabsn;
__le16 nabo;
__le16 nabspf;
__le16 noiob;
__u8 nvmcap[16];
__le16 npwg;
__le16 npwa;
__le16 npdg;
__le16 npda;
__le16 nows;
__le16 mssrl;
__le32 mcl;
__u8 msrc;
__u8 rsvd81;
__u8 nulbaf;
__u8 rsvd83[9];
__le32 anagrpid;
__u8 rsvd96[3];
__u8 nsattr;
__le16 nvmsetid;
__le16 endgid;
__u8 nguid[16];
__u8 eui64[8];
struct nvme_lbaf lbaf[64];
__le64 lbstm;
__u8 vs[3704];
};
**Members**
``nsze``
Namespace Size indicates the total size of the namespace in
logical blocks. The number of logical blocks is based on the
formatted LBA size.
``ncap``
Namespace Capacity indicates the maximum number of logical blocks
that may be allocated in the namespace at any point in time. The
number of logical blocks is based on the formatted LBA size.
``nuse``
Namespace Utilization indicates the current number of logical
blocks allocated in the namespace. This field is smaller than or
equal to the Namespace Capacity. The number of logical blocks is
based on the formatted LBA size.
``nsfeat``
Namespace Features, see :c:type:`enum nvme_id_nsfeat <nvme_id_nsfeat>`.
``nlbaf``
Number of LBA Formats defines the number of supported LBA data
size and metadata size combinations supported by the namespace
and the highest possible index to :c:type:`struct nvme_id_ns <nvme_id_ns>`.lbaf.
``flbas``
Formatted LBA Size, see :c:type:`enum nvme_id_ns_flbas <nvme_id_ns_flbas>`.
``mc``
Metadata Capabilities, see :c:type:`enum nvme_id_ns_mc <nvme_id_ns_mc>`.
``dpc``
End-to-end Data Protection Capabilities, see
:c:type:`enum nvme_id_ns_dpc <nvme_id_ns_dpc>`.
``dps``
End-to-end Data Protection Type Settings, see
:c:type:`enum nvme_id_ns_dps <nvme_id_ns_dps>`.
``nmic``
Namespace Multi-path I/O and Namespace Sharing Capabilities, see
:c:type:`enum nvme_id_ns_nmic <nvme_id_ns_nmic>`.
``rescap``
Reservation Capabilities, see :c:type:`enum nvme_id_ns_rescap <nvme_id_ns_rescap>`.
``fpi``
Format Progress Indicator, see :c:type:`enum nvme_nd_ns_fpi <nvme_nd_ns_fpi>`.
``dlfeat``
Deallocate Logical Block Features, see :c:type:`enum nvme_id_ns_dlfeat <nvme_id_ns_dlfeat>`.
``nawun``
Namespace Atomic Write Unit Normal indicates the
namespace specific size of the write operation guaranteed to be
written atomically to the NVM during normal operation.
``nawupf``
Namespace Atomic Write Unit Power Fail indicates the
namespace specific size of the write operation guaranteed to be
written atomically to the NVM during a power fail or error
condition.
``nacwu``
Namespace Atomic Compare & Write Unit indicates the namespace
specific size of the write operation guaranteed to be written
atomically to the NVM for a Compare and Write fused command.
``nabsn``
Namespace Atomic Boundary Size Normal indicates the atomic
boundary size for this namespace for the NAWUN value. This field
is specified in logical blocks.
``nabo``
Namespace Atomic Boundary Offset indicates the LBA on this
namespace where the first atomic boundary starts.
``nabspf``
Namespace Atomic Boundary Size Power Fail indicates the atomic
boundary size for this namespace specific to the Namespace Atomic
Write Unit Power Fail value. This field is specified in logical
blocks.
``noiob``
Namespace Optimal I/O Boundary indicates the optimal I/O boundary
for this namespace. This field is specified in logical blocks.
The host should construct Read and Write commands that do not
cross the I/O boundary to achieve optimal performance.
``nvmcap``
NVM Capacity indicates the total size of the NVM allocated to
this namespace. The value is in bytes.
``npwg``
Namespace Preferred Write Granularity indicates the smallest
recommended write granularity in logical blocks for this
namespace. This is a 0's based value.
``npwa``
Namespace Preferred Write Alignment indicates the recommended
write alignment in logical blocks for this namespace. This is a
0's based value.
``npdg``
Namespace Preferred Deallocate Granularity indicates the
recommended granularity in logical blocks for the Dataset
Management command with the Attribute - Deallocate bit.
``npda``
Namespace Preferred Deallocate Alignment indicates the
recommended alignment in logical blocks for the Dataset
Management command with the Attribute - Deallocate bit
``nows``
Namespace Optimal Write Size indicates the size in logical blocks
for optimal write performance for this namespace. This is a 0's
based value.
``mssrl``
Maximum Single Source Range Length indicates the maximum number
of logical blocks that may be specified in each valid Source Range
field of a Copy command.
``mcl``
Maximum Copy Length indicates the maximum number of logical
blocks that may be specified in a Copy command.
``msrc``
Maximum Source Range Count indicates the maximum number of Source
Range entries that may be used to specify source data in a Copy
command. This is a 0s based value.
``rsvd81``
Reserved
``nulbaf``
Number of Unique Capability LBA Formats defines the number of
supported user data size and metadata size combinations supported
by the namespace that may not share the same capabilities. LBA
formats shall be allocated in order and packed sequentially.
``rsvd83``
Reserved
``anagrpid``
ANA Group Identifier indicates the ANA Group Identifier of the
ANA group of which the namespace is a member.
``rsvd96``
Reserved
``nsattr``
Namespace Attributes, see :c:type:`enum nvme_id_ns_attr <nvme_id_ns_attr>`.
``nvmsetid``
NVM Set Identifier indicates the NVM Set with which this
namespace is associated.
``endgid``
Endurance Group Identifier indicates the Endurance Group with
which this namespace is associated.
``nguid``
Namespace Globally Unique Identifier contains a 128-bit value
that is globally unique and assigned to the namespace when the
namespace is created. This field remains fixed throughout the
life of the namespace and is preserved across namespace and
controller operations
``eui64``
IEEE Extended Unique Identifier contains a 64-bit IEEE Extended
Unique Identifier (EUI-64) that is globally unique and assigned
to the namespace when the namespace is created. This field
remains fixed throughout the life of the namespace and is
preserved across namespace and controller operations
``lbaf``
LBA Format, see :c:type:`struct nvme_lbaf <nvme_lbaf>`.
``lbstm``
Logical Block Storage Tag Mask for end-to-end protection
``vs``
Vendor Specific
.. c:enum:: nvme_id_nsfeat
This field defines features of the namespace.
**Constants**
``NVME_NS_FEAT_THIN``
If set, indicates that the namespace supports thin
provisioning. Specifically, the Namespace Capacity
reported may be less than the Namespace Size.
``NVME_NS_FEAT_NATOMIC``
If set, indicates that the fields NAWUN, NAWUPF, and
NACWU are defined for this namespace and should be
used by the host for this namespace instead of the
AWUN, AWUPF, and ACWU fields in the Identify
Controller data structure.
``NVME_NS_FEAT_DULBE``
If set, indicates that the controller supports the
Deallocated or Unwritten Logical Block error for
this namespace.
``NVME_NS_FEAT_ID_REUSE``
If set, indicates that the value in the NGUID field
for this namespace, if non- zero, is never reused by
the controller and that the value in the EUI64 field
for this namespace, if non-zero, is never reused by
the controller.
``NVME_NS_FEAT_IO_OPT``
If set, indicates that the fields NPWG, NPWA, NPDG,
NPDA, and NOWS are defined for this namespace and
should be used by the host for I/O optimization
.. c:enum:: nvme_id_ns_flbas
This field indicates the LBA data size & metadata size combination that the namespace has been formatted with
**Constants**
``NVME_NS_FLBAS_LOWER_MASK``
Mask to get the index of one of the supported
LBA Formats's least significant
4bits indicated in
:c:type:`struct nvme_id_ns <nvme_id_ns>`.lbaf.
``NVME_NS_FLBAS_META_EXT``
Applicable only if format contains metadata. If
this bit is set, indicates that the metadata is
transferred at the end of the data LBA, creating an
extended data LBA. If cleared, indicates that all
of the metadata for a command is transferred as a
separate contiguous buffer of data.
``NVME_NS_FLBAS_HIGHER_MASK``
Mask to get the index of one of
the supported LBA Formats's most significant
2bits indicated in
:c:type:`struct nvme_id_ns <nvme_id_ns>`.lbaf.
.. c:enum:: nvme_nvm_id_ns_elbaf
This field indicates the extended LBA format
**Constants**
``NVME_NVM_ELBAF_STS_MASK``
Mask to get the storage tag size used to determine
the variable-sized storage tag/reference tag fields
``NVME_NVM_ELBAF_PIF_MASK``
Mask to get the protection information format for
the extended LBA format.
.. c:enum:: nvme_id_ns_mc
This field indicates the capabilities for metadata.
**Constants**
``NVME_NS_MC_EXTENDED``
If set, indicates the namespace supports the metadata
being transferred as part of a separate buffer that is
specified in the Metadata Pointer.
``NVME_NS_MC_SEPARATE``
If set, indicates that the namespace supports the
metadata being transferred as part of an extended data LBA.
.. c:enum:: nvme_id_ns_dpc
This field indicates the capabilities for the end-to-end data protection feature.
**Constants**
``NVME_NS_DPC_PI_TYPE1``
If set, indicates that the namespace supports
Protection Information Type 1.
``NVME_NS_DPC_PI_TYPE2``
If set, indicates that the namespace supports
Protection Information Type 2.
``NVME_NS_DPC_PI_TYPE3``
If set, indicates that the namespace supports
Protection Information Type 3.
``NVME_NS_DPC_PI_FIRST``
If set, indicates that the namespace supports
protection information transferred as the first eight
bytes of metadata.
``NVME_NS_DPC_PI_LAST``
If set, indicates that the namespace supports
protection information transferred as the last eight
bytes of metadata.
.. c:enum:: nvme_id_ns_dps
This field indicates the Type settings for the end-to-end data protection feature.
**Constants**
``NVME_NS_DPS_PI_NONE``
Protection information is not enabled
``NVME_NS_DPS_PI_TYPE1``
Protection information is enabled, Type 1
``NVME_NS_DPS_PI_TYPE2``
Protection information is enabled, Type 2
``NVME_NS_DPS_PI_TYPE3``
Protection information is enabled, Type 3
``NVME_NS_DPS_PI_MASK``
Mask to get the value of the PI type
``NVME_NS_DPS_PI_FIRST``
If set, indicates that the protection information, if
enabled, is transferred as the first eight bytes of
metadata.
.. c:enum:: nvme_id_ns_nmic
This field specifies multi-path I/O and namespace sharing capabilities of the namespace.
**Constants**
``NVME_NS_NMIC_SHARED``
If set, then the namespace may be attached to two or
more controllers in the NVM subsystem concurrently
.. c:enum:: nvme_id_ns_rescap
This field indicates the reservation capabilities of the namespace.
**Constants**
``NVME_NS_RESCAP_PTPL``
If set, indicates that the namespace supports the
Persist Through Power Loss capability.
``NVME_NS_RESCAP_WE``
If set, indicates that the namespace supports the
Write Exclusive reservation type.
``NVME_NS_RESCAP_EA``
If set, indicates that the namespace supports the
Exclusive Access reservation type.
``NVME_NS_RESCAP_WERO``
If set, indicates that the namespace supports the
Write Exclusive - Registrants Only reservation type.
``NVME_NS_RESCAP_EARO``
If set, indicates that the namespace supports the
Exclusive Access - Registrants Only reservation type.
``NVME_NS_RESCAP_WEAR``
If set, indicates that the namespace supports the
Write Exclusive - All Registrants reservation type.
``NVME_NS_RESCAP_EAAR``
If set, indicates that the namespace supports the
Exclusive Access - All Registrants reservation type.
``NVME_NS_RESCAP_IEK_13``
If set, indicates that Ignore Existing Key is used
as defined in revision 1.3 or later of this specification.
.. c:enum:: nvme_nd_ns_fpi
If a format operation is in progress, this field indicates the percentage of the namespace that remains to be formatted.
**Constants**
``NVME_NS_FPI_REMAINING``
Mask to get the format percent remaining value
``NVME_NS_FPI_SUPPORTED``
If set, indicates that the namespace supports the
Format Progress Indicator defined for the field.
.. c:enum:: nvme_id_ns_dlfeat
This field indicates information about features that affect deallocating logical blocks for this namespace.
**Constants**
``NVME_NS_DLFEAT_RB``
Mask to get the value of the read behavior
``NVME_NS_DLFEAT_RB_NR``
Read behvaior is not reported
``NVME_NS_DLFEAT_RB_ALL_0S``
A deallocated logical block returns all bytes
cleared to 0h.
``NVME_NS_DLFEAT_RB_ALL_FS``
A deallocated logical block returns all bytes
set to FFh.
``NVME_NS_DLFEAT_WRITE_ZEROES``
If set, indicates that the controller supports
the Deallocate bit in the Write Zeroes command
for this namespace.
``NVME_NS_DLFEAT_CRC_GUARD``
If set, indicates that the Guard field for
deallocated logical blocks that contain
protection information is set to the CRC for
the value read from the deallocated logical
block and its metadata
.. c:enum:: nvme_id_ns_attr
Specifies attributes of the namespace.
**Constants**
``NVME_NS_NSATTR_WRITE_PROTECTED``
If set, then the namespace is currently
write protected and all write access to the
namespace shall fail.
.. c:struct:: nvme_ns_id_desc
Namespace identifier type descriptor
**Definition**
::
struct nvme_ns_id_desc {
__u8 nidt;
__u8 nidl;
__le16 rsvd;
__u8 nid[];
};
**Members**
``nidt``
Namespace Identifier Type, see :c:type:`enum nvme_ns_id_desc_nidt <nvme_ns_id_desc_nidt>`
``nidl``
Namespace Identifier Length contains the length in bytes of the
:c:type:`struct nvme_id_ns <nvme_id_ns>`.nid.
``rsvd``
Reserved
``nid``
Namespace Identifier contains a value that is globally unique and
assigned to the namespace when the namespace is created. The length
is defined in :c:type:`struct nvme_id_ns <nvme_id_ns>`.nidl.
.. c:enum:: nvme_ns_id_desc_nidt
Known namespace identifier types
**Constants**
``NVME_NIDT_EUI64``
IEEE Extended Unique Identifier, the NID field contains a
copy of the EUI64 field in the struct nvme_id_ns.eui64.
``NVME_NIDT_NGUID``
Namespace Globally Unique Identifier, the NID field
contains a copy of the NGUID field in struct nvme_id_ns.nguid.
``NVME_NIDT_UUID``
The NID field contains a 128-bit Universally Unique
Identifier (UUID) as specified in RFC 4122.
``NVME_NIDT_CSI``
The NID field contains the command set identifier.
.. c:struct:: nvme_nvmset_attr
NVM Set Attributes Entry
**Definition**
::
struct nvme_nvmset_attr {
__le16 nvmsetid;
__le16 endgid;
__u8 rsvd4[4];
__le32 rr4kt;
__le32 ows;
__u8 tnvmsetcap[16];
__u8 unvmsetcap[16];
__u8 rsvd48[80];
};
**Members**
``nvmsetid``
NVM Set Identifier
``endgid``
Endurance Group Identifier
``rsvd4``
Reserved
``rr4kt``
Random 4 KiB Read Typical indicates the typical
time to complete a 4 KiB random read in 100 nanosecond units
when the NVM Set is in a Predictable Latency Mode Deterministic
Window and there is 1 outstanding command per NVM Set.
``ows``
Optimal Write Size
``tnvmsetcap``
Total NVM Set Capacity
``unvmsetcap``
Unallocated NVM Set Capacity
``rsvd48``
Reserved
.. c:struct:: nvme_id_nvmset_list
NVM set list
**Definition**
::
struct nvme_id_nvmset_list {
__u8 nid;
__u8 rsvd1[127];
struct nvme_nvmset_attr ent[NVME_ID_NVMSET_LIST_MAX];
};
**Members**
``nid``
Nvmset id
``rsvd1``
Reserved
``ent``
nvmset id list
.. c:struct:: nvme_id_independent_id_ns
Identify - I/O Command Set Independent Identify Namespace Data Structure
**Definition**
::
struct nvme_id_independent_id_ns {
__u8 nsfeat;
__u8 nmic;
__u8 rescap;
__u8 fpi;
__le32 anagrpid;
__u8 nsattr;
__u8 rsvd9;
__le16 nvmsetid;
__le16 endgid;
__u8 nstat;
__u8 rsvd15[4081];
};
**Members**
``nsfeat``
common namespace features
``nmic``
Namespace Multi-path I/O and Namespace
Sharing Capabilities
``rescap``
Reservation Capabilities
``fpi``
Format Progress Indicator
``anagrpid``
ANA Group Identifier
``nsattr``
Namespace Attributes
``rsvd9``
reserved
``nvmsetid``
NVM Set Identifier
``endgid``
Endurance Group Identifier
``nstat``
Namespace Status
``rsvd15``
reserved
.. c:struct:: nvme_id_ns_granularity_desc
Namespace Granularity Descriptor
**Definition**
::
struct nvme_id_ns_granularity_desc {
__le64 nszegran;
__le64 ncapgran;
};
**Members**
``nszegran``
Namespace Size Granularity
``ncapgran``
Namespace Capacity Granularity
.. c:struct:: nvme_id_ns_granularity_list
Namespace Granularity List
**Definition**
::
struct nvme_id_ns_granularity_list {
__le32 attributes;
__u8 num_descriptors;
__u8 rsvd5[27];
struct nvme_id_ns_granularity_desc entry[NVME_ID_ND_DESCRIPTOR_MAX];
__u8 rsvd288[3808];
};
**Members**
``attributes``
Namespace Granularity Attributes
``num_descriptors``
Number of Descriptors
``rsvd5``
reserved
``entry``
Namespace Granularity Descriptor
``rsvd288``
reserved
.. c:struct:: nvme_id_uuid_list_entry
UUID List Entry
**Definition**
::
struct nvme_id_uuid_list_entry {
__u8 header;
__u8 rsvd1[15];
__u8 uuid[16];
};
**Members**
``header``
UUID Lists Entry Header
``rsvd1``
reserved
``uuid``
128-bit Universally Unique Identifier
.. c:enum:: nvme_id_uuid
Identifier Association
**Constants**
``NVME_ID_UUID_HDR_ASSOCIATION_MASK``
``NVME_ID_UUID_ASSOCIATION_NONE``
``NVME_ID_UUID_ASSOCIATION_VENDOR``
``NVME_ID_UUID_ASSOCIATION_SUBSYSTEM_VENDOR``
.. c:struct:: nvme_id_uuid_list
UUID list
**Definition**
::
struct nvme_id_uuid_list {
__u8 rsvd0[32];
struct nvme_id_uuid_list_entry entry[NVME_ID_UUID_LIST_MAX];
};
**Members**
``rsvd0``
reserved
``entry``
UUID list entry
.. c:struct:: nvme_ctrl_list
Controller List
**Definition**
::
struct nvme_ctrl_list {
__le16 num;
__le16 identifier[NVME_ID_CTRL_LIST_MAX];
};
**Members**
``num``
Number of Identifiers
``identifier``
NVM subsystem unique controller identifier
.. c:struct:: nvme_ns_list
Namespace List
**Definition**
::
struct nvme_ns_list {
__le32 ns[NVME_ID_NS_LIST_MAX];
};
**Members**
``ns``
Namespace Identifier
.. c:struct:: nvme_id_ctrl_nvm
I/O Command Set Specific Identify Controller data structure
**Definition**
::
struct nvme_id_ctrl_nvm {
__u8 vsl;
__u8 wzsl;
__u8 wusl;
__u8 dmrl;
__u32 dmrsl;
__u64 dmsl;
__u8 rsvd16[4080];
};
**Members**
``vsl``
Verify Size Limit
``wzsl``
Write Zeroes Size Limit
``wusl``
Write Uncorrectable Size Limit
``dmrl``
Dataset Management Ranges Limit
``dmrsl``
Dataset Management Range Size Limit
``dmsl``
Dataset Management Size Limit
``rsvd16``
reserved
.. c:struct:: nvme_nvm_id_ns
NVME Command Set I/O Command Set Specific Identify Namespace Data Structure
**Definition**
::
struct nvme_nvm_id_ns {
__le64 lbstm;
__u8 pic;
__u8 rsvd9[3];
__le32 elbaf[64];
__u8 rsvd268[3828];
};
**Members**
``lbstm``
Logical Block Storage Tag Mask
``pic``
Protection Information Capabilities
``rsvd9``
Reserved
``elbaf``
List of Extended LBA Format Support
``rsvd268``
Reserved
.. c:struct:: nvme_zns_lbafe
LBA Format Extension Data Structure
**Definition**
::
struct nvme_zns_lbafe {
__le64 zsze;
__u8 zdes;
__u8 rsvd9[7];
};
**Members**
``zsze``
Zone Size
``zdes``
Zone Descriptor Extension Size
``rsvd9``
reserved
.. c:struct:: nvme_zns_id_ns
Zoned Namespace Command Set Specific Identify Namespace Data Structure
**Definition**
::
struct nvme_zns_id_ns {
__le16 zoc;
__le16 ozcs;
__le32 mar;
__le32 mor;
__le32 rrl;
__le32 frl;
__le32 rrl1;
__le32 rrl2;
__le32 rrl3;
__le32 frl1;
__le32 frl2;
__le32 frl3;
__le32 numzrwa;
__le16 zrwafg;
__le16 zrwasz;
__u8 zrwacap;
__u8 rsvd53[2763];
struct nvme_zns_lbafe lbafe[64];
__u8 vs[256];
};
**Members**
``zoc``
Zone Operation Characteristics
``ozcs``
Optional Zoned Command Support
``mar``
Maximum Active Resources
``mor``
Maximum Open Resources
``rrl``
Reset Recommended Limit
``frl``
Finish Recommended Limit
``rrl1``
Reset Recommended Limit 1
``rrl2``
Reset Recommended Limit 2
``rrl3``
Reset Recommended Limit 3
``frl1``
Finish Recommended Limit 1
``frl2``
Finish Recommended Limit 2
``frl3``
Finish Recommended Limit 3
``numzrwa``
Number of ZRWA Resources
``zrwafg``
ZRWA Flush Granularity
``zrwasz``
ZRWA Size
``zrwacap``
ZRWA Capability
``rsvd53``
Reserved
``lbafe``
LBA Format Extension
``vs``
Vendor Specific
.. c:struct:: nvme_zns_id_ctrl
I/O Command Set Specific Identify Controller Data Structure for the Zoned Namespace Command Set
**Definition**
::
struct nvme_zns_id_ctrl {
__u8 zasl;
__u8 rsvd1[4095];
};
**Members**
``zasl``
Zone Append Size Limit
``rsvd1``
Reserved
.. c:struct:: nvme_primary_ctrl_cap
Identify - Controller Capabilities Structure
**Definition**
::
struct nvme_primary_ctrl_cap {
__le16 cntlid;
__le16 portid;
__u8 crt;
__u8 rsvd5[27];
__le32 vqfrt;
__le32 vqrfa;
__le16 vqrfap;
__le16 vqprt;
__le16 vqfrsm;
__le16 vqgran;
__u8 rsvd48[16];
__le32 vifrt;
__le32 virfa;
__le16 virfap;
__le16 viprt;
__le16 vifrsm;
__le16 vigran;
__u8 rsvd80[4016];
};
**Members**
``cntlid``
Controller Identifier
``portid``
Port Identifier
``crt``
Controller Resource Types
``rsvd5``
reserved
``vqfrt``
VQ Resources Flexible Total
``vqrfa``
VQ Resources Flexible Assigned
``vqrfap``
VQ Resources Flexible Allocated to Primary
``vqprt``
VQ Resources Private Total
``vqfrsm``
VQ Resources Flexible Secondary Maximum
``vqgran``
VQ Flexible Resource Preferred Granularity
``rsvd48``
reserved
``vifrt``
VI Resources Flexible Total
``virfa``
VI Resources Flexible Assigned
``virfap``
VI Resources Flexible Allocated to Primary
``viprt``
VI Resources Private Total
``vifrsm``
VI Resources Flexible Secondary Maximum
``vigran``
VI Flexible Resource Preferred Granularity
``rsvd80``
reserved
.. c:struct:: nvme_secondary_ctrl
Secondary Controller Entry
**Definition**
::
struct nvme_secondary_ctrl {
__le16 scid;
__le16 pcid;
__u8 scs;
__u8 rsvd5[3];
__le16 vfn;
__le16 nvq;
__le16 nvi;
__u8 rsvd14[18];
};
**Members**
``scid``
Secondary Controller Identifier
``pcid``
Primary Controller Identifier
``scs``
Secondary Controller State
``rsvd5``
Reserved
``vfn``
Virtual Function Number
``nvq``
Number of VQ Flexible Resources Assigned
``nvi``
Number of VI Flexible Resources Assigned
``rsvd14``
Reserved
.. c:struct:: nvme_secondary_ctrl_list
Secondary Controller List
**Definition**
::
struct nvme_secondary_ctrl_list {
__u8 num;
__u8 rsvd[31];
struct nvme_secondary_ctrl sc_entry[NVME_ID_SECONDARY_CTRL_MAX];
};
**Members**
``num``
Number of Identifiers
``rsvd``
Reserved
``sc_entry``
Secondary Controller Entry
.. c:struct:: nvme_id_iocs
NVMe Identify IO Command Set data structure
**Definition**
::
struct nvme_id_iocs {
__u64 iocsc[512];
};
**Members**
``iocsc``
List of supported IO Command Set Combination vectors
.. c:struct:: nvme_id_domain_attr
Domain Attributes Entry
**Definition**
::
struct nvme_id_domain_attr {
__le16 dom_id;
__u8 rsvd2[14];
__u8 dom_cap[16];
__u8 unalloc_dom_cap[16];
__u8 max_egrp_dom_cap[16];
__u8 rsvd64[64];
};
**Members**
``dom_id``
Domain Identifier
``rsvd2``
Reserved
``dom_cap``
Total Domain Capacity
``unalloc_dom_cap``
Unallocated Domain Capacity
``max_egrp_dom_cap``
Max Endurance Group Domain Capacity
``rsvd64``
Reserved
.. c:struct:: nvme_id_domain_list
Domain List
**Definition**
::
struct nvme_id_domain_list {
__u8 num;
__u8 rsvd[127];
struct nvme_id_domain_attr domain_attr[NVME_ID_DOMAIN_LIST_MAX];
};
**Members**
``num``
Number of domain attributes
``rsvd``
Reserved
``domain_attr``
List of domain attributes
.. c:struct:: nvme_id_endurance_group_list
Endurance Group List
**Definition**
::
struct nvme_id_endurance_group_list {
__le16 num;
__le16 identifier[NVME_ID_ENDURANCE_GROUP_LIST_MAX];
};
**Members**
``num``
Number of Identifiers
``identifier``
Endurance Group Identifier
.. c:struct:: nvme_supported_log_pages
Supported Log Pages - Log
**Definition**
::
struct nvme_supported_log_pages {
__le32 lid_support[NVME_LOG_SUPPORTED_LOG_PAGES_MAX];
};
**Members**
``lid_support``
Log Page Identifier Supported
**Description**
Supported Log Pages (Log Identifier 00h)
.. c:struct:: nvme_error_log_page
Error Information Log Entry (Log Identifier 01h)
**Definition**
::
struct nvme_error_log_page {
__le64 error_count;
__le16 sqid;
__le16 cmdid;
__le16 status_field;
__le16 parm_error_location;
__le64 lba;
__le32 nsid;
__u8 vs;
__u8 trtype;
__u8 rsvd[2];
__le64 cs;
__le16 trtype_spec_info;
__u8 rsvd2[22];
};
**Members**
``error_count``
Error Count: a 64-bit incrementing error count,
indicating a unique identifier for this error. The error
count starts at ``1h``, is incremented for each unique error
log entry, and is retained across power off conditions.
A value of ``0h`` indicates an invalid entry; this value
is used when there are lost entries or when there are
fewer errors than the maximum number of entries the
controller supports. If the value of this field is
``FFFFFFFFh``, then the field shall be set to 1h when
incremented (i.e., rolls over to ``1h``). Prior to NVMe
1.4, processing of incrementing beyond ``FFFFFFFFh`` is
unspecified.
``sqid``
Submission Queue ID: indicates the Submission Queue
Identifier of the command that the error information is
associated with. If the error is not specific to
a particular command, then this field shall be set to
``FFFFh``.
``cmdid``
Command ID: indicates the Command Identifier of the
command that the error is associated with. If the error
is not specific to a particular command, then this field
shall be set to ``FFFFh``.
``status_field``
Bits 15-1: Status Field: indicates the Status Field for
the command that completed. If the error is not specific
to a particular command, then this field reports the most
applicable status value.
Bit 0: Phase Tag: may indicate the Phase Tag posted for
the command.
``parm_error_location``
Parameter Error Location: indicates the byte and bit of
the command parameter that the error is associated with,
if applicable. If the parameter spans multiple bytes or
bits, then the location indicates the first byte and bit
of the parameter.
Bits 10-8: Bit in command that contained the error.
Valid values are 0 to 7.
Bits 7-0: Byte in command that contained the error.
Valid values are 0 to 63.
``lba``
LBA: This field indicates the first LBA that experienced
the error condition, if applicable.
``nsid``
Namespace: This field indicates the NSID of the namespace
that the error is associated with, if applicable.
``vs``
Vendor Specific Information Available: If there is
additional vendor specific error information available,
this field provides the log page identifier associated
with that page. A value of ``0h`` indicates that no additional
information is available. Valid values are in the range
of ``80h`` to ``FFh``.
``trtype``
Transport Type (TRTYPE): indicates the Transport Type of
the transport associated with the error. The values in
this field are the same as the TRTYPE values in the
Discovery Log Page Entry. If the error is not transport
related, this field shall be cleared to ``0h``. If the error
is transport related, this field shall be set to the type
of the transport - see :c:type:`enum nvme_trtype <nvme_trtype>`.
``rsvd``
Reserved
``cs``
Command Specific Information: This field contains command
specific information. If used, the command definition
specifies the information returned.
``trtype_spec_info``
Transport Type Specific Information
``rsvd2``
Reserved
.. c:struct:: nvme_smart_log
SMART / Health Information Log (Log Identifier 02h)
**Definition**
::
struct nvme_smart_log {
__u8 critical_warning;
__u8 temperature[2];
__u8 avail_spare;
__u8 spare_thresh;
__u8 percent_used;
__u8 endu_grp_crit_warn_sumry;
__u8 rsvd7[25];
__u8 data_units_read[16];
__u8 data_units_written[16];
__u8 host_reads[16];
__u8 host_writes[16];
__u8 ctrl_busy_time[16];
__u8 power_cycles[16];
__u8 power_on_hours[16];
__u8 unsafe_shutdowns[16];
__u8 media_errors[16];
__u8 num_err_log_entries[16];
__le32 warning_temp_time;
__le32 critical_comp_time;
__le16 temp_sensor[8];
__le32 thm_temp1_trans_count;
__le32 thm_temp2_trans_count;
__le32 thm_temp1_total_time;
__le32 thm_temp2_total_time;
__u8 rsvd232[280];
};
**Members**
``critical_warning``
This field indicates critical warnings for the state
of the controller. Critical warnings may result in an
asynchronous event notification to the host. Bits in
this field represent the current associated state and
are not persistent (see :c:type:`enum nvme_smart_crit <nvme_smart_crit>`).
``temperature``
Composite Temperature: Contains a value corresponding
to a temperature in Kelvins that represents the current
composite temperature of the controller and namespace(s)
associated with that controller. The manner in which
this value is computed is implementation specific and
may not represent the actual temperature of any physical
point in the NVM subsystem. Warning and critical
overheating composite temperature threshold values are
reported by the WCTEMP and CCTEMP fields in the Identify
Controller data structure.
``avail_spare``
Available Spare: Contains a normalized percentage (0%
to 100%) of the remaining spare capacity available.
``spare_thresh``
Available Spare Threshold: When the Available Spare
falls below the threshold indicated in this field, an
asynchronous event completion may occur. The value is
indicated as a normalized percentage (0% to 100%).
The values 101 to 255 are reserved.
``percent_used``
Percentage Used: Contains a vendor specific estimate
of the percentage of NVM subsystem life used based on
the actual usage and the manufacturer's prediction of
NVM life. A value of 100 indicates that the estimated
endurance of the NVM in the NVM subsystem has been
consumed, but may not indicate an NVM subsystem failure.
The value is allowed to exceed 100. Percentages greater
than 254 shall be represented as 255. This value shall
be updated once per power-on hour (when the controller
is not in a sleep state).
``endu_grp_crit_warn_sumry``
Endurance Group Critical Warning Summary: This field
indicates critical warnings for the state of Endurance
Groups. Bits in this field represent the current associated
state and are not persistent (see :c:type:`enum nvme_smart_egcw <nvme_smart_egcw>`).
``rsvd7``
Reserved
``data_units_read``
Data Units Read: Contains the number of 512 byte data
units the host has read from the controller; this value
does not include metadata. This value is reported in
thousands (i.e., a value of 1 corresponds to 1000
units of 512 bytes read) and is rounded up (e.g., one
indicates the that number of 512 byte data units read
is from 1 to 1000, three indicates that the number of
512 byte data units read is from 2001 to 3000). When
the LBA size is a value other than 512 bytes, the
controller shall convert the amount of data read to
512 byte units. For the NVM command set, logical blocks
read as part of Compare, Read, and Verify operations
shall be included in this value. A value of ``0h`` in
this field indicates that the number of Data Units Read
is not reported.
``data_units_written``
Data Units Written: Contains the number of 512 byte
data units the host has written to the controller;
this value does not include metadata. This value is
reported in thousands (i.e., a value of 1 corresponds
to 1000 units of 512 bytes written) and is rounded up
(e.g., one indicates that the number of 512 byte data
units written is from 1 to 1,000, three indicates that
the number of 512 byte data units written is from 2001
to 3000). When the LBA size is a value other than 512
bytes, the controller shall convert the amount of data
written to 512 byte units. For the NVM command set,
logical blocks written as part of Write operations shall
be included in this value. Write Uncorrectable commands
and Write Zeroes commands shall not impact this value.
A value of ``0h`` in this field indicates that the number
of Data Units Written is not reported.
``host_reads``
Host Read Commands: Contains the number of read commands
completed by the controller. For the NVM command set,
this value is the sum of the number of Compare commands
and the number of Read commands.
``host_writes``
Host Write Commands: Contains the number of write
commands completed by the controller. For the NVM
command set, this is the number of Write commands.
``ctrl_busy_time``
Controller Busy Time: Contains the amount of time the
controller is busy with I/O commands. The controller
is busy when there is a command outstanding to an I/O
Queue (specifically, a command was issued via an I/O
Submission Queue Tail doorbell write and the corresponding
completion queue entry has not been posted yet to the
associated I/O Completion Queue). This value is
reported in minutes.
``power_cycles``
Power Cycles: Contains the number of power cycles.
``power_on_hours``
Power On Hours: Contains the number of power-on hours.
This may not include time that the controller was
powered and in a non-operational power state.
``unsafe_shutdowns``
Unsafe Shutdowns: Contains the number of unsafe
shutdowns. This count is incremented when a Shutdown
Notification (CC.SHN) is not received prior to loss of power.
``media_errors``
Media and Data Integrity Errors: Contains the number
of occurrences where the controller detected an
unrecovered data integrity error. Errors such as
uncorrectable ECC, CRC checksum failure, or LBA tag
mismatch are included in this field. Errors introduced
as a result of a Write Uncorrectable command may or
may not be included in this field.
``num_err_log_entries``
Number of Error Information Log Entries: Contains the
number of Error Information log entries over the life
of the controller.
``warning_temp_time``
Warning Composite Temperature Time: Contains the amount
of time in minutes that the controller is operational
and the Composite Temperature is greater than or equal
to the Warning Composite Temperature Threshold (WCTEMP)
field and less than the Critical Composite Temperature
Threshold (CCTEMP) field in the Identify Controller
data structure. If the value of the WCTEMP or CCTEMP
field is ``0h``, then this field is always cleared to ``0h``
regardless of the Composite Temperature value.
``critical_comp_time``
Critical Composite Temperature Time: Contains the amount
of time in minutes that the controller is operational
and the Composite Temperature is greater than or equal
to the Critical Composite Temperature Threshold (CCTEMP)
field in the Identify Controller data structure. If
the value of the CCTEMP field is ``0h``, then this field
is always cleared to 0h regardless of the Composite
Temperature value.
``temp_sensor``
Temperature Sensor 1-8: Contains the current temperature
in degrees Kelvin reported by temperature sensors 1-8.
The physical point in the NVM subsystem whose temperature
is reported by the temperature sensor and the temperature
accuracy is implementation specific. An implementation
that does not implement the temperature sensor reports
a value of ``0h``.
``thm_temp1_trans_count``
Thermal Management Temperature 1 Transition Count:
Contains the number of times the controller transitioned
to lower power active power states or performed vendor
specific thermal management actions while minimizing
the impact on performance in order to attempt to reduce
the Composite Temperature because of the host controlled
thermal management feature (i.e., the Composite
Temperature rose above the Thermal Management
Temperature 1). This counter shall not wrap once the
value ``FFFFFFFFh`` is reached. A value of ``0h``, indicates
that this transition has never occurred or this field
is not implemented.
``thm_temp2_trans_count``
Thermal Management Temperature 2 Transition Count
``thm_temp1_total_time``
Total Time For Thermal Management Temperature 1:
Contains the number of seconds that the controller
had transitioned to lower power active power states or
performed vendor specific thermal management actions
while minimizing the impact on performance in order to
attempt to reduce the Composite Temperature because of
the host controlled thermal management feature. This
counter shall not wrap once the value ``FFFFFFFFh`` is
reached. A value of ``0h``, indicates that this transition
has never occurred or this field is not implemented.
``thm_temp2_total_time``
Total Time For Thermal Management Temperature 2
``rsvd232``
Reserved
.. c:enum:: nvme_smart_crit
Critical Warning
**Constants**
``NVME_SMART_CRIT_SPARE``
If set, then the available spare capacity has fallen
below the threshold.
``NVME_SMART_CRIT_TEMPERATURE``
If set, then a temperature is either greater
than or equal to an over temperature threshold; or
less than or equal to an under temperature threshold.
``NVME_SMART_CRIT_DEGRADED``
If set, then the NVM subsystem reliability has
been degraded due to significant media related errors
or any internal error that degrades NVM subsystem
reliability.
``NVME_SMART_CRIT_MEDIA``
If set, then all of the media has been placed in read
only mode. The controller shall not set this bit if
the read-only condition on the media is a result of
a change in the write protection state of a namespace.
``NVME_SMART_CRIT_VOLATILE_MEMORY``
If set, then the volatile memory backup
device has failed. This field is only valid if the
controller has a volatile memory backup solution.
``NVME_SMART_CRIT_PMR_RO``
If set, then the Persistent Memory Region has become
read-only or unreliable.
.. c:enum:: nvme_smart_egcw
Endurance Group Critical Warning Summary
**Constants**
``NVME_SMART_EGCW_SPARE``
If set, then the available spare capacity of one or
more Endurance Groups has fallen below the threshold.
``NVME_SMART_EGCW_DEGRADED``
If set, then the reliability of one or more
Endurance Groups has been degraded due to significant
media related errors or any internal error that
degrades NVM subsystem reliability.
``NVME_SMART_EGCW_RO``
If set, then the namespaces in one or more Endurance
Groups have been placed in read only mode not as
a result of a change in the write protection state
of a namespace.
.. c:struct:: nvme_firmware_slot
Firmware Slot Information Log
**Definition**
::
struct nvme_firmware_slot {
__u8 afi;
__u8 rsvd1[7];
char frs[7][8];
__u8 rsvd2[448];
};
**Members**
``afi``
Active Firmware Info
``rsvd1``
Reserved
``frs``
Firmware Revision for Slot
``rsvd2``
Reserved
.. c:struct:: nvme_cmd_effects_log
Commands Supported and Effects Log
**Definition**
::
struct nvme_cmd_effects_log {
__le32 acs[256];
__le32 iocs[256];
__u8 rsvd[2048];
};
**Members**
``acs``
Admin Command Supported
``iocs``
I/O Command Supported
``rsvd``
Reserved
.. c:enum:: nvme_cmd_effects
Commands Supported and Effects
**Constants**
``NVME_CMD_EFFECTS_CSUPP``
Command Supported
``NVME_CMD_EFFECTS_LBCC``
Logical Block Content Change
``NVME_CMD_EFFECTS_NCC``
Namespace Capability Change
``NVME_CMD_EFFECTS_NIC``
Namespace Inventory Change
``NVME_CMD_EFFECTS_CCC``
Controller Capability Change
``NVME_CMD_EFFECTS_CSE_MASK``
Command Submission and Execution
``NVME_CMD_EFFECTS_UUID_SEL``
UUID Selection Supported
.. c:struct:: nvme_st_result
Self-test Result
**Definition**
::
struct nvme_st_result {
__u8 dsts;
__u8 seg;
__u8 vdi;
__u8 rsvd;
__le64 poh;
__le32 nsid;
__le64 flba;
__u8 sct;
__u8 sc;
__u8 vs[2];
};
**Members**
``dsts``
Device Self-test Status: Indicates the device self-test code and the
status of the operation (see :c:type:`enum nvme_status_result <nvme_status_result>` and :c:type:`enum nvme_st_code <nvme_st_code>`).
``seg``
Segment Number: Iindicates the segment number where the first self-test
failure occurred. If Device Self-test Status (**dsts**) is not set to
#NVME_ST_RESULT_KNOWN_SEG_FAIL, then this field should be ignored.
``vdi``
Valid Diagnostic Information: Indicates the diagnostic failure
information that is reported. See :c:type:`enum nvme_st_valid_diag_info <nvme_st_valid_diag_info>`.
``rsvd``
Reserved
``poh``
Power On Hours (POH): Indicates the number of power-on hours at the
time the device self-test operation was completed or aborted. This
does not include time that the controller was powered and in a low
power state condition.
``nsid``
Namespace Identifier (NSID): Indicates the namespace that the Failing
LBA occurred on. Valid only when the NSID Valid bit
(#NVME_ST_VALID_DIAG_INFO_NSID) is set in the Valid Diagnostic
Information (**vdi**) field.
``flba``
Failing LBA: indicates the LBA of the logical block that caused the
test to fail. If the device encountered more than one failed logical
block during the test, then this field only indicates one of those
failed logical blocks. Valid only when the NSID Valid bit
(#NVME_ST_VALID_DIAG_INFO_FLBA) is set in the Valid Diagnostic
Information (**vdi**) field.
``sct``
Status Code Type: This field may contain additional information related
to errors or conditions. Bits 2:0 may contain additional information
relating to errors or conditions that occurred during the device
self-test operation represented in the same format used in the Status
Code Type field of the completion queue entry (refer to :c:type:`enum nvme_status_field <nvme_status_field>`).
Valid only when the NSID Valid bit (#NVME_ST_VALID_DIAG_INFO_SCT) is
set in the Valid Diagnostic Information (**vdi**) field.
``sc``
Status Code: This field may contain additional information relating
to errors or conditions that occurred during the device self-test
operation represented in the same format used in the Status Code field
of the completion queue entry. Valid only when the SCT Valid bit
(#NVME_ST_VALID_DIAG_INFO_SC) is set in the Valid Diagnostic
Information (**vdi**) field.
``vs``
Vendor Specific.
.. c:enum:: nvme_status_result
Result of the device self-test operation
**Constants**
``NVME_ST_RESULT_NO_ERR``
Operation completed without error.
``NVME_ST_RESULT_ABORTED``
Operation was aborted by a Device Self-test command.
``NVME_ST_RESULT_CLR``
Operation was aborted by a Controller Level Reset.
``NVME_ST_RESULT_NS_REMOVED``
Operation was aborted due to a removal of
a namespace from the namespace inventory.
``NVME_ST_RESULT_ABORTED_FORMAT``
Operation was aborted due to the processing
of a Format NVM command.
``NVME_ST_RESULT_FATAL_ERR``
A fatal error or unknown test error occurred
while the controller was executing the device
self-test operation and the operation did
not complete.
``NVME_ST_RESULT_UNKNOWN_SEG_FAIL``
Operation completed with a segment that failed
and the segment that failed is not known.
``NVME_ST_RESULT_KNOWN_SEG_FAIL``
Operation completed with one or more failed
segments and the first segment that failed
is indicated in the Segment Number field.
``NVME_ST_RESULT_ABORTED_UNKNOWN``
Operation was aborted for unknown reason.
``NVME_ST_RESULT_ABORTED_SANITIZE``
Operation was aborted due to a sanitize operation.
``NVME_ST_RESULT_NOT_USED``
Entry not used (does not contain a test result).
``NVME_ST_RESULT_MASK``
Mask to get the status result value from
the :c:type:`struct nvme_st_result <nvme_st_result>`.dsts field.
.. c:enum:: nvme_st_code
Self-test Code value
**Constants**
``NVME_ST_CODE_RESERVED``
Reserved.
``NVME_ST_CODE_SHORT``
Short device self-test operation.
``NVME_ST_CODE_EXTENDED``
Extended device self-test operation.
``NVME_ST_CODE_VS``
Vendor specific.
``NVME_ST_CODE_ABORT``
Abort device self-test operation.
``NVME_ST_CODE_SHIFT``
Shift amount to get the code value from the
:c:type:`struct nvme_st_result <nvme_st_result>`.dsts field.
.. c:enum:: nvme_st_curr_op
Current Device Self-Test Operation
**Constants**
``NVME_ST_CURR_OP_NOT_RUNNING``
No device self-test operation in progress.
``NVME_ST_CURR_OP_SHORT``
Short device self-test operation in progress.
``NVME_ST_CURR_OP_EXTENDED``
Extended device self-test operation in progress.
``NVME_ST_CURR_OP_VS``
Vendor specific.
``NVME_ST_CURR_OP_RESERVED``
Reserved.
``NVME_ST_CURR_OP_MASK``
Mask to get the current operation value from the
:c:type:`struct nvme_self_test_log <nvme_self_test_log>`.current_operation field.
``NVME_ST_CURR_OP_CMPL_MASK``
Mask to get the current operation completion value
from the :c:type:`struct nvme_self_test_log <nvme_self_test_log>`.completion field.
.. c:enum:: nvme_st_valid_diag_info
Valid Diagnostic Information
**Constants**
``NVME_ST_VALID_DIAG_INFO_NSID``
NSID Valid: if set, then the contents of
the Namespace Identifier field are valid.
``NVME_ST_VALID_DIAG_INFO_FLBA``
FLBA Valid: if set, then the contents of
the Failing LBA field are valid.
``NVME_ST_VALID_DIAG_INFO_SCT``
SCT Valid: if set, then the contents of
the Status Code Type field are valid.
``NVME_ST_VALID_DIAG_INFO_SC``
SC Valid: if set, then the contents of
the Status Code field are valid.
.. c:struct:: nvme_self_test_log
Device Self-test (Log Identifier 06h)
**Definition**
::
struct nvme_self_test_log {
__u8 current_operation;
__u8 completion;
__u8 rsvd[2];
struct nvme_st_result result[NVME_LOG_ST_MAX_RESULTS];
};
**Members**
``current_operation``
Current Device Self-Test Operation: indicates the status
of the current device self-test operation. If a device
self-test operation is in process (i.e., this field is set
to #NVME_ST_CURR_OP_SHORT or #NVME_ST_CURR_OP_EXTENDED),
then the controller shall not set this field to
#NVME_ST_CURR_OP_NOT_RUNNING until a new Self-test Result
Data Structure is created (i.e., if a device self-test
operation completes or is aborted, then the controller
shall create a Self-test Result Data Structure prior to
setting this field to #NVME_ST_CURR_OP_NOT_RUNNING).
See :c:type:`enum nvme_st_curr_op <nvme_st_curr_op>`.
``completion``
Current Device Self-Test Completion: indicates the percentage
of the device self-test operation that is complete (e.g.,
a value of 25 indicates that 25% of the device self-test
operation is complete and 75% remains to be tested).
If the **current_operation** field is cleared to
#NVME_ST_CURR_OP_NOT_RUNNING (indicating there is no device
self-test operation in progress), then this field is ignored.
``rsvd``
Reserved
``result``
Self-test Result Data Structures, see :c:type:`struct nvme_st_result <nvme_st_result>`.
.. c:enum:: nvme_cmd_get_log_telemetry_host_lsp
Telemetry Host-Initiated log specific field
**Constants**
``NVME_LOG_TELEM_HOST_LSP_RETAIN``
Get Telemetry Data Blocks
``NVME_LOG_TELEM_HOST_LSP_CREATE``
Create Telemetry Data Blocks
.. c:struct:: nvme_telemetry_log
Retrieve internal data specific to the manufacturer.
**Definition**
::
struct nvme_telemetry_log {
__u8 lpi;
__u8 rsvd1[4];
__u8 ieee[3];
__le16 dalb1;
__le16 dalb2;
__le16 dalb3;
__u8 rsvd14[2];
__le32 dalb4;
__u8 rsvd20[361];
__u8 hostdgn;
__u8 ctrlavail;
__u8 ctrldgn;
__u8 rsnident[128];
__u8 data_area[];
};
**Members**
``lpi``
Log Identifier, either ``NVME_LOG_LID_TELEMETRY_HOST`` or
``NVME_LOG_LID_TELEMETRY_CTRL``
``rsvd1``
Reserved
``ieee``
IEEE OUI Identifier is the Organization Unique Identifier (OUI)
for the controller vendor that is able to interpret the data.
``dalb1``
Telemetry Controller-Initiated Data Area 1 Last Block is
the value of the last block in this area.
``dalb2``
Telemetry Controller-Initiated Data Area 1 Last Block is
the value of the last block in this area.
``dalb3``
Telemetry Controller-Initiated Data Area 1 Last Block is
the value of the last block in this area.
``rsvd14``
Reserved
``dalb4``
Telemetry Controller-Initiated Data Area 4 Last Block is
the value of the last block in this area.
``rsvd20``
Reserved
``hostdgn``
Telemetry Host-Initiated Data Generation Number is a
value that is incremented each time the host initiates a
capture of its internal controller state in the controller .
``ctrlavail``
Telemetry Controller-Initiated Data Available, if cleared,
then the controller telemetry log does not contain saved
internal controller state. If this field is set to 1h, the
controller log contains saved internal controller state. If
this field is set to 1h, the data will be latched until the
host releases it by reading the log with RAE cleared.
``ctrldgn``
Telemetry Controller-Initiated Data Generation Number is
a value that is incremented each time the controller initiates a
capture of its internal controller state in the controller .
``rsnident``
Reason Identifiers a vendor specific identifier that describes
the operating conditions of the controller at the time of
capture.
``data_area``
Telemetry data blocks, vendor specific information data.
**Description**
This log consists of a header describing the log and zero or more Telemetry
Data Blocks. All Telemetry Data Blocks are ``NVME_LOG_TELEM_BLOCK_SIZE``, 512
bytes, in size. This log captures the controllers internal state.
.. c:struct:: nvme_endurance_group_log
Endurance Group Information Log
**Definition**
::
struct nvme_endurance_group_log {
__u8 critical_warning;
__u8 rsvd1[2];
__u8 avl_spare;
__u8 avl_spare_threshold;
__u8 percent_used;
__u8 rsvd6[26];
__u8 endurance_estimate[16];
__u8 data_units_read[16];
__u8 data_units_written[16];
__u8 media_units_written[16];
__u8 host_read_cmds[16];
__u8 host_write_cmds[16];
__u8 media_data_integrity_err[16];
__u8 num_err_info_log_entries[16];
__u8 rsvd160[352];
};
**Members**
``critical_warning``
Critical Warning
``rsvd1``
Reserved
``avl_spare``
Available Spare
``avl_spare_threshold``
Available Spare Threshold
``percent_used``
Percentage Used
``rsvd6``
Reserved
``endurance_estimate``
Endurance Estimate
``data_units_read``
Data Units Read
``data_units_written``
Data Units Written
``media_units_written``
Media Units Written
``host_read_cmds``
Host Read Commands
``host_write_cmds``
Host Write Commands
``media_data_integrity_err``
Media and Data Integrity Errors
``num_err_info_log_entries``
Number of Error Information Log Entries
``rsvd160``
Reserved
.. c:enum:: nvme_eg_critical_warning_flags
Endurance Group Information Log - Critical Warning
**Constants**
``NVME_EG_CRITICAL_WARNING_SPARE``
Available spare capacity of the Endurance Group
has fallen below the threshold
``NVME_EG_CRITICAL_WARNING_DEGRADED``
Endurance Group reliability has been degraded
``NVME_EG_CRITICAL_WARNING_READ_ONLY``
Endurance Group have been placed in read only
mode
.. c:struct:: nvme_aggregate_endurance_group_event
Endurance Group Event Aggregate
**Definition**
::
struct nvme_aggregate_endurance_group_event {
__le64 num_entries;
__le16 entries[];
};
**Members**
``num_entries``
Number or entries
``entries``
List of entries
.. c:struct:: nvme_nvmset_predictable_lat_log
Predictable Latency Mode - Deterministic Threshold Configuration Data
**Definition**
::
struct nvme_nvmset_predictable_lat_log {
__u8 status;
__u8 rsvd1;
__le16 event_type;
__u8 rsvd4[28];
__le64 dtwin_rt;
__le64 dtwin_wt;
__le64 dtwin_tmax;
__le64 ndwin_tmin_hi;
__le64 ndwin_tmin_lo;
__u8 rsvd72[56];
__le64 dtwin_re;
__le64 dtwin_we;
__le64 dtwin_te;
__u8 rsvd152[360];
};
**Members**
``status``
Status
``rsvd1``
Reserved
``event_type``
Event Type
``rsvd4``
Reserved
``dtwin_rt``
DTWIN Reads Typical
``dtwin_wt``
DTWIN Writes Typical
``dtwin_tmax``
DTWIN Time Maximum
``ndwin_tmin_hi``
NDWIN Time Minimum High
``ndwin_tmin_lo``
NDWIN Time Minimum Low
``rsvd72``
Reserved
``dtwin_re``
DTWIN Reads Estimate
``dtwin_we``
DTWIN Writes Estimate
``dtwin_te``
DTWIN Time Estimate
``rsvd152``
Reserved
.. c:enum:: nvme_nvmeset_pl_status
Predictable Latency Per NVM Set Log - Status
**Constants**
``NVME_NVMSET_PL_STATUS_DISABLED``
Not used (Predictable Latency Mode not enabled)
``NVME_NVMSET_PL_STATUS_DTWIN``
Deterministic Window (DTWIN)
``NVME_NVMSET_PL_STATUS_NDWIN``
Non-Deterministic Window (NDWIN)
.. c:enum:: nvme_nvmset_pl_events
Predictable Latency Per NVM Set Log - Event Type
**Constants**
``NVME_NVMSET_PL_EVENT_DTWIN_READ_WARN``
DTWIN Reads Warning
``NVME_NVMSET_PL_EVENT_DTWIN_WRITE_WARN``
DTWIN Writes Warning
``NVME_NVMSET_PL_EVENT_DTWIN_TIME_WARN``
DTWIN Time Warning
``NVME_NVMSET_PL_EVENT_DTWIN_EXCEEDED``
Autonomous transition from DTWIN
to NDWIN due to typical or
maximum value exceeded
``NVME_NVMSET_PL_EVENT_DTWIN_EXCURSION``
Autonomous transition from DTWIN
to NDWIN due to Deterministic
Excursion
.. c:struct:: nvme_aggregate_predictable_lat_event
Predictable Latency Event Aggregate Log Page
**Definition**
::
struct nvme_aggregate_predictable_lat_event {
__le64 num_entries;
__le16 entries[];
};
**Members**
``num_entries``
Number of entries
``entries``
Entry list
.. c:struct:: nvme_ana_group_desc
ANA Group Descriptor
**Definition**
::
struct nvme_ana_group_desc {
__le32 grpid;
__le32 nnsids;
__le64 chgcnt;
__u8 state;
__u8 rsvd17[15];
__le32 nsids[];
};
**Members**
``grpid``
ANA group id
``nnsids``
Number of namespaces in **nsids**
``chgcnt``
Change counter
``state``
ANA state
``rsvd17``
Reserved
``nsids``
List of namespaces
.. c:enum:: nvme_ana_state
ANA Group Descriptor - Asymmetric Namespace Access State
**Constants**
``NVME_ANA_STATE_OPTIMIZED``
ANA Optimized state
``NVME_ANA_STATE_NONOPTIMIZED``
ANA Non-Optimized state
``NVME_ANA_STATE_INACCESSIBLE``
ANA Inaccessible state
``NVME_ANA_STATE_PERSISTENT_LOSS``
ANA Persistent Loss state
``NVME_ANA_STATE_CHANGE``
ANA Change state
.. c:struct:: nvme_ana_log
Asymmetric Namespace Access Log
**Definition**
::
struct nvme_ana_log {
__le64 chgcnt;
__le16 ngrps;
__u8 rsvd10[6];
struct nvme_ana_group_desc descs[];
};
**Members**
``chgcnt``
Change Count
``ngrps``
Number of ANA Group Descriptors
``rsvd10``
Reserved
``descs``
ANA Group Descriptor
.. c:struct:: nvme_persistent_event_log
Persistent Event Log
**Definition**
::
struct nvme_persistent_event_log {
__u8 lid;
__u8 rsvd1[3];
__le32 tnev;
__le64 tll;
__u8 rv;
__u8 rsvd17;
__le16 lhl;
__le64 ts;
__u8 poh[16];
__le64 pcc;
__le16 vid;
__le16 ssvid;
char sn[20];
char mn[40];
char subnqn[NVME_NQN_LENGTH];
__le16 gen_number;
__le32 rci;
__u8 rsvd378[102];
__u8 seb[32];
};
**Members**
``lid``
Log Identifier
``rsvd1``
Reserved
``tnev``
Total Number of Events
``tll``
Total Log Length
``rv``
Log Revision
``rsvd17``
Reserved
``lhl``
Log Header Length
``ts``
Timestamp
``poh``
Power on Hours
``pcc``
Power Cycle Count
``vid``
PCI Vendor ID
``ssvid``
PCI Subsystem Vendor ID
``sn``
Serial Number
``mn``
Model Number
``subnqn``
NVM Subsystem NVMe Qualified Name
``gen_number``
Generation Number
``rci``
Reporting Context Information
``rsvd378``
Reserved
``seb``
Supported Events Bitmap
.. c:struct:: nvme_persistent_event_entry
Persistent Event
**Definition**
::
struct nvme_persistent_event_entry {
__u8 etype;
__u8 etype_rev;
__u8 ehl;
__u8 ehai;
__le16 cntlid;
__le64 ets;
__le16 pelpid;
__u8 rsvd16[4];
__le16 vsil;
__le16 el;
};
**Members**
``etype``
Event Type
``etype_rev``
Event Type Revision
``ehl``
Event Header Length
``ehai``
Event Header Additional Info
``cntlid``
Controller Identifier
``ets``
Event Timestamp
``pelpid``
Port Identifier
``rsvd16``
Reserved
``vsil``
Vendor Specific Information Length
``el``
Event Length
.. c:enum:: nvme_persistent_event_types
Persistent event log events
**Constants**
``NVME_PEL_SMART_HEALTH_EVENT``
SMART / Health Log Snapshot Event
``NVME_PEL_FW_COMMIT_EVENT``
Firmware Commit Event
``NVME_PEL_TIMESTAMP_EVENT``
Timestamp Change Event
``NVME_PEL_POWER_ON_RESET_EVENT``
Power-on or Reset Event
``NVME_PEL_NSS_HW_ERROR_EVENT``
NVM Subsystem Hardware Error Event
``NVME_PEL_CHANGE_NS_EVENT``
Change Namespace Event
``NVME_PEL_FORMAT_START_EVENT``
Format NVM Start Event
``NVME_PEL_FORMAT_COMPLETION_EVENT``
Format NVM Completion Event
``NVME_PEL_SANITIZE_START_EVENT``
Sanitize Start Event
``NVME_PEL_SANITIZE_COMPLETION_EVENT``
Sanitize Completion Event
``NVME_PEL_SET_FEATURE_EVENT``
Set Feature Event
``NVME_PEL_TELEMETRY_CRT``
Telemetry Log Create Event
``NVME_PEL_THERMAL_EXCURSION_EVENT``
Thermal Excursion Event
.. c:struct:: nvme_fw_commit_event
Firmware Commit Event Data
**Definition**
::
struct nvme_fw_commit_event {
__le64 old_fw_rev;
__le64 new_fw_rev;
__u8 fw_commit_action;
__u8 fw_slot;
__u8 sct_fw;
__u8 sc_fw;
__le16 vndr_assign_fw_commit_rc;
};
**Members**
``old_fw_rev``
Old Firmware Revision
``new_fw_rev``
New Firmware Revision
``fw_commit_action``
Firmware Commit Action
``fw_slot``
Firmware Slot
``sct_fw``
Status Code Type for Firmware Commit Command
``sc_fw``
Status Returned for Firmware Commit Command
``vndr_assign_fw_commit_rc``
Vendor Assigned Firmware Commit Result Code
.. c:struct:: nvme_timestamp
Timestamp - Data Structure for Get Features
**Definition**
::
struct nvme_timestamp {
__u8 timestamp[6];
__u8 attr;
__u8 rsvd;
};
**Members**
``timestamp``
Timestamp value based on origin and synch field
``attr``
Attribute
``rsvd``
Reserved
.. c:struct:: nvme_time_stamp_change_event
Timestamp Change Event
**Definition**
::
struct nvme_time_stamp_change_event {
__le64 previous_timestamp;
__le64 ml_secs_since_reset;
};
**Members**
``previous_timestamp``
Previous Timestamp
``ml_secs_since_reset``
Milliseconds Since Reset
.. c:struct:: nvme_power_on_reset_info_list
Controller Reset Information
**Definition**
::
struct nvme_power_on_reset_info_list {
__le16 cid;
__u8 fw_act;
__u8 op_in_prog;
__u8 rsvd4[12];
__le32 ctrl_power_cycle;
__le64 power_on_ml_seconds;
__le64 ctrl_time_stamp;
};
**Members**
``cid``
Controller ID
``fw_act``
Firmware Activation
``op_in_prog``
Operation in Progress
``rsvd4``
Reserved
``ctrl_power_cycle``
Controller Power Cycle
``power_on_ml_seconds``
Power on milliseconds
``ctrl_time_stamp``
Controller Timestamp
.. c:struct:: nvme_nss_hw_err_event
NVM Subsystem Hardware Error Event
**Definition**
::
struct nvme_nss_hw_err_event {
__le16 nss_hw_err_event_code;
__u8 rsvd2[2];
__u8 *add_hw_err_info;
};
**Members**
``nss_hw_err_event_code``
NVM Subsystem Hardware Error Event Code
``rsvd2``
Reserved
``add_hw_err_info``
Additional Hardware Error Information
.. c:struct:: nvme_change_ns_event
Change Namespace Event Data
**Definition**
::
struct nvme_change_ns_event {
__le32 nsmgt_cdw10;
__u8 rsvd4[4];
__le64 nsze;
__u8 rsvd16[8];
__le64 nscap;
__u8 flbas;
__u8 dps;
__u8 nmic;
__u8 rsvd35;
__le32 ana_grp_id;
__le16 nvmset_id;
__le16 rsvd42;
__le32 nsid;
};
**Members**
``nsmgt_cdw10``
Namespace Management CDW10
``rsvd4``
Reserved
``nsze``
Namespace Size
``rsvd16``
Reserved
``nscap``
Namespace Capacity
``flbas``
Formatted LBA Size
``dps``
End-to-end Data Protection Type Settings
``nmic``
Namespace Multi-path I/O and Namespace Sharing Capabilities
``rsvd35``
Reserved
``ana_grp_id``
ANA Group Identifier
``nvmset_id``
NVM Set Identifier
``rsvd42``
Reserved
``nsid``
Namespace ID
.. c:struct:: nvme_format_nvm_start_event
Format NVM Start Event Data
**Definition**
::
struct nvme_format_nvm_start_event {
__le32 nsid;
__u8 fna;
__u8 rsvd5[3];
__le32 format_nvm_cdw10;
};
**Members**
``nsid``
Namespace Identifier
``fna``
Format NVM Attributes
``rsvd5``
Reserved
``format_nvm_cdw10``
Format NVM CDW10
.. c:struct:: nvme_format_nvm_compln_event
Format NVM Completion Event Data
**Definition**
::
struct nvme_format_nvm_compln_event {
__le32 nsid;
__u8 smallest_fpi;
__u8 format_nvm_status;
__le16 compln_info;
__le32 status_field;
};
**Members**
``nsid``
Namespace Identifier
``smallest_fpi``
Smallest Format Progress Indicator
``format_nvm_status``
Format NVM Status
``compln_info``
Completion Information
``status_field``
Status Field
.. c:struct:: nvme_sanitize_start_event
Sanitize Start Event Data
**Definition**
::
struct nvme_sanitize_start_event {
__le32 sani_cap;
__le32 sani_cdw10;
__le32 sani_cdw11;
};
**Members**
``sani_cap``
SANICAP
``sani_cdw10``
Sanitize CDW10
``sani_cdw11``
Sanitize CDW11
.. c:struct:: nvme_sanitize_compln_event
Sanitize Completion Event Data
**Definition**
::
struct nvme_sanitize_compln_event {
__le16 sani_prog;
__le16 sani_status;
__le16 cmpln_info;
__u8 rsvd6[2];
};
**Members**
``sani_prog``
Sanitize Progress
``sani_status``
Sanitize Status
``cmpln_info``
Completion Information
``rsvd6``
Reserved
.. c:struct:: nvme_set_feature_event
Set Feature Event Data
**Definition**
::
struct nvme_set_feature_event {
__le32 layout;
__le32 cdw_mem[0];
};
**Members**
``layout``
Set Feature Event Layout
``cdw_mem``
Command Dwords Memory buffer
.. c:struct:: nvme_thermal_exc_event
Thermal Excursion Event Data
**Definition**
::
struct nvme_thermal_exc_event {
__u8 over_temp;
__u8 threshold;
};
**Members**
``over_temp``
Over Temperature
``threshold``
temperature threshold
.. c:struct:: nvme_lba_rd
LBA Range Descriptor
**Definition**
::
struct nvme_lba_rd {
__le64 rslba;
__le32 rnlb;
__u8 rsvd12[4];
};
**Members**
``rslba``
Range Starting LBA
``rnlb``
Range Number of Logical Blocks
``rsvd12``
Reserved
.. c:struct:: nvme_lbas_ns_element
LBA Status Log Namespace Element
**Definition**
::
struct nvme_lbas_ns_element {
__le32 neid;
__le32 nlrd;
__u8 ratype;
__u8 rsvd8[7];
struct nvme_lba_rd lba_rd[];
};
**Members**
``neid``
Namespace Element Identifier
``nlrd``
Number of LBA Range Descriptors
``ratype``
Recommended Action Type. see **enum** nvme_lba_status_atype
``rsvd8``
Reserved
``lba_rd``
LBA Range Descriptor
.. c:enum:: nvme_lba_status_atype
Potentially Unrecoverable LBAs
**Constants**
``NVME_LBA_STATUS_ATYPE_SCAN_UNTRACKED``
Potentially Unrecoverable LBAs
``NVME_LBA_STATUS_ATYPE_SCAN_TRACKED``
Potentially Unrecoverable LBAs
associated with physical storage
.. c:struct:: nvme_lba_status_log
LBA Status Information Log
**Definition**
::
struct nvme_lba_status_log {
__le32 lslplen;
__le32 nlslne;
__le32 estulb;
__u8 rsvd12[2];
__le16 lsgc;
struct nvme_lbas_ns_element elements[];
};
**Members**
``lslplen``
LBA Status Log Page Length
``nlslne``
Number of LBA Status Log Namespace Elements
``estulb``
Estimate of Unrecoverable Logical Blocks
``rsvd12``
Reserved
``lsgc``
LBA Status Generation Counter
``elements``
LBA Status Log Namespace Element List
.. c:struct:: nvme_eg_event_aggregate_log
Endurance Group Event Aggregate
**Definition**
::
struct nvme_eg_event_aggregate_log {
__le64 nr_entries;
__le16 egids[];
};
**Members**
``nr_entries``
Number of Entries
``egids``
Endurance Group Identifier
.. c:enum:: nvme_fid_supported_effects
FID Supported and Effects Data Structure definitions
**Constants**
``NVME_FID_SUPPORTED_EFFECTS_FSUPP``
FID Supported
``NVME_FID_SUPPORTED_EFFECTS_UDCC``
User Data Content Change
``NVME_FID_SUPPORTED_EFFECTS_NCC``
Namespace Capability Change
``NVME_FID_SUPPORTED_EFFECTS_NIC``
Namespace Inventory Change
``NVME_FID_SUPPORTED_EFFECTS_CCC``
Controller Capability Change
``NVME_FID_SUPPORTED_EFFECTS_UUID_SEL``
UUID Selection Supported
``NVME_FID_SUPPORTED_EFFECTS_SCOPE_SHIFT``
FID Scope Shift
``NVME_FID_SUPPORTED_EFFECTS_SCOPE_MASK``
FID Scope Mask
``NVME_FID_SUPPORTED_EFFECTS_SCOPE_NS``
Namespace Scope
``NVME_FID_SUPPORTED_EFFECTS_SCOPE_CTRL``
Controller Scope
``NVME_FID_SUPPORTED_EFFECTS_SCOPE_NVM_SET``
NVM Set Scope
``NVME_FID_SUPPORTED_EFFECTS_SCOPE_ENDGRP``
Endurance Group Scope
``NVME_FID_SUPPORTED_EFFECTS_SCOPE_DOMAIN``
Domain Scope
``NVME_FID_SUPPORTED_EFFECTS_SCOPE_NSS``
NVM Subsystem Scope
.. c:struct:: nvme_fid_supported_effects_log
Feature Identifiers Supported and Effects
**Definition**
::
struct nvme_fid_supported_effects_log {
__le32 fid_support[NVME_LOG_FID_SUPPORTED_EFFECTS_MAX];
};
**Members**
``fid_support``
Feature Identifier Supported
.. c:enum:: nvme_mi_cmd_supported_effects
MI Command Supported and Effects Data Structure
**Constants**
``NVME_MI_CMD_SUPPORTED_EFFECTS_CSUPP``
Command Supported
``NVME_MI_CMD_SUPPORTED_EFFECTS_UDCC``
User Data Content Change
``NVME_MI_CMD_SUPPORTED_EFFECTS_NCC``
Namespace Capability Change
``NVME_MI_CMD_SUPPORTED_EFFECTS_NIC``
Namespace Inventory Change
``NVME_MI_CMD_SUPPORTED_EFFECTS_CCC``
Controller Capability Change
``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_SHIFT``
20 bit shift
``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_MASK``
12 bit mask - 0xfff
``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NS``
Namespace Scope
``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_CTRL``
Controller Scope
``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NVM_SET``
NVM Set Scope
``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_ENDGRP``
Endurance Group Scope
``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_DOMAIN``
Domain Scope
``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NSS``
NVM Subsystem Scope
.. c:struct:: nvme_mi_cmd_supported_effects_log
NVMe-MI Commands Supported and Effects Log
**Definition**
::
struct nvme_mi_cmd_supported_effects_log {
__le32 mi_cmd_support[NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_MAX];
__le32 reserved1[NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_RESERVED];
};
**Members**
``mi_cmd_support``
NVMe-MI Commands Supported
``reserved1``
Reserved
.. c:struct:: nvme_boot_partition
Boot Partition Log
**Definition**
::
struct nvme_boot_partition {
__u8 lid;
__u8 rsvd1[3];
__le32 bpinfo;
__u8 rsvd8[8];
__u8 boot_partition_data[];
};
**Members**
``lid``
Boot Partition Identifier
``rsvd1``
Reserved
``bpinfo``
Boot Partition Information
``rsvd8``
Reserved
``boot_partition_data``
Contains the contents of the
specified Boot Partition
.. c:struct:: nvme_media_unit_stat_desc
Media Unit Status Descriptor
**Definition**
::
struct nvme_media_unit_stat_desc {
__le16 muid;
__le16 domainid;
__le16 endgid;
__le16 nvmsetid;
__le16 cap_adj_fctr;
__u8 avl_spare;
__u8 percent_used;
__u8 mucs;
__u8 cio;
};
**Members**
``muid``
Media Unit Identifier
``domainid``
Domain Identifier
``endgid``
Endurance Group Identifier
``nvmsetid``
NVM Set Identifier
``cap_adj_fctr``
Capacity Adjustment Factor
``avl_spare``
Available Spare
``percent_used``
Percentage Used
``mucs``
Number of Channels attached to media units
``cio``
Channel Identifiers Offset
.. c:struct:: nvme_media_unit_stat_log
Media Unit Status
**Definition**
::
struct nvme_media_unit_stat_log {
__le16 nmu;
__le16 cchans;
__le16 sel_config;
__u8 rsvd6[10];
struct nvme_media_unit_stat_desc mus_desc[];
};
**Members**
``nmu``
Number unit status descriptor
``cchans``
Number of Channels
``sel_config``
Selected Configuration
``rsvd6``
Reserved
``mus_desc``
Media unit statistic descriptors
.. c:struct:: nvme_media_unit_config_desc
Media Unit Configuration Descriptor
**Definition**
::
struct nvme_media_unit_config_desc {
__le16 muid;
__u8 rsvd2[4];
__le16 mudl;
};
**Members**
``muid``
Media Unit Identifier
``rsvd2``
Reserved
``mudl``
Media Unit Descriptor Length
.. c:struct:: nvme_channel_config_desc
Channel Configuration Descriptor
**Definition**
::
struct nvme_channel_config_desc {
__le16 chanid;
__le16 chmus;
struct nvme_media_unit_config_desc mu_config_desc[];
};
**Members**
``chanid``
Channel Identifier
``chmus``
Number Channel Media Units
``mu_config_desc``
Channel Unit config descriptors.
See **struct** nvme_media_unit_config_desc
.. c:struct:: nvme_end_grp_chan_desc
Endurance Group Channel Configuration Descriptor
**Definition**
::
struct nvme_end_grp_chan_desc {
__le16 egchans;
struct nvme_channel_config_desc chan_config_desc[];
};
**Members**
``egchans``
Number of Channels
``chan_config_desc``
Channel config descriptors.
See **struct** nvme_channel_config_desc
.. c:struct:: nvme_end_grp_config_desc
Endurance Group Configuration Descriptor
**Definition**
::
struct nvme_end_grp_config_desc {
__le16 endgid;
__le16 cap_adj_factor;
__u8 rsvd4[12];
__u8 tegcap[16];
__u8 segcap[16];
__u8 end_est[16];
__u8 rsvd64[16];
__le16 egsets;
__le16 nvmsetid[];
};
**Members**
``endgid``
Endurance Group Identifier
``cap_adj_factor``
Capacity Adjustment Factor
``rsvd4``
Reserved
``tegcap``
Total Endurance Group Capacity
``segcap``
Spare Endurance Group Capacity
``end_est``
Endurance Estimate
``rsvd64``
Reserved
``egsets``
Number of NVM Sets
``nvmsetid``
NVM Set Identifier
.. c:struct:: nvme_capacity_config_desc
Capacity Configuration structure definitions
**Definition**
::
struct nvme_capacity_config_desc {
__le16 cap_config_id;
__le16 domainid;
__le16 egcn;
__u8 rsvd6[26];
struct nvme_end_grp_config_desc egcd[];
};
**Members**
``cap_config_id``
Capacity Configuration Identifier
``domainid``
Domain Identifier
``egcn``
Number Endurance Group Configuration
Descriptors
``rsvd6``
Reserved
``egcd``
Endurance Group Config descriptors.
See **struct** nvme_end_grp_config_desc
.. c:struct:: nvme_supported_cap_config_list_log
Supported Capacity Configuration list log page
**Definition**
::
struct nvme_supported_cap_config_list_log {
__u8 sccn;
__u8 rsvd1[15];
struct nvme_capacity_config_desc cap_config_desc[];
};
**Members**
``sccn``
Number of capacity configuration
``rsvd1``
Reserved
``cap_config_desc``
Capacity configuration descriptor.
See **struct** nvme_capacity_config_desc
.. c:struct:: nvme_resv_notification_log
Reservation Notification Log
**Definition**
::
struct nvme_resv_notification_log {
__le64 lpc;
__u8 rnlpt;
__u8 nalp;
__u8 rsvd9[2];
__le32 nsid;
__u8 rsvd16[48];
};
**Members**
``lpc``
Log Page Count
``rnlpt``
See :c:type:`enum nvme_resv_notify_rnlpt <nvme_resv_notify_rnlpt>`.
``nalp``
Number of Available Log Pages
``rsvd9``
Reserved
``nsid``
Namespace ID
``rsvd16``
Reserved
.. c:enum:: nvme_resv_notify_rnlpt
Reservation Notification Log - Reservation Notification Log Page Type
**Constants**
``NVME_RESV_NOTIFY_RNLPT_EMPTY``
Empty Log Page
``NVME_RESV_NOTIFY_RNLPT_REGISTRATION_PREEMPTED``
Registration Preempted
``NVME_RESV_NOTIFY_RNLPT_RESERVATION_RELEASED``
Reservation Released
``NVME_RESV_NOTIFY_RNLPT_RESERVATION_PREEMPTED``
Reservation Preempted
.. c:struct:: nvme_sanitize_log_page
Sanitize Status (Log Identifier 81h)
**Definition**
::
struct nvme_sanitize_log_page {
__le16 sprog;
__le16 sstat;
__le32 scdw10;
__le32 eto;
__le32 etbe;
__le32 etce;
__le32 etond;
__le32 etbend;
__le32 etcend;
__u8 rsvd32[480];
};
**Members**
``sprog``
Sanitize Progress (SPROG): indicates the fraction complete of the
sanitize operation. The value is a numerator of the fraction
complete that has 65,536 (10000h) as its denominator. This value
shall be set to FFFFh if the **sstat** field is not set to
``NVME_SANITIZE_SSTAT_STATUS_IN_PROGESS``.
``sstat``
Sanitize Status (SSTAT): indicates the status associated with
the most recent sanitize operation. See :c:type:`enum nvme_sanitize_sstat <nvme_sanitize_sstat>`.
``scdw10``
Sanitize Command Dword 10 Information (SCDW10): contains the value
of the Command Dword 10 field of the Sanitize command that started
the sanitize operation.
``eto``
Estimated Time For Overwrite: indicates the number of seconds required
to complete an Overwrite sanitize operation with 16 passes in
the background when the No-Deallocate Modifies Media After Sanitize
field is not set to 10b. A value of 0h indicates that the sanitize
operation is expected to be completed in the background when the
Sanitize command that started that operation is completed. A value
of FFFFFFFFh indicates that no time period is reported.
``etbe``
Estimated Time For Block Erase: indicates the number of seconds
required to complete a Block Erase sanitize operation in the
background when the No-Deallocate Modifies Media After Sanitize
field is not set to 10b. A value of 0h indicates that the sanitize
operation is expected to be completed in the background when the
Sanitize command that started that operation is completed.
A value of FFFFFFFFh indicates that no time period is reported.
``etce``
Estimated Time For Crypto Erase: indicates the number of seconds
required to complete a Crypto Erase sanitize operation in the
background when the No-Deallocate Modifies Media After Sanitize
field is not set to 10b. A value of 0h indicates that the sanitize
operation is expected to be completed in the background when the
Sanitize command that started that operation is completed.
A value of FFFFFFFFh indicates that no time period is reported.
``etond``
Estimated Time For Overwrite With No-Deallocate Media Modification:
indicates the number of seconds required to complete an Overwrite
sanitize operation and the associated additional media modification
after the Overwrite sanitize operation in the background when
the No-Deallocate After Sanitize bit was set to 1 in the Sanitize
command that requested the Overwrite sanitize operation; and
the No-Deallocate Modifies Media After Sanitize field is set to 10b.
A value of 0h indicates that the sanitize operation is expected
to be completed in the background when the Sanitize command that
started that operation is completed. A value of FFFFFFFFh indicates
that no time period is reported.
``etbend``
Estimated Time For Block Erase With No-Deallocate Media Modification:
indicates the number of seconds required to complete a Block Erase
sanitize operation and the associated additional media modification
after the Block Erase sanitize operation in the background when
the No-Deallocate After Sanitize bit was set to 1 in the Sanitize
command that requested the Overwrite sanitize operation; and
the No-Deallocate Modifies Media After Sanitize field is set to 10b.
A value of 0h indicates that the sanitize operation is expected
to be completed in the background when the Sanitize command that
started that operation is completed. A value of FFFFFFFFh indicates
that no time period is reported.
``etcend``
Estimated Time For Crypto Erase With No-Deallocate Media Modification:
indicates the number of seconds required to complete a Crypto Erase
sanitize operation and the associated additional media modification
after the Crypto Erase sanitize operation in the background when
the No-Deallocate After Sanitize bit was set to 1 in the Sanitize
command that requested the Overwrite sanitize operation; and
the No-Deallocate Modifies Media After Sanitize field is set to 10b.
A value of 0h indicates that the sanitize operation is expected
to be completed in the background when the Sanitize command that
started that operation is completed. A value of FFFFFFFFh indicates
that no time period is reported.
``rsvd32``
Reserved
.. c:enum:: nvme_sanitize_sstat
Sanitize Status (SSTAT)
**Constants**
``NVME_SANITIZE_SSTAT_STATUS_SHIFT``
Shift amount to get the status value of
the most recent sanitize operation from
the :c:type:`struct nvme_sanitize_log_page <nvme_sanitize_log_page>`.sstat
field.
``NVME_SANITIZE_SSTAT_STATUS_MASK``
Mask to get the status value of the most
recent sanitize operation.
``NVME_SANITIZE_SSTAT_STATUS_NEVER_SANITIZED``
The NVM subsystem has never been
sanitized.
``NVME_SANITIZE_SSTAT_STATUS_COMPLETE_SUCCESS``
The most recent sanitize operation
completed successfully including any
additional media modification.
``NVME_SANITIZE_SSTAT_STATUS_IN_PROGESS``
A sanitize operation is currently in progress.
``NVME_SANITIZE_SSTAT_STATUS_COMPLETED_FAILED``
The most recent sanitize operation
failed.
``NVME_SANITIZE_SSTAT_STATUS_ND_COMPLETE_SUCCESS``
The most recent sanitize operation
for which No-Deallocate After Sanitize was
requested has completed successfully with
deallocation of all user data.
``NVME_SANITIZE_SSTAT_COMPLETED_PASSES_SHIFT``
Shift amount to get the number
of completed passes if the most recent
sanitize operation was an Overwrite. This
value shall be cleared to 0h if the most
recent sanitize operation was not
an Overwrite.
``NVME_SANITIZE_SSTAT_COMPLETED_PASSES_MASK``
Mask to get the number of completed
passes.
``NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED_SHIFT``
Shift amount to get the Global
Data Erased value from the
:c:type:`struct nvme_sanitize_log_page <nvme_sanitize_log_page>`.sstat field.
``NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED_MASK``
Mask to get the Global Data Erased
value.
``NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED``
Global Data Erased: if set, then no
namespace user data in the NVM subsystem
has been written to and no Persistent
Memory Region in the NVM subsystem has
been enabled since being manufactured and
the NVM subsystem has never been sanitized;
or since the most recent successful sanitize
operation.
.. c:struct:: nvme_zns_changed_zone_log
ZNS Changed Zone List log
**Definition**
::
struct nvme_zns_changed_zone_log {
__le16 nrzid;
__u8 rsvd2[6];
__le64 zid[NVME_ZNS_CHANGED_ZONES_MAX];
};
**Members**
``nrzid``
Number of Zone Identifiers
``rsvd2``
Reserved
``zid``
Zone Identifier
.. c:enum:: nvme_zns_zt
Zone Descriptor Data Structure - Zone Type
**Constants**
``NVME_ZONE_TYPE_SEQWRITE_REQ``
Sequential Write Required
.. c:enum:: nvme_zns_za
Zone Descriptor Data Structure
**Constants**
``NVME_ZNS_ZA_ZFC``
Zone Finished by Controller
``NVME_ZNS_ZA_FZR``
Finish Zone Recommended
``NVME_ZNS_ZA_RZR``
Reset Zone Recommended
``NVME_ZNS_ZA_ZRWAV``
``NVME_ZNS_ZA_ZDEV``
Zone Descriptor Extension Valid
.. c:enum:: nvme_zns_zs
Zone Descriptor Data Structure - Zone State
**Constants**
``NVME_ZNS_ZS_EMPTY``
Empty state
``NVME_ZNS_ZS_IMPL_OPEN``
Implicitly open state
``NVME_ZNS_ZS_EXPL_OPEN``
Explicitly open state
``NVME_ZNS_ZS_CLOSED``
Closed state
``NVME_ZNS_ZS_READ_ONLY``
Read only state
``NVME_ZNS_ZS_FULL``
Full state
``NVME_ZNS_ZS_OFFLINE``
Offline state
.. c:struct:: nvme_zns_desc
Zone Descriptor Data Structure
**Definition**
::
struct nvme_zns_desc {
__u8 zt;
__u8 zs;
__u8 za;
__u8 zai;
__u8 rsvd4[4];
__le64 zcap;
__le64 zslba;
__le64 wp;
__u8 rsvd32[32];
};
**Members**
``zt``
Zone Type
``zs``
Zone State
``za``
Zone Attributes
``zai``
Zone Attributes Information
``rsvd4``
Reserved
``zcap``
Zone Capacity
``zslba``
Zone Start Logical Block Address
``wp``
Write Pointer
``rsvd32``
Reserved
.. c:struct:: nvme_zone_report
Report Zones Data Structure
**Definition**
::
struct nvme_zone_report {
__le64 nr_zones;
__u8 rsvd8[56];
struct nvme_zns_desc entries[];
};
**Members**
``nr_zones``
Number of descriptors in **entries**
``rsvd8``
Reserved
``entries``
Zoned namespace descriptors
.. c:enum:: nvme_fdp_ruh_type
Reclaim Unit Handle Type
**Constants**
``NVME_FDP_RUHT_INITIALLY_ISOLATED``
Initially Isolated
``NVME_FDP_RUHT_PERSISTENTLY_ISOLATED``
Persistently Isolated
.. c:struct:: nvme_fdp_ruh_desc
Reclaim Unit Handle Descriptor
**Definition**
::
struct nvme_fdp_ruh_desc {
__u8 ruht;
__u8 rsvd1[3];
};
**Members**
``ruht``
Reclaim Unit Handle Type
``rsvd1``
Reserved
.. c:enum:: nvme_fdp_config_fdpa
FDP Attributes
**Constants**
``NVME_FDP_CONFIG_FDPA_RGIF_SHIFT``
Reclaim Group Identifier Format Shift
``NVME_FDP_CONFIG_FDPA_RGIF_MASK``
Reclaim Group Identifier Format Mask
``NVME_FDP_CONFIG_FDPA_FDPVWC_SHIFT``
FDP Volatile Write Cache Shift
``NVME_FDP_CONFIG_FDPA_FDPVWC_MASK``
FDP Volatile Write Cache Mask
``NVME_FDP_CONFIG_FDPA_VALID_SHIFT``
FDP Configuration Valid Shift
``NVME_FDP_CONFIG_FDPA_VALID_MASK``
FDP Configuration Valid Mask
.. c:struct:: nvme_fdp_config_desc
FDP Configuration Descriptor
**Definition**
::
struct nvme_fdp_config_desc {
__u16 size;
__u8 fdpa;
__u8 vss;
__u32 nrg;
__u16 nruh;
__u16 maxpids;
__u32 nnss;
__u64 runs;
__u32 erutl;
__u8 rsvd28[36];
struct nvme_fdp_ruh_desc ruhs[];
};
**Members**
``size``
Descriptor size
``fdpa``
FDP Attributes (:c:type:`enum nvme_fdp_config_fdpa <nvme_fdp_config_fdpa>`)
``vss``
Vendor Specific Size
``nrg``
Number of Reclaim Groups
``nruh``
Number of Reclaim Unit Handles
``maxpids``
Max Placement Identifiers
``nnss``
Number of Namespaces Supported
``runs``
Reclaim Unit Nominal Size
``erutl``
Estimated Reclaim Unit Time Limit
``rsvd28``
Reserved
``ruhs``
Reclaim Unit Handle descriptors (:c:type:`struct nvme_fdp_ruh_desc <nvme_fdp_ruh_desc>`)
.. c:struct:: nvme_fdp_config_log
FDP Configurations Log Page
**Definition**
::
struct nvme_fdp_config_log {
__u16 n;
__u8 version;
__u8 rsvd3;
__u32 size;
__u8 rsvd8[8];
struct nvme_fdp_config_desc configs[];
};
**Members**
``n``
Number of FDP Configurations
``version``
Log page version
``rsvd3``
Reserved
``size``
Log page size in bytes
``rsvd8``
Reserved
``configs``
FDP Configuration descriptors (:c:type:`struct nvme_fdp_config_desc <nvme_fdp_config_desc>`)
.. c:enum:: nvme_fdp_ruha
Reclaim Unit Handle Attributes
**Constants**
``NVME_FDP_RUHA_HOST_SHIFT``
Host Specified Reclaim Unit Handle Shift
``NVME_FDP_RUHA_HOST_MASK``
Host Specified Reclaim Unit Handle Mask
``NVME_FDP_RUHA_CTRL_SHIFT``
Controller Specified Reclaim Unit Handle Shift
``NVME_FDP_RUHA_CTRL_MASK``
Controller Specified Reclaim Unit Handle Mask
.. c:struct:: nvme_fdp_ruhu_desc
Reclaim Unit Handle Usage Descriptor
**Definition**
::
struct nvme_fdp_ruhu_desc {
__u8 ruha;
__u8 rsvd1[7];
};
**Members**
``ruha``
Reclaim Unit Handle Attributes (:c:type:`enum nvme_fdp_ruha <nvme_fdp_ruha>`)
``rsvd1``
Reserved
.. c:struct:: nvme_fdp_ruhu_log
Reclaim Unit Handle Usage Log Page
**Definition**
::
struct nvme_fdp_ruhu_log {
__u16 nruh;
__u8 rsvd2[6];
struct nvme_fdp_ruhu_desc ruhus[];
};
**Members**
``nruh``
Number of Reclaim Unit Handles
``rsvd2``
Reserved
``ruhus``
Reclaim Unit Handle Usage descriptors
.. c:struct:: nvme_fdp_stats_log
FDP Statistics Log Page
**Definition**
::
struct nvme_fdp_stats_log {
__u8 hbmw[16];
__u8 mbmw[16];
__u8 mbe[16];
__u8 rsvd48[16];
};
**Members**
``hbmw``
Host Bytes with Metadata Written
``mbmw``
Media Bytes with Metadata Written
``mbe``
Media Bytes Erased
``rsvd48``
Reserved
.. c:enum:: nvme_fdp_event_type
FDP Event Types
**Constants**
``NVME_FDP_EVENT_RUNFW``
Reclaim Unit Not Fully Written
``NVME_FDP_EVENT_RUTLE``
Reclaim Unit Time Limit Exceeded
``NVME_FDP_EVENT_RESET``
Controller Level Reset Modified Reclaim Unit Handles
``NVME_FDP_EVENT_PID``
Invalid Placement Identifier
``NVME_FDP_EVENT_REALLOC``
Media Reallocated
``NVME_FDP_EVENT_MODIFY``
Implicitly Modified Reclaim Unit Handle
.. c:enum:: nvme_fdp_event_realloc_flags
Media Reallocated Event Type Specific Flags
**Constants**
``NVME_FDP_EVENT_REALLOC_F_LBAV``
LBA Valid
.. c:struct:: nvme_fdp_event_realloc
Media Reallocated Event Type Specific Information
**Definition**
::
struct nvme_fdp_event_realloc {
__u8 flags;
__u8 rsvd1;
__u16 nlbam;
__u64 lba;
__u8 rsvd12[4];
};
**Members**
``flags``
Event Type Specific flags (:c:type:`enum nvme_fdp_event_realloc_flags <nvme_fdp_event_realloc_flags>`)
``rsvd1``
Reserved
``nlbam``
Number of LBAs Moved
``lba``
Logical Block Address
``rsvd12``
Reserved
.. c:enum:: nvme_fdp_event_flags
FDP Event Flags
**Constants**
``NVME_FDP_EVENT_F_PIV``
Placement Identifier Valid
``NVME_FDP_EVENT_F_NSIDV``
Namespace Identifier Valid
``NVME_FDP_EVENT_F_LV``
Location Valid
.. c:struct:: nvme_fdp_event
FDP Event
**Definition**
::
struct nvme_fdp_event {
__u8 type;
__u8 flags;
__u16 pid;
struct nvme_timestamp ts;
__u32 nsid;
__u8 type_specific[16];
__u16 rgid;
__u8 ruhid;
__u8 rsvd35[5];
__u8 vs[24];
};
**Members**
``type``
Event Type (:c:type:`enum nvme_fdp_event_type <nvme_fdp_event_type>`)
``flags``
Event Flags (:c:type:`enum nvme_fdp_event_flags <nvme_fdp_event_flags>`)
``pid``
Placement Identifier
``ts``
Timestamp
``nsid``
Namespace Identifier
``type_specific``
Event Type Specific Information
``rgid``
Reclaim Group Identifier
``ruhid``
Reclaim Unit Handle Identifier
``rsvd35``
Reserved
``vs``
Vendor Specific
.. c:struct:: nvme_fdp_events_log
FDP Events Log Page
**Definition**
::
struct nvme_fdp_events_log {
__u32 n;
__u8 rsvd4[60];
struct nvme_fdp_event events[63];
};
**Members**
``n``
Number of FDP Events
``rsvd4``
Reserved
``events``
FDP Events (:c:type:`struct nvme_fdp_event <nvme_fdp_event>`)
.. c:struct:: nvme_feat_fdp_events_cdw11
FDP Events Feature Command Dword 11
**Definition**
::
struct nvme_feat_fdp_events_cdw11 {
__u16 phndl;
__u8 noet;
__u8 rsvd24;
};
**Members**
``phndl``
Placement Handle
``noet``
Number of FDP Event Types
``rsvd24``
Reserved
.. c:enum:: nvme_fdp_supported_event_attributes
Supported FDP Event Attributes
**Constants**
``NVME_FDP_SUPP_EVENT_ENABLED_SHIFT``
FDP Event Enable Shift
``NVME_FDP_SUPP_EVENT_ENABLED_MASK``
FDP Event Enable Mask
.. c:struct:: nvme_fdp_supported_event_desc
Supported FDP Event Descriptor
**Definition**
::
struct nvme_fdp_supported_event_desc {
__u8 evt;
__u8 evta;
};
**Members**
``evt``
FDP Event Type
``evta``
FDP Event Type Attributes (:c:type:`enum nvme_fdp_supported_event_attributes <nvme_fdp_supported_event_attributes>`)
.. c:struct:: nvme_fdp_ruh_status_desc
Reclaim Unit Handle Status Descriptor
**Definition**
::
struct nvme_fdp_ruh_status_desc {
__u16 pid;
__u16 ruhid;
__u32 earutr;
__u64 ruamw;
__u8 rsvd16[16];
};
**Members**
``pid``
Placement Identifier
``ruhid``
Reclaim Unit Handle Identifier
``earutr``
Estimated Active Reclaim Unit Time Remaining
``ruamw``
Reclaim Unit Available Media Writes
``rsvd16``
Reserved
.. c:struct:: nvme_fdp_ruh_status
Reclaim Unit Handle Status
**Definition**
::
struct nvme_fdp_ruh_status {
__u8 rsvd0[14];
__u16 nruhsd;
struct nvme_fdp_ruh_status_desc ruhss[];
};
**Members**
``rsvd0``
Reserved
``nruhsd``
Number of Reclaim Unit Handle Status Descriptors
``ruhss``
Reclaim Unit Handle Status descriptors
.. c:struct:: nvme_lba_status_desc
LBA Status Descriptor Entry
**Definition**
::
struct nvme_lba_status_desc {
__le64 dslba;
__le32 nlb;
__u8 rsvd12;
__u8 status;
__u8 rsvd14[2];
};
**Members**
``dslba``
Descriptor Starting LBA
``nlb``
Number of Logical Blocks
``rsvd12``
Reserved
``status``
Additional status about this LBA range
``rsvd14``
Reserved
.. c:struct:: nvme_lba_status
LBA Status Descriptor List
**Definition**
::
struct nvme_lba_status {
__le32 nlsd;
__u8 cmpc;
__u8 rsvd5[3];
struct nvme_lba_status_desc descs[];
};
**Members**
``nlsd``
Number of LBA Status Descriptors
``cmpc``
Completion Condition
``rsvd5``
Reserved
``descs``
LBA status descriptor Entry
.. c:struct:: nvme_feat_auto_pst
Autonomous Power State Transition
**Definition**
::
struct nvme_feat_auto_pst {
__le64 apst_entry[32];
};
**Members**
``apst_entry``
See :c:type:`enum nvme_apst_entry <nvme_apst_entry>`
.. c:enum:: nvme_apst_entry
Autonomous Power State Transition
**Constants**
``NVME_APST_ENTRY_ITPS_SHIFT``
Idle Transition Power State Shift
``NVME_APST_ENTRY_ITPT_SHIFT``
Idle Time Prior to Transition Shift
``NVME_APST_ENTRY_ITPS_MASK``
Idle Transition Power State Mask
``NVME_APST_ENTRY_ITPT_MASK``
Idle Time Prior to Transition Mask
.. c:struct:: nvme_metadata_element_desc
Metadata Element Descriptor
**Definition**
::
struct nvme_metadata_element_desc {
__u8 type;
__u8 rev;
__u16 len;
__u8 val[0];
};
**Members**
``type``
Element Type (ET)
``rev``
Element Revision (ER)
``len``
Element Length (ELEN)
``val``
Element Value (EVAL), UTF-8 string
.. c:struct:: nvme_host_metadata
Host Metadata Data Structure
**Definition**
::
struct nvme_host_metadata {
__u8 ndesc;
__u8 rsvd1;
union {
struct nvme_metadata_element_desc descs[0];
__u8 descs_buf[4094];
};
};
**Members**
``ndesc``
Number of metadata element descriptors
``rsvd1``
Reserved
``{unnamed_union}``
anonymous
``descs``
Metadata element descriptors
``descs_buf``
Metadata element descriptor buffer
.. c:enum:: nvme_ctrl_metadata_type
Controller Metadata Element Types
**Constants**
``NVME_CTRL_METADATA_OS_CTRL_NAME``
Name of the controller in
the operating system.
``NVME_CTRL_METADATA_OS_DRIVER_NAME``
Name of the driver in the
operating system.
``NVME_CTRL_METADATA_OS_DRIVER_VER``
Version of the driver in
the operating system.
``NVME_CTRL_METADATA_PRE_BOOT_CTRL_NAME``
Name of the controller in
the pre-boot environment.
``NVME_CTRL_METADATA_PRE_BOOT_DRIVER_NAME``
Name of the driver in the
pre-boot environment.
``NVME_CTRL_METADATA_PRE_BOOT_DRIVER_VER``
Version of the driver in the
pre-boot environment.
``NVME_CTRL_METADATA_SYS_PROC_MODEL``
Model of the processor.
``NVME_CTRL_METADATA_CHIPSET_DRV_NAME``
Chipset driver name.
``NVME_CTRL_METADATA_CHIPSET_DRV_VERSION``
Chipset driver version.
``NVME_CTRL_METADATA_OS_NAME_AND_BUILD``
Operating system name and build.
``NVME_CTRL_METADATA_SYS_PROD_NAME``
System product name.
``NVME_CTRL_METADATA_FIRMWARE_VERSION``
Host firmware (e.g UEFI) version.
``NVME_CTRL_METADATA_OS_DRIVER_FILENAME``
Operating system driver filename.
``NVME_CTRL_METADATA_DISPLAY_DRV_NAME``
Display driver name.
``NVME_CTRL_METADATA_DISPLAY_DRV_VERSION``
Display driver version.
``NVME_CTRL_METADATA_HOST_DET_FAIL_REC``
Failure record.
.. c:enum:: nvme_ns_metadata_type
Namespace Metadata Element Types
**Constants**
``NVME_NS_METADATA_OS_NS_NAME``
Name of the namespace in the
operating system
``NVME_NS_METADATA_PRE_BOOT_NS_NAME``
Name of the namespace in the pre-boot
environment.
``NVME_NS_METADATA_OS_NS_QUAL_1``
First qualifier of the Operating System
Namespace Name.
``NVME_NS_METADATA_OS_NS_QUAL_2``
Second qualifier of the Operating System
Namespace Name.
.. c:struct:: nvme_lba_range_type_entry
LBA Range Type - Data Structure Entry
**Definition**
::
struct nvme_lba_range_type_entry {
__u8 type;
__u8 attributes;
__u8 rsvd2[14];
__u64 slba;
__u64 nlb;
__u8 guid[16];
__u8 rsvd48[16];
};
**Members**
``type``
Specifies the Type of the LBA range
``attributes``
Specifies attributes of the LBA range
``rsvd2``
Reserved
``slba``
Starting LBA
``nlb``
Number of Logical Blocks
``guid``
Unique Identifier
``rsvd48``
Reserved
.. c:enum:: nvme_lbart
LBA Range Type - Data Structure Entry
**Constants**
``NVME_LBART_TYPE_GP``
General Purpose
``NVME_LBART_TYPE_FS``
Filesystem
``NVME_LBART_TYPE_RAID``
RAID
``NVME_LBART_TYPE_CACHE``
Cache
``NVME_LBART_TYPE_SWAP``
Page / swap file
``NVME_LBART_ATTRIB_TEMP``
Temp
``NVME_LBART_ATTRIB_HIDE``
Hidden
.. c:struct:: nvme_lba_range_type
LBA Range Type
**Definition**
::
struct nvme_lba_range_type {
struct nvme_lba_range_type_entry entry[NVME_FEAT_LBA_RANGE_MAX];
};
**Members**
``entry``
LBA range type entry. See **struct** nvme_lba_range_type_entry
.. c:struct:: nvme_plm_config
Predictable Latency Mode - Deterministic Threshold Configuration Data Structure
**Definition**
::
struct nvme_plm_config {
__le16 ee;
__u8 rsvd2[30];
__le64 dtwinrt;
__le64 dtwinwt;
__le64 dtwintt;
__u8 rsvd56[456];
};
**Members**
``ee``
Enable Event
``rsvd2``
Reserved
``dtwinrt``
DTWIN Reads Threshold
``dtwinwt``
DTWIN Writes Threshold
``dtwintt``
DTWIN Time Threshold
``rsvd56``
Reserved
.. c:struct:: nvme_feat_host_behavior
Host Behavior Support - Data Structure
**Definition**
::
struct nvme_feat_host_behavior {
__u8 acre;
__u8 rsvd1[511];
};
**Members**
``acre``
Advanced Command Retry Enable
``rsvd1``
Reserved
.. c:enum:: nvme_host_behavior_support
Enable Advanced Command
**Constants**
``NVME_ENABLE_ACRE``
Enable Advanced Command Retry Enable
.. c:struct:: nvme_dsm_range
Dataset Management - Range Definition
**Definition**
::
struct nvme_dsm_range {
__le32 cattr;
__le32 nlb;
__le64 slba;
};
**Members**
``cattr``
Context Attributes
``nlb``
Length in logical blocks
``slba``
Starting LBA
.. c:struct:: nvme_copy_range
Copy - Source Range Entries Descriptor Format
**Definition**
::
struct nvme_copy_range {
__u8 rsvd0[8];
__le64 slba;
__le16 nlb;
__u8 rsvd18[6];
__le32 eilbrt;
__le16 elbatm;
__le16 elbat;
};
**Members**
``rsvd0``
Reserved
``slba``
Starting LBA
``nlb``
Number of Logical Blocks
``rsvd18``
Reserved
``eilbrt``
Expected Initial Logical Block Reference Tag /
Expected Logical Block Storage Tag
``elbatm``
Expected Logical Block Application Tag Mask
``elbat``
Expected Logical Block Application Tag
.. c:struct:: nvme_copy_range_f1
Copy - Source Range Entries Descriptor Format 1h
**Definition**
::
struct nvme_copy_range_f1 {
__u8 rsvd0[8];
__le64 slba;
__le16 nlb;
__u8 rsvd18[8];
__u8 elbt[10];
__le16 elbatm;
__le16 elbat;
};
**Members**
``rsvd0``
Reserved
``slba``
Starting LBA
``nlb``
Number of Logical Blocks
``rsvd18``
Reserved
``elbt``
Expected Initial Logical Block Reference Tag /
Expected Logical Block Storage Tag
``elbatm``
Expected Logical Block Application Tag Mask
``elbat``
Expected Logical Block Application Tag
.. c:struct:: nvme_registered_ctrl
Registered Controller Data Structure
**Definition**
::
struct nvme_registered_ctrl {
__le16 cntlid;
__u8 rcsts;
__u8 rsvd3[5];
__le64 hostid;
__le64 rkey;
};
**Members**
``cntlid``
Controller ID
``rcsts``
Reservation Status
``rsvd3``
Reserved
``hostid``
Host Identifier
``rkey``
Reservation Key
.. c:struct:: nvme_registered_ctrl_ext
Registered Controller Extended Data Structure
**Definition**
::
struct nvme_registered_ctrl_ext {
__le16 cntlid;
__u8 rcsts;
__u8 rsvd3[5];
__le64 rkey;
__u8 hostid[16];
__u8 rsvd32[32];
};
**Members**
``cntlid``
Controller ID
``rcsts``
Reservation Status
``rsvd3``
Reserved
``rkey``
Reservation Key
``hostid``
Host Identifier
``rsvd32``
Reserved
.. c:struct:: nvme_resv_status
Reservation Status Data Structure
**Definition**
::
struct nvme_resv_status {
__le32 gen;
__u8 rtype;
__u8 regctl[2];
__u8 rsvd7[2];
__u8 ptpls;
__u8 rsvd10[14];
union {
struct {
__u8 rsvd24[40];
struct nvme_registered_ctrl_ext regctl_eds[0];
};
struct nvme_registered_ctrl regctl_ds[0];
};
};
**Members**
``gen``
Generation
``rtype``
Reservation Type
``regctl``
Number of Registered Controllers
``rsvd7``
Reserved
``ptpls``
Persist Through Power Loss State
``rsvd10``
Reserved
``{unnamed_union}``
anonymous
``{unnamed_struct}``
anonymous
``rsvd24``
Reserved
``regctl_eds``
Registered Controller Extended Data Structure
``regctl_ds``
Registered Controller Data Structure
.. c:struct:: nvme_streams_directive_params
Streams Directive - Return Parameters Data Structure
**Definition**
::
struct nvme_streams_directive_params {
__le16 msl;
__le16 nssa;
__le16 nsso;
__u8 nssc;
__u8 rsvd[9];
__le32 sws;
__le16 sgs;
__le16 nsa;
__le16 nso;
__u8 rsvd2[6];
};
**Members**
``msl``
Max Streams Limit
``nssa``
NVM Subsystem Streams Available
``nsso``
NVM Subsystem Streams Open
``nssc``
NVM Subsystem Stream Capability
``rsvd``
Reserved
``sws``
Stream Write Size
``sgs``
Stream Granularity Size
``nsa``
Namespace Streams Allocated
``nso``
Namespace Streams Open
``rsvd2``
Reserved
.. c:struct:: nvme_streams_directive_status
Streams Directive - Get Status Data Structure
**Definition**
::
struct nvme_streams_directive_status {
__le16 osc;
__le16 sid[];
};
**Members**
``osc``
Open Stream Count
``sid``
Stream Identifier
.. c:struct:: nvme_id_directives
Identify Directive - Return Parameters Data Structure
**Definition**
::
struct nvme_id_directives {
__u8 supported[32];
__u8 enabled[32];
__u8 rsvd64[4032];
};
**Members**
``supported``
Identify directive is supported
``enabled``
Identify directive is Enabled
``rsvd64``
Reserved
.. c:enum:: nvme_directive_types
Directives Supported or Enabled
**Constants**
``NVME_ID_DIR_ID_BIT``
Identify directive is supported
``NVME_ID_DIR_SD_BIT``
Streams directive is supported
.. c:struct:: nvme_host_mem_buf_attrs
Host Memory Buffer - Attributes Data Structure
**Definition**
::
struct nvme_host_mem_buf_attrs {
__le32 hsize;
__le32 hmdlal;
__le32 hmdlau;
__le32 hmdlec;
__u8 rsvd16[4080];
};
**Members**
``hsize``
Host Memory Buffer Size
``hmdlal``
Host Memory Descriptor List Lower Address
``hmdlau``
Host Memory Descriptor List Upper Address
``hmdlec``
Host Memory Descriptor List Entry Count
``rsvd16``
Reserved
.. c:enum:: nvme_ae_type
Asynchronous Event Type
**Constants**
``NVME_AER_ERROR``
Error event
``NVME_AER_SMART``
SMART / Health Status event
``NVME_AER_NOTICE``
Notice event
``NVME_AER_CSS``
NVM Command Set Specific events
``NVME_AER_VS``
Vendor Specific event
.. c:enum:: nvme_ae_info_error
Asynchronous Event Information - Error Status
**Constants**
``NVME_AER_ERROR_INVALID_DB_REG``
Write to Invalid Doorbell Register
``NVME_AER_ERROR_INVALID_DB_VAL``
Invalid Doorbell Write Value
``NVME_AER_ERROR_DIAG_FAILURE``
Diagnostic Failure
``NVME_AER_ERROR_PERSISTENT_INTERNAL_ERROR``
Persistent Internal Error
``NVME_AER_ERROR_TRANSIENT_INTERNAL_ERROR``
Transient Internal Error
``NVME_AER_ERROR_FW_IMAGE_LOAD_ERROR``
Firmware Image Load Error
.. c:enum:: nvme_ae_info_smart
Asynchronous Event Information - SMART / Health Status
**Constants**
``NVME_AER_SMART_SUBSYSTEM_RELIABILITY``
NVM subsystem Reliability
``NVME_AER_SMART_TEMPERATURE_THRESHOLD``
Temperature Threshold
``NVME_AER_SMART_SPARE_THRESHOLD``
Spare Below Threshold
.. c:enum:: nvme_ae_info_css_nvm
Asynchronous Event Information - I/O Command Specific Status
**Constants**
``NVME_AER_CSS_NVM_RESERVATION``
Reservation Log Page Available
``NVME_AER_CSS_NVM_SANITIZE_COMPLETED``
Sanitize Operation Completed
``NVME_AER_CSS_NVM_UNEXPECTED_SANITIZE_DEALLOC``
Sanitize Operation Completed
With Unexpected Deallocation
.. c:enum:: nvme_ae_info_notice
Asynchronous Event Information - Notice
**Constants**
``NVME_AER_NOTICE_NS_CHANGED``
Namespace Attribute Changed
``NVME_AER_NOTICE_FW_ACT_STARTING``
Firmware Activation Starting
``NVME_AER_NOTICE_TELEMETRY``
Telemetry Log Changed
``NVME_AER_NOTICE_ANA``
Asymmetric Namespace Access Change
``NVME_AER_NOTICE_PL_EVENT``
Predictable Latency Event Aggregate Log Change
``NVME_AER_NOTICE_LBA_STATUS_ALERT``
LBA Status Information Alert
``NVME_AER_NOTICE_EG_EVENT``
Endurance Group Event Aggregate Log Page Change
``NVME_AER_NOTICE_DISC_CHANGED``
Discovery Log Page Change
.. c:enum:: nvme_subsys_type
Type of the NVM subsystem.
**Constants**
``NVME_NQN_DISC``
Discovery type target subsystem. Describes a referral to another
Discovery Service composed of Discovery controllers that provide
additional discovery records. Multiple Referral entries may
be reported for each Discovery Service (if that Discovery Service
has multiple NVM subsystem ports or supports multiple protocols).
``NVME_NQN_NVME``
NVME type target subsystem. Describes an NVM subsystem whose
controllers may have attached namespaces (an NVM subsystem
that is not composed of Discovery controllers). Multiple NVM
Subsystem entries may be reported for each NVM subsystem if
that NVM subsystem has multiple NVM subsystem ports.
``NVME_NQN_CURR``
Current Discovery type target subsystem. Describes this Discovery
subsystem (the Discovery Service that contains the controller
processing the Get Log Page command). Multiple Current Discovery
Subsystem entries may be reported for this Discovery subsystem
if the current Discovery subsystem has multiple NVM subsystem
ports.
.. c:enum:: nvmf_disc_eflags
Discovery Log Page entry flags.
**Constants**
``NVMF_DISC_EFLAGS_NONE``
Indicates that none of the DUPRETINFO or EPCSD
features are supported.
``NVMF_DISC_EFLAGS_DUPRETINFO``
Duplicate Returned Information (DUPRETINFO):
Indicates that using the content of this entry
to access this Discovery Service returns the same
information that is returned by using the content
of other entries in this log page that also have
this flag set.
``NVMF_DISC_EFLAGS_EPCSD``
Explicit Persistent Connection Support for Discovery (EPCSD):
Indicates that Explicit Persistent Connections are
supported for the Discovery controller.
``NVMF_DISC_EFLAGS_NCC``
No CDC Connectivity (NCC): If set to
'1', then no DDC that describes this entry
is currently connected to the CDC. If
cleared to '0', then at least one DDC that
describes this entry is currently
connected to the CDC. If the Discovery
controller returning this log page is not
a CDC, then this bit shall be cleared to
'0' and should be ignored by the host.
.. c:union:: nvmf_tsas
Transport Specific Address Subtype
**Definition**
::
union nvmf_tsas {
char common[NVMF_TSAS_SIZE];
struct rdma {
__u8 qptype;
__u8 prtype;
__u8 cms;
__u8 rsvd3[5];
__u16 pkey;
__u8 rsvd10[246];
} rdma;
struct tcp {
__u8 sectype;
} tcp;
};
**Members**
``common``
Common transport specific attributes
``rdma``
RDMA transport specific attribute settings
``tcp``
TCP transport specific attribute settings
.. c:struct:: nvmf_disc_log_entry
Discovery Log Page entry
**Definition**
::
struct nvmf_disc_log_entry {
__u8 trtype;
__u8 adrfam;
__u8 subtype;
__u8 treq;
__le16 portid;
__le16 cntlid;
__le16 asqsz;
__le16 eflags;
__u8 rsvd12[20];
char trsvcid[NVMF_TRSVCID_SIZE];
__u8 rsvd64[192];
char subnqn[NVME_NQN_LENGTH];
char traddr[NVMF_TRADDR_SIZE];
union nvmf_tsas tsas;
};
**Members**
``trtype``
Transport Type (TRTYPE): Specifies the NVMe Transport type.
See :c:type:`enum nvmf_trtype <nvmf_trtype>`.
``adrfam``
Address Family (ADRFAM): Specifies the address family.
See :c:type:`enum nvmf_addr_family <nvmf_addr_family>`.
``subtype``
Subsystem Type (SUBTYPE): Specifies the type of the NVM subsystem
that is indicated in this entry. See :c:type:`enum nvme_subsys_type <nvme_subsys_type>`.
``treq``
Transport Requirements (TREQ): Indicates requirements for the NVMe
Transport. See :c:type:`enum nvmf_treq <nvmf_treq>`.
``portid``
Port ID (PORTID): Specifies a particular NVM subsystem port.
Different NVMe Transports or address families may utilize the same
Port ID value (e.g. a Port ID may support both iWARP and RoCE).
``cntlid``
Controller ID (CNTLID): Specifies the controller ID. If the NVM
subsystem uses a dynamic controller model, then this field shall
be set to FFFFh. If the NVM subsystem uses a static controller model,
then this field may be set to a specific controller ID (values 0h
to FFEFh are valid). If the NVM subsystem uses a static controller
model and the value indicated is FFFEh, then the host should remember
the Controller ID returned as part of the Fabrics Connect command
in order to re-establish an association in the future with the same
controller.
``asqsz``
Admin Max SQ Size (ASQSZ): Specifies the maximum size of an Admin
Submission Queue. This applies to all controllers in the NVM
subsystem. The value shall be a minimum of 32 entries.
``eflags``
Entry Flags (EFLAGS): Indicates additional information related to
the current entry. See :c:type:`enum nvmf_disc_eflags <nvmf_disc_eflags>`.
``rsvd12``
Reserved
``trsvcid``
Transport Service Identifier (TRSVCID): Specifies the NVMe Transport
service identifier as an ASCII string. The NVMe Transport service
identifier is specified by the associated NVMe Transport binding
specification.
``rsvd64``
Reserved
``subnqn``
NVM Subsystem Qualified Name (SUBNQN): NVMe Qualified Name (NQN)
that uniquely identifies the NVM subsystem. For a subsystem, if that
Discovery subsystem has a unique NQN (i.e., the NVM Subsystem NVMe
Qualified Name (SUBNQN) field in that Discovery subsystem's Identify
Controller data structure contains a unique NQN value), then the
value returned shall be that unique NQN. If the Discovery subsystem
does not have a unique NQN, then the value returned shall be the
well-known Discovery Service NQN (nqn.2014-08.org.nvmexpress.discovery).
``traddr``
Transport Address (TRADDR): Specifies the address of the NVM subsystem
that may be used for a Connect command as an ASCII string. The
Address Family field describes the reference for parsing this field.
``tsas``
Transport specific attribute settings
.. c:enum:: nvmf_trtype
Transport Type codes for Discovery Log Page entry TRTYPE field
**Constants**
``NVMF_TRTYPE_UNSPECIFIED``
Not indicated
``NVMF_TRTYPE_RDMA``
RDMA
``NVMF_TRTYPE_FC``
Fibre Channel
``NVMF_TRTYPE_TCP``
TCP
``NVMF_TRTYPE_LOOP``
Intra-host Transport (i.e., loopback), reserved
for host usage.
``NVMF_TRTYPE_MAX``
Maximum value for :c:type:`enum nvmf_trtype <nvmf_trtype>`
.. c:enum:: nvmf_addr_family
Address Family codes for Discovery Log Page entry ADRFAM field
**Constants**
``NVMF_ADDR_FAMILY_PCI``
PCIe
``NVMF_ADDR_FAMILY_IP4``
AF_INET: IPv4 address family.
``NVMF_ADDR_FAMILY_IP6``
AF_INET6: IPv6 address family.
``NVMF_ADDR_FAMILY_IB``
AF_IB: InfiniBand address family.
``NVMF_ADDR_FAMILY_FC``
Fibre Channel address family.
``NVMF_ADDR_FAMILY_LOOP``
Intra-host Transport (i.e., loopback), reserved
for host usage.
.. c:enum:: nvmf_treq
Transport Requirements codes for Discovery Log Page entry TREQ field
**Constants**
``NVMF_TREQ_NOT_SPECIFIED``
Not specified
``NVMF_TREQ_REQUIRED``
Required
``NVMF_TREQ_NOT_REQUIRED``
Not Required
``NVMF_TREQ_DISABLE_SQFLOW``
SQ flow control disable supported
.. c:enum:: nvmf_rdma_qptype
RDMA QP Service Type codes for Discovery Log Page entry TSAS RDMA_QPTYPE field
**Constants**
``NVMF_RDMA_QPTYPE_CONNECTED``
Reliable Connected
``NVMF_RDMA_QPTYPE_DATAGRAM``
Reliable Datagram
.. c:enum:: nvmf_rdma_prtype
RDMA Provider Type codes for Discovery Log Page entry TSAS RDMA_PRTYPE field
**Constants**
``NVMF_RDMA_PRTYPE_NOT_SPECIFIED``
No Provider Specified
``NVMF_RDMA_PRTYPE_IB``
InfiniBand
``NVMF_RDMA_PRTYPE_ROCE``
InfiniBand RoCE
``NVMF_RDMA_PRTYPE_ROCEV2``
InfiniBand RoCEV2
``NVMF_RDMA_PRTYPE_IWARP``
iWARP
.. c:enum:: nvmf_rdma_cms
RDMA Connection Management Service Type codes for Discovery Log Page entry TSAS RDMA_CMS field
**Constants**
``NVMF_RDMA_CMS_RDMA_CM``
Sockets based endpoint addressing
.. c:enum:: nvmf_tcp_sectype
Transport Specific Address Subtype Definition for NVMe/TCP Transport
**Constants**
``NVMF_TCP_SECTYPE_NONE``
No Security
``NVMF_TCP_SECTYPE_TLS``
Transport Layer Security version 1.2
``NVMF_TCP_SECTYPE_TLS13``
Transport Layer Security version 1.3 or a subsequent
version. The TLS protocol negotiates the version and
cipher suite for each TCP connection.
.. c:enum:: nvmf_log_discovery_lid_support
Discovery log specific support
**Constants**
``NVMF_LOG_DISC_LID_NONE``
None
``NVMF_LOG_DISC_LID_EXTDLPES``
Extended Discovery Log Page Entries Supported
``NVMF_LOG_DISC_LID_PLEOS``
Port Local Entries Only Supported
``NVMF_LOG_DISC_LID_ALLSUBES``
All NVM Subsystem Entries Supported
.. c:enum:: nvmf_log_discovery_lsp
Discovery log specific field
**Constants**
``NVMF_LOG_DISC_LSP_NONE``
None
``NVMF_LOG_DISC_LSP_EXTDLPE``
Extended Discovery Log Page Entries
``NVMF_LOG_DISC_LSP_PLEO``
Port Local Entries Only
``NVMF_LOG_DISC_LSP_ALLSUBE``
All NVM Subsystem Entries
.. c:struct:: nvmf_discovery_log
Discovery Log Page (Log Identifier 70h)
**Definition**
::
struct nvmf_discovery_log {
__le64 genctr;
__le64 numrec;
__le16 recfmt;
__u8 rsvd14[1006];
struct nvmf_disc_log_entry entries[];
};
**Members**
``genctr``
Generation Counter (GENCTR): Indicates the version of the discovery
information, starting at a value of 0h. For each change in the
Discovery Log Page, this counter is incremented by one. If the value
of this field is FFFFFFFF_FFFFFFFFh, then the field shall be cleared
to 0h when incremented (i.e., rolls over to 0h).
``numrec``
Number of Records (NUMREC): Indicates the number of records
contained in the log.
``recfmt``
Record Format (RECFMT): Specifies the format of the Discovery Log
Page. If a new format is defined, this value is incremented by one.
The format of the record specified in this definition shall be 0h.
``rsvd14``
Reserved
``entries``
Discovery Log Page Entries - see :c:type:`struct nvmf_disc_log_entry <nvmf_disc_log_entry>`.
.. c:enum:: nvmf_dim_tas
Discovery Information Management Task
**Constants**
``NVMF_DIM_TAS_REGISTER``
Register
``NVMF_DIM_TAS_DEREGISTER``
Deregister
``NVMF_DIM_TAS_UPDATE``
Update
.. c:enum:: nvmf_dim_entfmt
Discovery Information Management Entry Format
**Constants**
``NVMF_DIM_ENTFMT_BASIC``
Basic discovery information entry
``NVMF_DIM_ENTFMT_EXTENDED``
Extended discovery information entry
.. c:enum:: nvmf_dim_etype
Discovery Information Management Entity Type
**Constants**
``NVMF_DIM_ETYPE_HOST``
Host
``NVMF_DIM_ETYPE_DDC``
Direct Discovery controller
``NVMF_DIM_ETYPE_CDC``
Centralized Discovery controller
.. c:enum:: nvmf_exattype
Extended Attribute Type
**Constants**
``NVMF_EXATTYPE_HOSTID``
Host Identifier
``NVMF_EXATTYPE_SYMNAME``
Symblic Name
.. c:struct:: nvmf_ext_attr
Extended Attribute (EXAT)
**Definition**
::
struct nvmf_ext_attr {
__le16 exattype;
__le16 exatlen;
__u8 exatval[];
};
**Members**
``exattype``
Extended Attribute Type (EXATTYPE) - see **enum** nvmf_exattype
``exatlen``
Extended Attribute Length (EXATLEN)
``exatval``
Extended Attribute Value (EXATVAL) - size allocated for array
must be a multiple of 4 bytes
.. c:struct:: nvmf_ext_die
Extended Discovery Information Entry (DIE)
**Definition**
::
struct nvmf_ext_die {
__u8 trtype;
__u8 adrfam;
__u8 subtype;
__u8 treq;
__le16 portid;
__le16 cntlid;
__le16 asqsz;
__u8 rsvd10[22];
char trsvcid[NVMF_TRSVCID_SIZE];
__u8 resv64[192];
char nqn[NVME_NQN_LENGTH];
char traddr[NVMF_TRADDR_SIZE];
union nvmf_tsas tsas;
__le32 tel;
__le16 numexat;
__u8 resv1030[2];
struct nvmf_ext_attr exat[];
};
**Members**
``trtype``
Transport Type (:c:type:`enum nvmf_trtype <nvmf_trtype>`)
``adrfam``
Address Family (:c:type:`enum nvmf_addr_family <nvmf_addr_family>`)
``subtype``
Subsystem Type (:c:type:`enum nvme_subsys_type <nvme_subsys_type>`)
``treq``
Transport Requirements (:c:type:`enum nvmf_treq <nvmf_treq>`)
``portid``
Port ID
``cntlid``
Controller ID
``asqsz``
Admin Max SQ Size
``rsvd10``
Reserved
``trsvcid``
Transport Service Identifier
``resv64``
Reserved
``nqn``
NVM Qualified Name
``traddr``
Transport Address
``tsas``
Transport Specific Address Subtype (:c:type:`union nvmf_tsas <nvmf_tsas>`)
``tel``
Total Entry Length
``numexat``
Number of Extended Attributes
``resv1030``
Reserved
``exat``
Extended Attributes 0 (:c:type:`struct nvmf_ext_attr <nvmf_ext_attr>`)
.. c:union:: nvmf_die
Discovery Information Entry (DIE)
**Definition**
::
union nvmf_die {
struct nvmf_disc_log_entry basic[0];
struct nvmf_ext_die extended;
};
**Members**
``basic``
Basic format (:c:type:`struct nvmf_disc_log_entry <nvmf_disc_log_entry>`)
``extended``
Extended format (:c:type:`struct nvmf_ext_die <nvmf_ext_die>`)
**Description**
Depending on the ENTFMT specified in the DIM, DIEs can be entered
with the Basic or Extended formats. For Basic format, each entry
has a fixed length. Therefore, the "basic" field defined below can
be accessed as a C array. For the Extended format, however, each
entry is of variable length (TEL). Therefore, the "extended" field
defined below cannot be accessed as a C array. Instead, the
"extended" field is akin to a linked-list, where one can "walk"
through the list. To move to the next entry, one simply adds the
current entry's length (TEL) to the "walk" pointer. The number of
entries in the list is specified by NUMENT. Although extended
entries are of a variable lengths (TEL), TEL is always a multiple of
4 bytes.
.. c:struct:: nvmf_dim_data
Discovery Information Management (DIM) - Data
**Definition**
::
struct nvmf_dim_data {
__le32 tdl;
__u8 rsvd4[4];
__le64 nument;
__le16 entfmt;
__le16 etype;
__u8 portlcl;
__u8 rsvd21;
__le16 ektype;
char eid[NVME_NQN_LENGTH];
char ename[NVMF_ENAME_LEN];
char ever[NVMF_EVER_LEN];
__u8 rsvd600[424];
union nvmf_die die[];
};
**Members**
``tdl``
Total Data Length
``rsvd4``
Reserved
``nument``
Number of entries
``entfmt``
Entry Format (:c:type:`enum nvmf_dim_entfmt <nvmf_dim_entfmt>`)
``etype``
Entity Type (:c:type:`enum nvmf_dim_etype <nvmf_dim_etype>`)
``portlcl``
Port Local
``rsvd21``
Reserved
``ektype``
Entry Key Type
``eid``
Entity Identifier (e.g. Host NQN)
``ename``
Entity Name (e.g. hostname)
``ever``
Entity Version (e.g. OS Name/Version)
``rsvd600``
Reserved
``die``
Discovery Information Entry (see **nument** above)
.. c:struct:: nvmf_connect_data
Data payload for the 'connect' command
**Definition**
::
struct nvmf_connect_data {
__u8 hostid[16];
__le16 cntlid;
char rsvd4[238];
char subsysnqn[NVME_NQN_LENGTH];
char hostnqn[NVME_NQN_LENGTH];
char rsvd5[256];
};
**Members**
``hostid``
Host ID of the connecting host
``cntlid``
Requested controller ID
``rsvd4``
Reserved
``subsysnqn``
Subsystem NQN to connect to
``hostnqn``
Host NQN of the connecting host
``rsvd5``
Reserved
.. c:struct:: nvme_mi_read_nvm_ss_info
NVM Subsystem Information Data Structure
**Definition**
::
struct nvme_mi_read_nvm_ss_info {
__u8 nump;
__u8 mjr;
__u8 mnr;
__u8 rsvd3[29];
};
**Members**
``nump``
Number of Ports
``mjr``
NVMe-MI Major Version Number
``mnr``
NVMe-MI Minor Version Number
``rsvd3``
Reserved
.. c:struct:: nvme_mi_port_pcie
PCIe Port Specific Data
**Definition**
::
struct nvme_mi_port_pcie {
__u8 mps;
__u8 sls;
__u8 cls;
__u8 mlw;
__u8 nlw;
__u8 pn;
__u8 rsvd14[18];
};
**Members**
``mps``
PCIe Maximum Payload Size
``sls``
PCIe Supported Link Speeds Vector
``cls``
PCIe Current Link Speed
``mlw``
PCIe Maximum Link Width
``nlw``
PCIe Negotiated Link Width
``pn``
PCIe Port Number
``rsvd14``
Reserved
.. c:struct:: nvme_mi_port_smb
SMBus Port Specific Data
**Definition**
::
struct nvme_mi_port_smb {
__u8 vpd_addr;
__u8 mvpd_freq;
__u8 mme_addr;
__u8 mme_freq;
__u8 nvmebm;
__u8 rsvd13[19];
};
**Members**
``vpd_addr``
Current VPD SMBus/I2C Address
``mvpd_freq``
Maximum VPD Access SMBus/I2C Frequency
``mme_addr``
Current Management Endpoint SMBus/I2C Address
``mme_freq``
Maximum Management Endpoint SMBus/I2C Frequency
``nvmebm``
NVMe Basic Management
``rsvd13``
Reserved
.. c:struct:: nvme_mi_read_port_info
Port Information Data Structure
**Definition**
::
struct nvme_mi_read_port_info {
__u8 portt;
__u8 rsvd1;
__le16 mmctptus;
__le32 meb;
union {
struct nvme_mi_port_pcie pcie;
struct nvme_mi_port_smb smb;
};
};
**Members**
``portt``
Port Type
``rsvd1``
Reserved
``mmctptus``
Maximum MCTP Transmission Unit Size
``meb``
Management Endpoint Buffer Size
``{unnamed_union}``
anonymous
``pcie``
PCIe Port Specific Data
``smb``
SMBus Port Specific Data
.. c:struct:: nvme_mi_read_ctrl_info
Controller Information Data Structure
**Definition**
::
struct nvme_mi_read_ctrl_info {
__u8 portid;
__u8 rsvd1[4];
__u8 prii;
__le16 pri;
__le16 vid;
__le16 did;
__le16 ssvid;
__le16 ssid;
__u8 rsvd16[16];
};
**Members**
``portid``
Port Identifier
``rsvd1``
Reserved
``prii``
PCIe Routing ID Information
``pri``
PCIe Routing ID
``vid``
PCI Vendor ID
``did``
PCI Device ID
``ssvid``
PCI Subsystem Vendor ID
``ssid``
PCI Subsystem Device ID
``rsvd16``
Reserved
.. c:struct:: nvme_mi_osc
Optionally Supported Command Data Structure
**Definition**
::
struct nvme_mi_osc {
__u8 type;
__u8 opc;
};
**Members**
``type``
Command Type
``opc``
Opcode
.. c:struct:: nvme_mi_read_sc_list
Management Endpoint Buffer Supported Command List Data Structure
**Definition**
::
struct nvme_mi_read_sc_list {
__le16 numcmd;
struct nvme_mi_osc cmds[];
};
**Members**
``numcmd``
Number of Commands
``cmds``
MEB supported Command Data Structure.
See **struct** nvme_mi_osc
.. c:struct:: nvme_mi_nvm_ss_health_status
Subsystem Management Data Structure
**Definition**
::
struct nvme_mi_nvm_ss_health_status {
__u8 nss;
__u8 sw;
__u8 ctemp;
__u8 pdlu;
__le16 ccs;
__u8 rsvd8[2];
};
**Members**
``nss``
NVM Subsystem Status
``sw``
Smart Warnings
``ctemp``
Composite Temperature
``pdlu``
Percentage Drive Life Used
``ccs``
Composite Controller Status
``rsvd8``
Reserved
.. c:enum:: nvme_mi_ccs
Get State Control Primitive Success Response Fields - Control Primitive Specific Response
**Constants**
``NVME_MI_CCS_RDY``
Ready
``NVME_MI_CCS_CFS``
Controller Fatal Status
``NVME_MI_CCS_SHST``
Shutdown Status
``NVME_MI_CCS_NSSRO``
NVM Subsystem Reset Occurred
``NVME_MI_CCS_CECO``
Controller Enable Change Occurred
``NVME_MI_CCS_NAC``
Namespace Attribute Changed
``NVME_MI_CCS_FA``
Firmware Activated
``NVME_MI_CCS_CSTS``
Controller Status Change
``NVME_MI_CCS_CTEMP``
Composite Temperature Change
``NVME_MI_CCS_PDLU``
Percentage Used
``NVME_MI_CCS_SPARE``
Available Spare
``NVME_MI_CCS_CCWARN``
Critical Warning
.. c:struct:: nvme_mi_ctrl_health_status
Controller Health Data Structure (CHDS)
**Definition**
::
struct nvme_mi_ctrl_health_status {
__le16 ctlid;
__le16 csts;
__le16 ctemp;
__u8 pdlu;
__u8 spare;
__u8 cwarn;
__u8 rsvd9[7];
};
**Members**
``ctlid``
Controller Identifier
``csts``
Controller Status
``ctemp``
Composite Temperature
``pdlu``
Percentage Used
``spare``
Available Spare
``cwarn``
Critical Warning
``rsvd9``
Reserved
.. c:enum:: nvme_mi_csts
Controller Health Data Structure (CHDS) - Controller Status (CSTS)
**Constants**
``NVME_MI_CSTS_RDY``
Ready
``NVME_MI_CSTS_CFS``
Controller Fatal Status
``NVME_MI_CSTS_SHST``
Shutdown Status
``NVME_MI_CSTS_NSSRO``
NVM Subsystem Reset Occurred
``NVME_MI_CSTS_CECO``
Controller Enable Change Occurred
``NVME_MI_CSTS_NAC``
Namespace Attribute Changed
``NVME_MI_CSTS_FA``
Firmware Activated
.. c:enum:: nvme_mi_cwarn
Controller Health Data Structure (CHDS) - Critical Warning (CWARN)
**Constants**
``NVME_MI_CWARN_ST``
Spare Threshold
``NVME_MI_CWARN_TAUT``
Temperature Above or Under Threshold
``NVME_MI_CWARN_RD``
Reliability Degraded
``NVME_MI_CWARN_RO``
Read Only
``NVME_MI_CWARN_VMBF``
Volatile Memory Backup Failed
.. c:struct:: nvme_mi_vpd_mra
NVMe MultiRecord Area
**Definition**
::
struct nvme_mi_vpd_mra {
__u8 nmravn;
__u8 ff;
__u8 rsvd7[6];
__u8 i18vpwr;
__u8 m18vpwr;
__u8 i33vpwr;
__u8 m33vpwr;
__u8 rsvd17;
__u8 m33vapsr;
__u8 i5vapsr;
__u8 m5vapsr;
__u8 i12vapsr;
__u8 m12vapsr;
__u8 mtl;
__u8 tnvmcap[16];
__u8 rsvd37[27];
};
**Members**
``nmravn``
NVMe MultiRecord Area Version Number
``ff``
Form Factor
``rsvd7``
Reserved
``i18vpwr``
Initial 1.8 V Power Supply Requirements
``m18vpwr``
Maximum 1.8 V Power Supply Requirements
``i33vpwr``
Initial 3.3 V Power Supply Requirements
``m33vpwr``
Maximum 3.3 V Power Supply Requirements
``rsvd17``
Reserved
``m33vapsr``
Maximum 3.3 Vi aux Power Supply Requirements
``i5vapsr``
Initial 5 V Power Supply Requirements
``m5vapsr``
Maximum 5 V Power Supply Requirements
``i12vapsr``
Initial 12 V Power Supply Requirements
``m12vapsr``
Maximum 12 V Power Supply Requirements
``mtl``
Maximum Thermal Load
``tnvmcap``
Total NVM Capacity
``rsvd37``
Reserved
.. c:struct:: nvme_mi_vpd_ppmra
NVMe PCIe Port MultiRecord Area
**Definition**
::
struct nvme_mi_vpd_ppmra {
__u8 nppmravn;
__u8 pn;
__u8 ppi;
__u8 ls;
__u8 mlw;
__u8 mctp;
__u8 refccap;
__u8 pi;
__u8 rsvd13[3];
};
**Members**
``nppmravn``
NVMe PCIe Port MultiRecord Area Version Number
``pn``
PCIe Port Number
``ppi``
Port Information
``ls``
PCIe Link Speed
``mlw``
PCIe Maximum Link Width
``mctp``
MCTP Support
``refccap``
Ref Clk Capability
``pi``
Port Identifier
``rsvd13``
Reserved
.. c:struct:: nvme_mi_vpd_telem
Vital Product Data Element Descriptor
**Definition**
::
struct nvme_mi_vpd_telem {
__u8 type;
__u8 rev;
__u8 len;
__u8 data[0];
};
**Members**
``type``
Type of the Element Descriptor
``rev``
Revision of the Element Descriptor
``len``
Number of bytes in the Element Descriptor
``data``
Type-specific information associated with
the Element Descriptor
.. c:enum:: nvme_mi_elem
Element Descriptor Types
**Constants**
``NVME_MI_ELEM_EED``
Extended Element Descriptor
``NVME_MI_ELEM_USCE``
Upstream Connector Element Descriptor
``NVME_MI_ELEM_ECED``
Expansion Connector Element Descriptor
``NVME_MI_ELEM_LED``
Label Element Descriptor
``NVME_MI_ELEM_SMBMED``
SMBus/I2C Mux Element Descriptor
``NVME_MI_ELEM_PCIESED``
PCIe Switch Element Descriptor
``NVME_MI_ELEM_NVMED``
NVM Subsystem Element Descriptor
.. c:struct:: nvme_mi_vpd_tra
Vital Product Data Topology MultiRecord
**Definition**
::
struct nvme_mi_vpd_tra {
__u8 vn;
__u8 rsvd6;
__u8 ec;
struct nvme_mi_vpd_telem elems[0];
};
**Members**
``vn``
Version Number
``rsvd6``
Reserved
``ec``
Element Count
``elems``
Element Descriptor
.. c:struct:: nvme_mi_vpd_mr_common
NVMe MultiRecord Area
**Definition**
::
struct nvme_mi_vpd_mr_common {
__u8 type;
__u8 rf;
__u8 rlen;
__u8 rchksum;
__u8 hchksum;
union {
struct nvme_mi_vpd_mra nmra;
struct nvme_mi_vpd_ppmra ppmra;
struct nvme_mi_vpd_tra tmra;
};
};
**Members**
``type``
NVMe Record Type ID
``rf``
Record Format
``rlen``
Record Length
``rchksum``
Record Checksum
``hchksum``
Header Checksum
``{unnamed_union}``
anonymous
``nmra``
NVMe MultiRecord Area
``ppmra``
NVMe PCIe Port MultiRecord Area
``tmra``
Topology MultiRecord Area
.. c:struct:: nvme_mi_vpd_hdr
Vital Product Data Common Header
**Definition**
::
struct nvme_mi_vpd_hdr {
__u8 ipmiver;
__u8 iuaoff;
__u8 ciaoff;
__u8 biaoff;
__u8 piaoff;
__u8 mrioff;
__u8 rsvd6;
__u8 chchk;
__u8 vpd[];
};
**Members**
``ipmiver``
IPMI Format Version Number
``iuaoff``
Internal Use Area Starting Offset
``ciaoff``
Chassis Info Area Starting Offset
``biaoff``
Board Info Area Starting Offset
``piaoff``
Product Info Area Starting Offset
``mrioff``
MultiRecord Info Area Starting Offset
``rsvd6``
Reserved
``chchk``
Common Header Checksum
``vpd``
Vital Product Data
.. c:enum:: nvme_status_field
Defines all parts of the nvme status field: status code, status code type, and additional flags.
**Constants**
``NVME_SCT_GENERIC``
Generic errors applicable to multiple opcodes
``NVME_SCT_CMD_SPECIFIC``
Errors associated to a specific opcode
``NVME_SCT_MEDIA``
Errors associated with media and data integrity
``NVME_SCT_PATH``
Errors associated with the paths connection
``NVME_SCT_VS``
Vendor specific errors
``NVME_SCT_MASK``
Mask to get the value of the Status Code Type
``NVME_SCT_SHIFT``
Shift value to get the value of the Status
Code Type
``NVME_SC_MASK``
Mask to get the value of the status code.
``NVME_SC_SHIFT``
Shift value to get the value of the status
code.
``NVME_SC_SUCCESS``
Successful Completion: The command
completed without error.
``NVME_SC_INVALID_OPCODE``
Invalid Command Opcode: A reserved coded
value or an unsupported value in the
command opcode field.
``NVME_SC_INVALID_FIELD``
Invalid Field in Command: A reserved
coded value or an unsupported value in a
defined field.
``NVME_SC_CMDID_CONFLICT``
Command ID Conflict: The command
identifier is already in use.
``NVME_SC_DATA_XFER_ERROR``
Data Transfer Error: Transferring the
data or metadata associated with a
command experienced an error.
``NVME_SC_POWER_LOSS``
Commands Aborted due to Power Loss
Notification: Indicates that the command
was aborted due to a power loss
notification.
``NVME_SC_INTERNAL``
Internal Error: The command was not
completed successfully due to an internal error.
``NVME_SC_ABORT_REQ``
Command Abort Requested: The command was
aborted due to an Abort command being
received that specified the Submission
Queue Identifier and Command Identifier
of this command.
``NVME_SC_ABORT_QUEUE``
Command Aborted due to SQ Deletion: The
command was aborted due to a Delete I/O
Submission Queue request received for the
Submission Queue to which the command was
submitted.
``NVME_SC_FUSED_FAIL``
Command Aborted due to Failed Fused Command:
The command was aborted due to the other
command in a fused operation failing.
``NVME_SC_FUSED_MISSING``
Aborted due to Missing Fused Command: The
fused command was aborted due to the
adjacent submission queue entry not
containing a fused command that is the
other command.
``NVME_SC_INVALID_NS``
Invalid Namespace or Format: The
namespace or the format of that namespace
is invalid.
``NVME_SC_CMD_SEQ_ERROR``
Command Sequence Error: The command was
aborted due to a protocol violation in a
multi-command sequence.
``NVME_SC_SGL_INVALID_LAST``
Invalid SGL Segment Descriptor: The
command includes an invalid SGL Last
Segment or SGL Segment descriptor.
``NVME_SC_SGL_INVALID_COUNT``
Invalid Number of SGL Descriptors: There
is an SGL Last Segment descriptor or an
SGL Segment descriptor in a location
other than the last descriptor of a
segment based on the length indicated.
``NVME_SC_SGL_INVALID_DATA``
Data SGL Length Invalid: This may occur
if the length of a Data SGL is too short.
This may occur if the length of a Data
SGL is too long and the controller does
not support SGL transfers longer than the
amount of data to be transferred as
indicated in the SGL Support field of the
Identify Controller data structure.
``NVME_SC_SGL_INVALID_METADATA``
Metadata SGL Length Invalid: This may
occur if the length of a Metadata SGL is
too short. This may occur if the length
of a Metadata SGL is too long and the
controller does not support SGL transfers
longer than the amount of data to be
transferred as indicated in the SGL
Support field of the Identify Controller
data structure.
``NVME_SC_SGL_INVALID_TYPE``
SGL Descriptor Type Invalid: The type of
an SGL Descriptor is a type that is not
supported by the controller.
``NVME_SC_CMB_INVALID_USE``
Invalid Use of Controller Memory Buffer:
The attempted use of the Controller
Memory Buffer is not supported by the
controller.
``NVME_SC_PRP_INVALID_OFFSET``
PRP Offset Invalid: The Offset field for
a PRP entry is invalid.
``NVME_SC_AWU_EXCEEDED``
Atomic Write Unit Exceeded: The length
specified exceeds the atomic write unit size.
``NVME_SC_OP_DENIED``
Operation Denied: The command was denied
due to lack of access rights. Refer to
the appropriate security specification.
``NVME_SC_SGL_INVALID_OFFSET``
SGL Offset Invalid: The offset specified
in a descriptor is invalid. This may
occur when using capsules for data
transfers in NVMe over Fabrics
implementations and an invalid offset in
the capsule is specified.
``NVME_SC_HOSTID_FORMAT``
Host Identifier Inconsistent Format: The
NVM subsystem detected the simultaneous
use of 64- bit and 128-bit Host
Identifier values on different
controllers.
``NVME_SC_KAT_EXPIRED``
Keep Alive Timer Expired: The Keep Alive
Timer expired.
``NVME_SC_KAT_INVALID``
Keep Alive Timeout Invalid: The Keep
Alive Timeout value specified is invalid.
``NVME_SC_CMD_ABORTED_PREMEPT``
Command Aborted due to Preempt and Abort:
The command was aborted due to a
Reservation Acquire command.
``NVME_SC_SANITIZE_FAILED``
Sanitize Failed: The most recent sanitize
operation failed and no recovery action
has been successfully completed.
``NVME_SC_SANITIZE_IN_PROGRESS``
Sanitize In Progress: The requested
function (e.g., command) is prohibited
while a sanitize operation is in
progress.
``NVME_SC_SGL_INVALID_GRANULARITY``
SGL Data Block Granularity Invalid: The
Address alignment or Length granularity
for an SGL Data Block descriptor is
invalid.
``NVME_SC_CMD_IN_CMBQ_NOT_SUPP``
Command Not Supported for Queue in CMB:
The implementation does not support
submission of the command to a Submission
Queue in the Controller Memory Buffer or
command completion to a Completion Queue
in the Controller Memory Buffer.
``NVME_SC_NS_WRITE_PROTECTED``
Namespace is Write Protected: The command
is prohibited while the namespace is
write protected as a result of a change
in the namespace write protection state
as defined by the Namespace Write
Protection State Machine.
``NVME_SC_CMD_INTERRUPTED``
Command Interrupted: Command processing
was interrupted and the controller is
unable to successfully complete the
command. The host should retry the
command.
``NVME_SC_TRAN_TPORT_ERROR``
Transient Transport Error: A transient
transport error was detected. If the
command is retried on the same
controller, the command is likely to
succeed. A command that fails with a
transient transport error four or more
times should be treated as a persistent
transport error that is not likely to
succeed if retried on the same
controller.
``NVME_SC_PROHIBITED_BY_CMD_AND_FEAT``
Command Prohibited by Command and Feature
Lockdown: The command was aborted due to
command execution being prohibited by
the Command and Feature Lockdown.
``NVME_SC_ADMIN_CMD_MEDIA_NOT_READY``
Admin Command Media Not Ready: The Admin
command requires access to media and
the media is not ready.
``NVME_SC_LBA_RANGE``
LBA Out of Range: The command references
an LBA that exceeds the size of the namespace.
``NVME_SC_CAP_EXCEEDED``
Capacity Exceeded: Execution of the
command has caused the capacity of the
namespace to be exceeded.
``NVME_SC_NS_NOT_READY``
Namespace Not Ready: The namespace is not
ready to be accessed as a result of a
condition other than a condition that is
reported as an Asymmetric Namespace
Access condition.
``NVME_SC_RESERVATION_CONFLICT``
Reservation Conflict: The command was
aborted due to a conflict with a
reservation held on the accessed
namespace.
``NVME_SC_FORMAT_IN_PROGRESS``
Format In Progress: A Format NVM command
is in progress on the namespace.
``NVME_SC_CQ_INVALID``
Completion Queue Invalid: The Completion
Queue identifier specified in the command
does not exist.
``NVME_SC_QID_INVALID``
Invalid Queue Identifier: The creation of
the I/O Completion Queue failed due to an
invalid queue identifier specified as
part of the command. An invalid queue
identifier is one that is currently in
use or one that is outside the range
supported by the controller.
``NVME_SC_QUEUE_SIZE``
Invalid Queue Size: The host attempted to
create an I/O Completion Queue with an
invalid number of entries.
``NVME_SC_ABORT_LIMIT``
Abort Command Limit Exceeded: The number
of concurrently outstanding Abort commands
has exceeded the limit indicated in the
Identify Controller data structure.
``NVME_SC_ABORT_MISSING``
Abort Command is missing: The abort
command is missing.
``NVME_SC_ASYNC_LIMIT``
Asynchronous Event Request Limit
Exceeded: The number of concurrently
outstanding Asynchronous Event Request
commands has been exceeded.
``NVME_SC_FIRMWARE_SLOT``
Invalid Firmware Slot: The firmware slot
indicated is invalid or read only. This
error is indicated if the firmware slot
exceeds the number supported.
``NVME_SC_FIRMWARE_IMAGE``
Invalid Firmware Image: The firmware
image specified for activation is invalid
and not loaded by the controller.
``NVME_SC_INVALID_VECTOR``
Invalid Interrupt Vector: The creation of
the I/O Completion Queue failed due to an
invalid interrupt vector specified as
part of the command.
``NVME_SC_INVALID_LOG_PAGE``
Invalid Log Page: The log page indicated
is invalid. This error condition is also
returned if a reserved log page is
requested.
``NVME_SC_INVALID_FORMAT``
Invalid Format: The LBA Format specified
is not supported.
``NVME_SC_FW_NEEDS_CONV_RESET``
Firmware Activation Requires Conventional Reset:
The firmware commit was successful,
however, activation of the firmware image
requires a conventional reset.
``NVME_SC_INVALID_QUEUE``
Invalid Queue Deletion: Invalid I/O
Completion Queue specified to delete.
``NVME_SC_FEATURE_NOT_SAVEABLE``
Feature Identifier Not Saveable: The
Feature Identifier specified does not
support a saveable value.
``NVME_SC_FEATURE_NOT_CHANGEABLE``
Feature Not Changeable: The Feature
Identifier is not able to be changed.
``NVME_SC_FEATURE_NOT_PER_NS``
Feature Not Namespace Specific: The
Feature Identifier specified is not
namespace specific. The Feature
Identifier settings apply across all
namespaces.
``NVME_SC_FW_NEEDS_SUBSYS_RESET``
Firmware Activation Requires NVM
Subsystem Reset: The firmware commit was
successful, however, activation of the
firmware image requires an NVM Subsystem.
``NVME_SC_FW_NEEDS_RESET``
Firmware Activation Requires Controller
Level Reset: The firmware commit was
successful; however, the image specified
does not support being activated without
a reset.
``NVME_SC_FW_NEEDS_MAX_TIME``
Firmware Activation Requires Maximum Time
Violation: The image specified if
activated immediately would exceed the
Maximum Time for Firmware Activation
(MTFA) value reported in Identify
Controller.
``NVME_SC_FW_ACTIVATE_PROHIBITED``
Firmware Activation Prohibited: The image
specified is being prohibited from
activation by the controller for vendor
specific reasons.
``NVME_SC_OVERLAPPING_RANGE``
Overlapping Range: The downloaded
firmware image has overlapping ranges.
``NVME_SC_NS_INSUFFICIENT_CAP``
Namespace Insufficient Capacity: Creating
the namespace requires more free space
than is currently available.
``NVME_SC_NS_ID_UNAVAILABLE``
Namespace Identifier Unavailable: The
number of namespaces supported has been
exceeded.
``NVME_SC_NS_ALREADY_ATTACHED``
Namespace Already Attached: The
controller is already attached to the
namespace specified.
``NVME_SC_NS_IS_PRIVATE``
Namespace Is Private: The namespace is
private and is already attached to one
controller.
``NVME_SC_NS_NOT_ATTACHED``
Namespace Not Attached: The request to
detach the controller could not be
completed because the controller is not
attached to the namespace.
``NVME_SC_THIN_PROV_NOT_SUPP``
Thin Provisioning Not Supported: Thin
provisioning is not supported by the
controller.
``NVME_SC_CTRL_LIST_INVALID``
Controller List Invalid: The controller
list provided contains invalid controller
ids.
``NVME_SC_SELF_TEST_IN_PROGRESS``
Device Self-test In Progress: The controller
or NVM subsystem already has a device
self-test operation in process.
``NVME_SC_BP_WRITE_PROHIBITED``
Boot Partition Write Prohibited: The
command is trying to modify a locked Boot
Partition.
``NVME_SC_INVALID_CTRL_ID``
Invalid Controller Identifier:
``NVME_SC_INVALID_SEC_CTRL_STATE``
Invalid Secondary Controller State
``NVME_SC_INVALID_CTRL_RESOURCES``
Invalid Number of Controller Resources
``NVME_SC_INVALID_RESOURCE_ID``
Invalid Resource Identifier
``NVME_SC_PMR_SAN_PROHIBITED``
Sanitize Prohibited While Persistent
Memory Region is Enabled
``NVME_SC_ANA_GROUP_ID_INVALID``
ANA Group Identifier Invalid: The specified
ANA Group Identifier (ANAGRPID) is not
supported in the submitted command.
``NVME_SC_ANA_ATTACH_FAILED``
ANA Attach Failed: The controller is not
attached to the namespace as a result
of an ANA condition.
``NVME_SC_INSUFFICIENT_CAP``
Insufficient Capacity: Requested operation
requires more free space than is currently
available.
``NVME_SC_NS_ATTACHMENT_LIMIT_EXCEEDED``
Namespace Attachment Limit Exceeded:
Attaching the ns to a controller causes
max number of ns attachments allowed
to be exceeded.
``NVME_SC_PROHIBIT_CMD_EXEC_NOT_SUPPORTED``
Prohibition of Command Execution
Not Supported
``NVME_SC_IOCS_NOT_SUPPORTED``
I/O Command Set Not Supported
``NVME_SC_IOCS_NOT_ENABLED``
I/O Command Set Not Enabled
``NVME_SC_IOCS_COMBINATION_REJECTED``
I/O Command Set Combination Rejected
``NVME_SC_INVALID_IOCS``
Invalid I/O Command Set
``NVME_SC_ID_UNAVAILABLE``
Identifier Unavailable
``NVME_SC_INVALID_DISCOVERY_INFO``
The discovery information provided in
one or more extended discovery
information entries is not applicable
for the type of entity selected in
the Entity Type (ETYPE) field of the
Discovery Information Management
command data portions header.
``NVME_SC_ZONING_DATA_STRUCT_LOCKED``
The requested Zoning data structure
is locked on the CDC.
``NVME_SC_ZONING_DATA_STRUCT_NOTFND``
The requested Zoning data structure
does not exist on the CDC.
``NVME_SC_INSUFFICIENT_DISC_RES``
The number of discover information
entries provided in the data portion
of the Discovery Information
Management command for a registration
task (i.e., TAS field cleared to 0h)
exceeds the available capacity for
new discovery information entries on
the CDC or DDC. This may be a
transient condition.
``NVME_SC_REQSTD_FUNCTION_DISABLED``
Fabric Zoning is not enabled on the
CDC
``NVME_SC_ZONEGRP_ORIGINATOR_INVLD``
The NQN contained in the ZoneGroup
Originator field does not match the
Host NQN used by the DDC to connect
to the CDC.
``NVME_SC_BAD_ATTRIBUTES``
Conflicting Dataset Management Attributes
``NVME_SC_INVALID_PI``
Invalid Protection Information
``NVME_SC_READ_ONLY``
Attempted Write to Read Only Range
``NVME_SC_CMD_SIZE_LIMIT_EXCEEDED``
Command Size Limit Exceeded
``NVME_SC_CONNECT_FORMAT``
Incompatible Format: The NVM subsystem
does not support the record format
specified by the host.
``NVME_SC_CONNECT_CTRL_BUSY``
Controller Busy: The controller is
already associated with a host.
``NVME_SC_CONNECT_INVALID_PARAM``
Connect Invalid Parameters: One or more
of the command parameters.
``NVME_SC_CONNECT_RESTART_DISC``
Connect Restart Discovery: The NVM
subsystem requested is not available.
``NVME_SC_CONNECT_INVALID_HOST``
Connect Invalid Host: The host is either
not allowed to establish an association
to any controller in the NVM subsystem or
the host is not allowed to establish an
association to the specified controller
``NVME_SC_DISCONNECT_INVALID_QTYPE``
Invalid Queue Type: The command was sent
on the wrong queue type.
``NVME_SC_DISCOVERY_RESTART``
Discover Restart: The snapshot of the
records is now invalid or out of date.
``NVME_SC_AUTH_REQUIRED``
Authentication Required: NVMe in-band
authentication is required and the queue
has not yet been authenticated.
``NVME_SC_ZNS_INVALID_OP_REQUEST``
Invalid Zone Operation Request:
The operation requested is invalid. This may be due to
various conditions, including: attempting to allocate a
ZRWA when a zone is not in the ZSE:Empty state; or
invalid Flush Explicit ZRWA Range Send Zone Action
operation.
``NVME_SC_ZNS_ZRWA_RESOURCES_UNAVAILABLE``
ZRWA Resources Unavailable:
No ZRWAs are available.
``NVME_SC_ZNS_BOUNDARY_ERROR``
Zone Boundary Error: The command specifies
logical blocks in more than one zone.
``NVME_SC_ZNS_FULL``
Zone Is Full: The accessed zone is in the
ZSF:Full state.
``NVME_SC_ZNS_READ_ONLY``
Zone Is Read Only: The accessed zone is
in the ZSRO:Read Only state.
``NVME_SC_ZNS_OFFLINE``
Zone Is Offline: The accessed zone is
in the ZSO:Offline state.
``NVME_SC_ZNS_INVALID_WRITE``
Zone Invalid Write: The write to a zone
was not at the write pointer.
``NVME_SC_ZNS_TOO_MANY_ACTIVE``
Too Many Active Zones: The controller
does not allow additional active zones.
``NVME_SC_ZNS_TOO_MANY_OPENS``
Too Many Open Zones: The controller does
not allow additional open zones.
``NVME_SC_ZNS_INVAL_TRANSITION``
Invalid Zone State Transition: The request
is not a valid zone state transition.
``NVME_SC_WRITE_FAULT``
Write Fault: The write data could not be
committed to the media.
``NVME_SC_READ_ERROR``
Unrecovered Read Error: The read data
could not be recovered from the media.
``NVME_SC_GUARD_CHECK``
End-to-end Guard Check Error: The command
was aborted due to an end-to-end guard
check failure.
``NVME_SC_APPTAG_CHECK``
End-to-end Application Tag Check Error:
The command was aborted due to an
end-to-end application tag check failure.
``NVME_SC_REFTAG_CHECK``
End-to-end Reference Tag Check Error: The
command was aborted due to an end-to-end
reference tag check failure.
``NVME_SC_COMPARE_FAILED``
Compare Failure: The command failed due
to a miscompare during a Compare command.
``NVME_SC_ACCESS_DENIED``
Access Denied: Access to the namespace
and/or LBA range is denied due to lack of
access rights.
``NVME_SC_UNWRITTEN_BLOCK``
Deallocated or Unwritten Logical Block:
The command failed due to an attempt to
read from or verify an LBA range
containing a deallocated or unwritten
logical block.
``NVME_SC_STORAGE_TAG_CHECK``
End-to-End Storage Tag Check Error: The
command was aborted due to an end-to-end
storage tag check failure.
``NVME_SC_ANA_INTERNAL_PATH_ERROR``
Internal Path Error: The command was not
completed as the result of a controller
internal error that is specific to the
controller processing the command.
``NVME_SC_ANA_PERSISTENT_LOSS``
Asymmetric Access Persistent Loss: The
requested function (e.g., command) is not
able to be performed as a result of the
relationship between the controller and
the namespace being in the ANA Persistent
Loss state.
``NVME_SC_ANA_INACCESSIBLE``
Asymmetric Access Inaccessible: The
requested function (e.g., command) is not
able to be performed as a result of the
relationship between the controller and
the namespace being in the ANA
Inaccessible state.
``NVME_SC_ANA_TRANSITION``
Asymmetric Access Transition: The
requested function (e.g., command) is not
able to be performed as a result of the
relationship between the controller and
the namespace transitioning between
Asymmetric Namespace Access states.
``NVME_SC_CTRL_PATH_ERROR``
Controller Pathing Error: A pathing error
was detected by the controller.
``NVME_SC_HOST_PATH_ERROR``
Host Pathing Error: A pathing error was
detected by the host.
``NVME_SC_CMD_ABORTED_BY_HOST``
Command Aborted By Host: The command was
aborted as a result of host action.
``NVME_SC_CRD``
Mask to get value of Command Retry Delay
index
``NVME_SC_MORE``
More bit. If set, more status information
for this command as part of the Error
Information log that may be retrieved with
the Get Log Page command.
``NVME_SC_DNR``
Do Not Retry bit. If set, if the same
command is re-submitted to any controller
in the NVM subsystem, then that
re-submitted command is expected to fail.
.. c:function:: __u16 nvme_status_code_type (__u16 status_field)
Returns the NVMe Status Code Type
**Parameters**
``__u16 status_field``
The NVMe Completion Queue Entry's Status Field
See :c:type:`enum nvme_status_field <nvme_status_field>`
**Return**
status code type
.. c:function:: __u16 nvme_status_code (__u16 status_field)
Returns the NVMe Status Code
**Parameters**
``__u16 status_field``
The NVMe Completion Queue Entry's Status Field
See :c:type:`enum nvme_status_field <nvme_status_field>`
**Return**
status code
.. c:enum:: nvme_status_type
type encoding for NVMe return values, when represented as an int.
**Constants**
``NVME_STATUS_TYPE_SHIFT``
shift value for status bits
``NVME_STATUS_TYPE_MASK``
mask value for status bits
``NVME_STATUS_TYPE_NVME``
NVMe command status value, typically from CDW3
``NVME_STATUS_TYPE_MI``
NVMe-MI header status
**Description**
The nvme_* api returns an int, with negative values indicating an internal
or syscall error, zero signifying success, positive values representing
the NVMe status.
That latter case (the NVMe status) may represent status values from
different parts of the transport/controller/etc, and are at most 16 bits of
data. So, we use the most-significant 3 bits of the signed int to indicate
which type of status this is.
.. c:function:: __u32 nvme_status_get_type (int status)
extract the type from a nvme_* return value
**Parameters**
``int status``
the (non-negative) return value from the NVMe API
**Return**
the type component of the status.
.. c:function:: __u32 nvme_status_get_value (int status)
extract the status value from a nvme_* return value
**Parameters**
``int status``
the (non-negative) return value from the NVMe API
**Return**
the value component of the status; the set of values will depend
on the status type.
.. c:function:: __u32 nvme_status_equals (int status, enum nvme_status_type type, unsigned int value)
helper to check a status against a type and value
**Parameters**
``int status``
the (non-negative) return value from the NVMe API
``enum nvme_status_type type``
the status type
``unsigned int value``
the status value
**Return**
true if **status** is of the specified type and value
.. c:enum:: nvme_admin_opcode
Known NVMe admin opcodes
**Constants**
``nvme_admin_delete_sq``
Delete I/O Submission Queue
``nvme_admin_create_sq``
Create I/O Submission Queue
``nvme_admin_get_log_page``
Get Log Page
``nvme_admin_delete_cq``
Delete I/O Completion Queue
``nvme_admin_create_cq``
Create I/O Completion Queue
``nvme_admin_identify``
Identify
``nvme_admin_abort_cmd``
Abort
``nvme_admin_set_features``
Set Features
``nvme_admin_get_features``
Get Features
``nvme_admin_async_event``
Asynchronous Event Request
``nvme_admin_ns_mgmt``
Namespace Management
``nvme_admin_fw_commit``
Firmware Commit
``nvme_admin_fw_activate``
Firmware Commit
``nvme_admin_fw_download``
Firmware Image Download
``nvme_admin_dev_self_test``
Device Self-test
``nvme_admin_ns_attach``
Namespace Attachment
``nvme_admin_keep_alive``
Keep Alive
``nvme_admin_directive_send``
Directive Send
``nvme_admin_directive_recv``
Directive Receive
``nvme_admin_virtual_mgmt``
Virtualization Management
``nvme_admin_nvme_mi_send``
NVMe-MI Send
``nvme_admin_nvme_mi_recv``
NVMe-MI Receive
``nvme_admin_capacity_mgmt``
Capacity Management
``nvme_admin_discovery_info_mgmt``
Discovery Information Management (DIM)
``nvme_admin_fabric_zoning_recv``
Fabric Zoning Receive
``nvme_admin_lockdown``
Lockdown
``nvme_admin_fabric_zoning_lookup``
Fabric Zoning Lookup
``nvme_admin_fabric_zoning_send``
Fabric Zoning Send
``nvme_admin_dbbuf``
Doorbell Buffer Config
``nvme_admin_fabrics``
Fabrics Commands
``nvme_admin_format_nvm``
Format NVM
``nvme_admin_security_send``
Security Send
``nvme_admin_security_recv``
Security Receive
``nvme_admin_sanitize_nvm``
Sanitize
``nvme_admin_get_lba_status``
Get LBA Status
.. c:enum:: nvme_identify_cns
Identify - CNS Values
**Constants**
``NVME_IDENTIFY_CNS_NS``
Identify Namespace data structure
``NVME_IDENTIFY_CNS_CTRL``
Identify Controller data structure
``NVME_IDENTIFY_CNS_NS_ACTIVE_LIST``
Active Namespace ID list
``NVME_IDENTIFY_CNS_NS_DESC_LIST``
Namespace Identification Descriptor list
``NVME_IDENTIFY_CNS_NVMSET_LIST``
NVM Set List
``NVME_IDENTIFY_CNS_CSI_NS``
I/O Command Set specific Identify
Namespace data structure
``NVME_IDENTIFY_CNS_CSI_CTRL``
I/O Command Set specific Identify
Controller data structure
``NVME_IDENTIFY_CNS_CSI_NS_ACTIVE_LIST``
Active Namespace ID list associated
with the specified I/O Command Set
``NVME_IDENTIFY_CNS_CSI_INDEPENDENT_ID_NS``
I/O Command Set Independent Identify
``NVME_IDENTIFY_CNS_NS_USER_DATA_FORMAT``
Namespace user data format
``NVME_IDENTIFY_CNS_CSI_NS_USER_DATA_FORMAT``
I/O Command Set specific user data
format
Namespace data structure
``NVME_IDENTIFY_CNS_ALLOCATED_NS_LIST``
Allocated Namespace ID list
``NVME_IDENTIFY_CNS_ALLOCATED_NS``
Identify Namespace data structure for
the specified allocated NSID
``NVME_IDENTIFY_CNS_NS_CTRL_LIST``
Controller List of controllers attached
to the specified NSID
``NVME_IDENTIFY_CNS_CTRL_LIST``
Controller List of controllers that exist
in the NVM subsystem
``NVME_IDENTIFY_CNS_PRIMARY_CTRL_CAP``
Primary Controller Capabilities data
structure for the specified primary controller
``NVME_IDENTIFY_CNS_SECONDARY_CTRL_LIST``
Secondary Controller list of controllers
associated with the primary controller
processing the command
``NVME_IDENTIFY_CNS_NS_GRANULARITY``
A Namespace Granularity List
``NVME_IDENTIFY_CNS_UUID_LIST``
A UUID List
``NVME_IDENTIFY_CNS_DOMAIN_LIST``
Domain List
``NVME_IDENTIFY_CNS_ENDURANCE_GROUP_ID``
Endurance Group List
``NVME_IDENTIFY_CNS_CSI_ALLOCATED_NS_LIST``
I/O Command Set specific Allocated Namespace
ID list
``NVME_IDENTIFY_CNS_CSI_ID_NS_DATA_STRUCTURE``
I/O Command Set specific ID Namespace
Data Structure for Allocated Namespace ID
``NVME_IDENTIFY_CNS_COMMAND_SET_STRUCTURE``
Base Specification 2.0a section 5.17.2.21
.. c:enum:: nvme_cmd_get_log_lid
Get Log Page -Log Page Identifiers
**Constants**
``NVME_LOG_LID_SUPPORTED_LOG_PAGES``
Supported Log Pages
``NVME_LOG_LID_ERROR``
Error Information
``NVME_LOG_LID_SMART``
SMART / Health Information
``NVME_LOG_LID_FW_SLOT``
Firmware Slot Information
``NVME_LOG_LID_CHANGED_NS``
Changed Namespace List
``NVME_LOG_LID_CMD_EFFECTS``
Commands Supported and Effects
``NVME_LOG_LID_DEVICE_SELF_TEST``
Device Self-test
``NVME_LOG_LID_TELEMETRY_HOST``
Telemetry Host-Initiated
``NVME_LOG_LID_TELEMETRY_CTRL``
Telemetry Controller-Initiated
``NVME_LOG_LID_ENDURANCE_GROUP``
Endurance Group Information
``NVME_LOG_LID_PREDICTABLE_LAT_NVMSET``
Predictable Latency Per NVM Set
``NVME_LOG_LID_PREDICTABLE_LAT_AGG``
Predictable Latency Event Aggregate
``NVME_LOG_LID_ANA``
Asymmetric Namespace Access
``NVME_LOG_LID_PERSISTENT_EVENT``
Persistent Event Log
``NVME_LOG_LID_LBA_STATUS``
LBA Status Information
``NVME_LOG_LID_ENDURANCE_GRP_EVT``
Endurance Group Event Aggregate
``NVME_LOG_LID_MEDIA_UNIT_STATUS``
Media Unit Status
``NVME_LOG_LID_SUPPORTED_CAP_CONFIG_LIST``
Supported Capacity Configuration Lis
``NVME_LOG_LID_FID_SUPPORTED_EFFECTS``
Feature Identifiers Supported and Effects
``NVME_LOG_LID_MI_CMD_SUPPORTED_EFFECTS``
NVMe-MI Commands Supported and Effects
``NVME_LOG_LID_BOOT_PARTITION``
Boot Partition
``NVME_LOG_LID_FDP_CONFIGS``
FDP Configurations
``NVME_LOG_LID_FDP_RUH_USAGE``
Reclaim Unit Handle Usage
``NVME_LOG_LID_FDP_STATS``
FDP Statistics
``NVME_LOG_LID_FDP_EVENTS``
FDP Events
``NVME_LOG_LID_DISCOVER``
Discovery
``NVME_LOG_LID_RESERVATION``
Reservation Notification
``NVME_LOG_LID_SANITIZE``
Sanitize Status
``NVME_LOG_LID_ZNS_CHANGED_ZONES``
Changed Zone List
.. c:enum:: nvme_features_id
Features - Feature Identifiers
**Constants**
``NVME_FEAT_FID_ARBITRATION``
Arbitration
``NVME_FEAT_FID_POWER_MGMT``
Power Management
``NVME_FEAT_FID_LBA_RANGE``
LBA Range Type
``NVME_FEAT_FID_TEMP_THRESH``
Temperature Threshold
``NVME_FEAT_FID_ERR_RECOVERY``
Error Recovery
``NVME_FEAT_FID_VOLATILE_WC``
Volatile Write Cache
``NVME_FEAT_FID_NUM_QUEUES``
Number of Queues
``NVME_FEAT_FID_IRQ_COALESCE``
Interrupt Coalescing
``NVME_FEAT_FID_IRQ_CONFIG``
Interrupt Vector Configuration
``NVME_FEAT_FID_WRITE_ATOMIC``
Write Atomicity Normal
``NVME_FEAT_FID_ASYNC_EVENT``
Asynchronous Event Configuration
``NVME_FEAT_FID_AUTO_PST``
Autonomous Power State Transition
``NVME_FEAT_FID_HOST_MEM_BUF``
Host Memory Buffer
``NVME_FEAT_FID_TIMESTAMP``
Timestamp
``NVME_FEAT_FID_KATO``
Keep Alive Timer
``NVME_FEAT_FID_HCTM``
Host Controlled Thermal Management
``NVME_FEAT_FID_NOPSC``
Non-Operational Power State Config
``NVME_FEAT_FID_RRL``
Read Recovery Level Config
``NVME_FEAT_FID_PLM_CONFIG``
Predictable Latency Mode Config
``NVME_FEAT_FID_PLM_WINDOW``
Predictable Latency Mode Window
``NVME_FEAT_FID_LBA_STS_INTERVAL``
LBA Status Information Report Interval
``NVME_FEAT_FID_HOST_BEHAVIOR``
Host Behavior Support
``NVME_FEAT_FID_SANITIZE``
Endurance Group Event Configuration
``NVME_FEAT_FID_ENDURANCE_EVT_CFG``
Endurance Group Event Configuration
``NVME_FEAT_FID_IOCS_PROFILE``
I/O Command Set Profile
``NVME_FEAT_FID_SPINUP_CONTROL``
Spinup Control
``NVME_FEAT_FID_FDP``
Flexible Data Placement
``NVME_FEAT_FID_FDP_EVENTS``
FDP Events
``NVME_FEAT_FID_ENH_CTRL_METADATA``
Enhanced Controller Metadata
``NVME_FEAT_FID_CTRL_METADATA``
Controller Metadata
``NVME_FEAT_FID_NS_METADATA``
Namespace Metadata
``NVME_FEAT_FID_SW_PROGRESS``
Software Progress Marker
``NVME_FEAT_FID_HOST_ID``
Host Identifier
``NVME_FEAT_FID_RESV_MASK``
Reservation Notification Mask
``NVME_FEAT_FID_RESV_PERSIST``
Reservation Persistence
``NVME_FEAT_FID_WRITE_PROTECT``
Namespace Write Protection Config
.. c:enum:: nvme_feat
Features Access Shifts/Masks values
**Constants**
``NVME_FEAT_ARBITRATION_BURST_SHIFT``
``NVME_FEAT_ARBITRATION_BURST_MASK``
``NVME_FEAT_ARBITRATION_LPW_SHIFT``
``NVME_FEAT_ARBITRATION_LPW_MASK``
``NVME_FEAT_ARBITRATION_MPW_SHIFT``
``NVME_FEAT_ARBITRATION_MPW_MASK``
``NVME_FEAT_ARBITRATION_HPW_SHIFT``
``NVME_FEAT_ARBITRATION_HPW_MASK``
``NVME_FEAT_PWRMGMT_PS_SHIFT``
``NVME_FEAT_PWRMGMT_PS_MASK``
``NVME_FEAT_PWRMGMT_WH_SHIFT``
``NVME_FEAT_PWRMGMT_WH_MASK``
``NVME_FEAT_LBAR_NR_SHIFT``
``NVME_FEAT_LBAR_NR_MASK``
``NVME_FEAT_TT_TMPTH_SHIFT``
``NVME_FEAT_TT_TMPTH_MASK``
``NVME_FEAT_TT_TMPSEL_SHIFT``
``NVME_FEAT_TT_TMPSEL_MASK``
``NVME_FEAT_TT_THSEL_SHIFT``
``NVME_FEAT_TT_THSEL_MASK``
``NVME_FEAT_ERROR_RECOVERY_TLER_SHIFT``
``NVME_FEAT_ERROR_RECOVERY_TLER_MASK``
``NVME_FEAT_ERROR_RECOVERY_DULBE_SHIFT``
``NVME_FEAT_ERROR_RECOVERY_DULBE_MASK``
``NVME_FEAT_VWC_WCE_SHIFT``
``NVME_FEAT_VWC_WCE_MASK``
``NVME_FEAT_NRQS_NSQR_SHIFT``
``NVME_FEAT_NRQS_NSQR_MASK``
``NVME_FEAT_NRQS_NCQR_SHIFT``
``NVME_FEAT_NRQS_NCQR_MASK``
``NVME_FEAT_IRQC_THR_SHIFT``
``NVME_FEAT_IRQC_THR_MASK``
``NVME_FEAT_IRQC_TIME_SHIFT``
``NVME_FEAT_IRQC_TIME_MASK``
``NVME_FEAT_ICFG_IV_SHIFT``
``NVME_FEAT_ICFG_IV_MASK``
``NVME_FEAT_ICFG_CD_SHIFT``
``NVME_FEAT_ICFG_CD_MASK``
``NVME_FEAT_WA_DN_SHIFT``
``NVME_FEAT_WA_DN_MASK``
``NVME_FEAT_AE_SMART_SHIFT``
``NVME_FEAT_AE_SMART_MASK``
``NVME_FEAT_AE_NAN_SHIFT``
``NVME_FEAT_AE_NAN_MASK``
``NVME_FEAT_AE_FW_SHIFT``
``NVME_FEAT_AE_FW_MASK``
``NVME_FEAT_AE_TELEM_SHIFT``
``NVME_FEAT_AE_TELEM_MASK``
``NVME_FEAT_AE_ANA_SHIFT``
``NVME_FEAT_AE_ANA_MASK``
``NVME_FEAT_AE_PLA_SHIFT``
``NVME_FEAT_AE_PLA_MASK``
``NVME_FEAT_AE_LBAS_SHIFT``
``NVME_FEAT_AE_LBAS_MASK``
``NVME_FEAT_AE_EGA_SHIFT``
``NVME_FEAT_AE_EGA_MASK``
``NVME_FEAT_APST_APSTE_SHIFT``
``NVME_FEAT_APST_APSTE_MASK``
``NVME_FEAT_HMEM_EHM_SHIFT``
``NVME_FEAT_HMEM_EHM_MASK``
``NVME_FEAT_HCTM_TMT2_SHIFT``
``NVME_FEAT_HCTM_TMT2_MASK``
``NVME_FEAT_HCTM_TMT1_SHIFT``
``NVME_FEAT_HCTM_TMT1_MASK``
``NVME_FEAT_NOPS_NOPPME_SHIFT``
``NVME_FEAT_NOPS_NOPPME_MASK``
``NVME_FEAT_RRL_RRL_SHIFT``
``NVME_FEAT_RRL_RRL_MASK``
``NVME_FEAT_PLM_PLME_SHIFT``
``NVME_FEAT_PLM_PLME_MASK``
``NVME_FEAT_PLMW_WS_SHIFT``
``NVME_FEAT_PLMW_WS_MASK``
``NVME_FEAT_LBAS_LSIRI_SHIFT``
``NVME_FEAT_LBAS_LSIRI_MASK``
``NVME_FEAT_LBAS_LSIPI_SHIFT``
``NVME_FEAT_LBAS_LSIPI_MASK``
``NVME_FEAT_SC_NODRM_SHIFT``
``NVME_FEAT_SC_NODRM_MASK``
``NVME_FEAT_EG_ENDGID_SHIFT``
``NVME_FEAT_EG_ENDGID_MASK``
``NVME_FEAT_EG_EGCW_SHIFT``
``NVME_FEAT_EG_EGCW_MASK``
``NVME_FEAT_SPM_PBSLC_SHIFT``
``NVME_FEAT_SPM_PBSLC_MASK``
``NVME_FEAT_HOSTID_EXHID_SHIFT``
``NVME_FEAT_HOSTID_EXHID_MASK``
``NVME_FEAT_RM_REGPRE_SHIFT``
``NVME_FEAT_RM_REGPRE_MASK``
``NVME_FEAT_RM_RESREL_SHIFT``
``NVME_FEAT_RM_RESREL_MASK``
``NVME_FEAT_RM_RESPRE_SHIFT``
``NVME_FEAT_RM_RESPRE_MASK``
``NVME_FEAT_RP_PTPL_SHIFT``
``NVME_FEAT_RP_PTPL_MASK``
``NVME_FEAT_WP_WPS_SHIFT``
``NVME_FEAT_WP_WPS_MASK``
``NVME_FEAT_IOCSP_IOCSCI_SHIFT``
``NVME_FEAT_IOCSP_IOCSCI_MASK``
``NVME_FEAT_FDP_ENABLED_SHIFT``
``NVME_FEAT_FDP_ENABLED_MASK``
``NVME_FEAT_FDP_INDEX_SHIFT``
``NVME_FEAT_FDP_INDEX_MASK``
``NVME_FEAT_FDP_EVENTS_ENABLE_SHIFT``
``NVME_FEAT_FDP_EVENTS_ENABLE_MASK``
.. c:enum:: nvme_get_features_sel
Get Features - Select
**Constants**
``NVME_GET_FEATURES_SEL_CURRENT``
Current value
``NVME_GET_FEATURES_SEL_DEFAULT``
Default value
``NVME_GET_FEATURES_SEL_SAVED``
Saved value
``NVME_GET_FEATURES_SEL_SUPPORTED``
Supported capabilities
.. c:enum:: nvme_cmd_format_mset
Format NVM - Metadata Settings
**Constants**
``NVME_FORMAT_MSET_SEPARATE``
indicates that the metadata is transferred
as part of a separate buffer.
``NVME_FORMAT_MSET_EXTENDED``
indicates that the metadata is transferred
as part of an extended data LBA.
.. c:enum:: nvme_cmd_format_pi
Format NVM - Protection Information
**Constants**
``NVME_FORMAT_PI_DISABLE``
Protection information is not enabled.
``NVME_FORMAT_PI_TYPE1``
Protection information is enabled, Type 1.
``NVME_FORMAT_PI_TYPE2``
Protection information is enabled, Type 2.
``NVME_FORMAT_PI_TYPE3``
Protection information is enabled, Type 3.
.. c:enum:: nvme_cmd_format_pil
Format NVM - Protection Information Location
**Constants**
``NVME_FORMAT_PIL_LAST``
Protection information is transferred as the last
bytes of metadata.
``NVME_FORMAT_PIL_FIRST``
Protection information is transferred as the first
bytes of metadata.
.. c:enum:: nvme_cmd_format_ses
Format NVM - Secure Erase Settings
**Constants**
``NVME_FORMAT_SES_NONE``
No secure erase operation requested.
``NVME_FORMAT_SES_USER_DATA_ERASE``
User Data Erase: All user data shall be erased,
contents of the user data after the erase is
indeterminate (e.g. the user data may be zero
filled, one filled, etc.). If a User Data Erase
is requested and all affected user data is
encrypted, then the controller is allowed
to use a cryptographic erase to perform
the requested User Data Erase.
``NVME_FORMAT_SES_CRYPTO_ERASE``
Cryptographic Erase: All user data shall
be erased cryptographically. This is
accomplished by deleting the encryption key.
.. c:enum:: nvme_ns_mgmt_sel
Namespace Management - Select
**Constants**
``NVME_NS_MGMT_SEL_CREATE``
Namespace Create selection
``NVME_NS_MGMT_SEL_DELETE``
Namespace Delete selection
.. c:enum:: nvme_ns_attach_sel
Namespace Attachment - Select
**Constants**
``NVME_NS_ATTACH_SEL_CTRL_ATTACH``
Namespace attach selection
``NVME_NS_ATTACH_SEL_CTRL_DEATTACH``
Namespace detach selection
.. c:enum:: nvme_fw_commit_ca
Firmware Commit - Commit Action
**Constants**
``NVME_FW_COMMIT_CA_REPLACE``
Downloaded image replaces the existing
image, if any, in the specified Firmware
Slot. The newly placed image is not
activated.
``NVME_FW_COMMIT_CA_REPLACE_AND_ACTIVATE``
Downloaded image replaces the existing
image, if any, in the specified Firmware
Slot. The newly placed image is activated
at the next Controller Level Reset.
``NVME_FW_COMMIT_CA_SET_ACTIVE``
The existing image in the specified
Firmware Slot is activated at the
next Controller Level Reset.
``NVME_FW_COMMIT_CA_REPLACE_AND_ACTIVATE_IMMEDIATE``
Downloaded image replaces the existing
image, if any, in the specified Firmware
Slot and is then activated immediately.
If there is not a newly downloaded image,
then the existing image in the specified
firmware slot is activated immediately.
``NVME_FW_COMMIT_CA_REPLACE_BOOT_PARTITION``
Downloaded image replaces the Boot
Partition specified by the Boot
Partition ID field.
``NVME_FW_COMMIT_CA_ACTIVATE_BOOT_PARTITION``
Mark the Boot Partition specified in
the BPID field as active and update
BPINFO.ABPID.
.. c:enum:: nvme_directive_dtype
Directive Types
**Constants**
``NVME_DIRECTIVE_DTYPE_IDENTIFY``
Identify directive type
``NVME_DIRECTIVE_DTYPE_STREAMS``
Streams directive type
.. c:enum:: nvme_directive_receive_doper
Directive Receive Directive Operation
**Constants**
``NVME_DIRECTIVE_RECEIVE_IDENTIFY_DOPER_PARAM``
``NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_PARAM``
``NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_STATUS``
``NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_RESOURCE``
.. c:enum:: nvme_directive_send_doper
Directive Send Directive Operation
**Constants**
``NVME_DIRECTIVE_SEND_IDENTIFY_DOPER_ENDIR``
``NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_IDENTIFIER``
``NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_RESOURCE``
.. c:enum:: nvme_directive_send_identify_endir
Enable Directive
**Constants**
``NVME_DIRECTIVE_SEND_IDENTIFY_ENDIR_DISABLE``
``NVME_DIRECTIVE_SEND_IDENTIFY_ENDIR_ENABLE``
.. c:enum:: nvme_sanitize_sanact
Sanitize Action
**Constants**
``NVME_SANITIZE_SANACT_EXIT_FAILURE``
Exit Failure Mode.
``NVME_SANITIZE_SANACT_START_BLOCK_ERASE``
Start a Block Erase sanitize operation.
``NVME_SANITIZE_SANACT_START_OVERWRITE``
Start an Overwrite sanitize operation.
``NVME_SANITIZE_SANACT_START_CRYPTO_ERASE``
Start a Crypto Erase sanitize operation.
.. c:enum:: nvme_dst_stc
Action taken by the Device Self-test command
**Constants**
``NVME_DST_STC_SHORT``
Start a short device self-test operation
``NVME_DST_STC_LONG``
Start an extended device self-test operation
``NVME_DST_STC_VS``
Start a vendor specific device self-test operation
``NVME_DST_STC_ABORT``
Abort device self-test operation
.. c:enum:: nvme_virt_mgmt_act
Virtualization Management - Action
**Constants**
``NVME_VIRT_MGMT_ACT_PRIM_CTRL_FLEX_ALLOC``
Primary Controller Flexible
Allocation
``NVME_VIRT_MGMT_ACT_OFFLINE_SEC_CTRL``
Secondary Controller Offline
``NVME_VIRT_MGMT_ACT_ASSIGN_SEC_CTRL``
Secondary Controller Assign
``NVME_VIRT_MGMT_ACT_ONLINE_SEC_CTRL``
Secondary Controller Online
.. c:enum:: nvme_virt_mgmt_rt
Virtualization Management - Resource Type
**Constants**
``NVME_VIRT_MGMT_RT_VQ_RESOURCE``
VQ Resources
``NVME_VIRT_MGMT_RT_VI_RESOURCE``
VI Resources
.. c:enum:: nvme_ns_write_protect_cfg
Write Protection - Write Protection State
**Constants**
``NVME_NS_WP_CFG_NONE``
No Write Protect
``NVME_NS_WP_CFG_PROTECT``
Write Protect
``NVME_NS_WP_CFG_PROTECT_POWER_CYCLE``
Write Protect Until Power Cycle
``NVME_NS_WP_CFG_PROTECT_PERMANENT``
Permanent Write Protect
.. c:enum:: nvme_log_ana_lsp
Asymmetric Namespace Access - Return Groups Only
**Constants**
``NVME_LOG_ANA_LSP_RGO_NAMESPACES``
``NVME_LOG_ANA_LSP_RGO_GROUPS_ONLY``
.. c:enum:: nvme_pevent_log_action
Persistent Event Log - Action
**Constants**
``NVME_PEVENT_LOG_READ``
Read Log Data
``NVME_PEVENT_LOG_EST_CTX_AND_READ``
Establish Context and Read Log Data
``NVME_PEVENT_LOG_RELEASE_CTX``
Release Context
.. c:enum:: nvme_feat_tmpthresh_thsel
Temperature Threshold - Threshold Type Select
**Constants**
``NVME_FEATURE_TEMPTHRESH_THSEL_OVER``
Over temperature threshold select
``NVME_FEATURE_TEMPTHRESH_THSEL_UNDER``
Under temperature threshold select
.. c:enum:: nvme_features_async_event_config_flags
Asynchronous Event Configuration configuration flags
**Constants**
``NVME_FEATURE_AENCFG_SMART_CRIT_SPARE``
``NVME_FEATURE_AENCFG_SMART_CRIT_TEMPERATURE``
``NVME_FEATURE_AENCFG_SMART_CRIT_DEGRADED``
``NVME_FEATURE_AENCFG_SMART_CRIT_READ_ONLY``
``NVME_FEATURE_AENCFG_SMART_CRIT_VOLATILE_BACKUP``
``NVME_FEATURE_AENCFG_SMART_CRIT_READ_ONLY_PMR``
``NVME_FEATURE_AENCFG_NOTICE_NAMESPACE_ATTRIBUTES``
``NVME_FEATURE_AENCFG_NOTICE_FIRMWARE_ACTIVATION``
``NVME_FEATURE_AENCFG_NOTICE_TELEMETRY_LOG``
``NVME_FEATURE_AENCFG_NOTICE_ANA_CHANGE``
``NVME_FEATURE_AENCFG_NOTICE_PL_EVENT``
``NVME_FEATURE_AENCFG_NOTICE_LBA_STATUS``
``NVME_FEATURE_AENCFG_NOTICE_EG_EVENT``
``NVME_FEATURE_AENCFG_NOTICE_DISCOVERY_CHANGE``
.. c:enum:: nvme_feat_plm_window_select
Predictable Latency Per NVM Set Log
**Constants**
``NVME_FEATURE_PLM_DTWIN``
Deterministic Window select
``NVME_FEATURE_PLM_NDWIN``
Non-Deterministic Window select
.. c:enum:: nvme_feat_resv_notify_flags
Reservation Notification Configuration
**Constants**
``NVME_FEAT_RESV_NOTIFY_REGPRE``
Mask Registration Preempted Notification
``NVME_FEAT_RESV_NOTIFY_RESREL``
Mask Reservation Released Notification
``NVME_FEAT_RESV_NOTIFY_RESPRE``
Mask Reservation Preempted Notification
.. c:enum:: nvme_feat_nswpcfg_state
Write Protection - Write Protection State
**Constants**
``NVME_FEAT_NS_NO_WRITE_PROTECT``
No Write Protect
``NVME_FEAT_NS_WRITE_PROTECT``
Write Protect
``NVME_FEAT_NS_WRITE_PROTECT_PWR_CYCLE``
Write Protect Until Power Cycle
``NVME_FEAT_NS_WRITE_PROTECT_PERMANENT``
Permanent Write Protect
.. c:enum:: nvme_fctype
Fabrics Command Types
**Constants**
``nvme_fabrics_type_property_set``
Property set
``nvme_fabrics_type_connect``
Connect
``nvme_fabrics_type_property_get``
Property Get
``nvme_fabrics_type_auth_send``
Authentication Send
``nvme_fabrics_type_auth_receive``
Authentication Receive
``nvme_fabrics_type_disconnect``
Disconnect
.. c:enum:: nvme_data_tfr
Data transfer direction of the command
**Constants**
``NVME_DATA_TFR_NO_DATA_TFR``
No data transfer
``NVME_DATA_TFR_HOST_TO_CTRL``
Host to controller
``NVME_DATA_TFR_CTRL_TO_HOST``
Controller to host
``NVME_DATA_TFR_BIDIRECTIONAL``
Bidirectional
.. c:enum:: nvme_io_opcode
Opcodes for I/O Commands
**Constants**
``nvme_cmd_flush``
Flush
``nvme_cmd_write``
Write
``nvme_cmd_read``
Read
``nvme_cmd_write_uncor``
Write Uncorrectable
``nvme_cmd_compare``
Compare
``nvme_cmd_write_zeroes``
write Zeros
``nvme_cmd_dsm``
Dataset Management
``nvme_cmd_verify``
Verify
``nvme_cmd_resv_register``
Reservation Register
``nvme_cmd_resv_report``
Reservation Report
``nvme_cmd_resv_acquire``
Reservation Acquire
``nvme_cmd_io_mgmt_recv``
I/O Management Receive
``nvme_cmd_resv_release``
Reservation Release
``nvme_cmd_copy``
Copy
``nvme_cmd_io_mgmt_send``
I/O Management Send
``nvme_zns_cmd_mgmt_send``
Zone Management Send
``nvme_zns_cmd_mgmt_recv``
Zone Management Receive
``nvme_zns_cmd_append``
Zone Append
.. c:enum:: nvme_io_control_flags
I/O control flags
**Constants**
``NVME_IO_DTYPE_STREAMS``
Directive Type Streams
``NVME_IO_STC``
Storage Tag Check
``NVME_IO_DEAC``
Deallocate
``NVME_IO_ZNS_APPEND_PIREMAP``
Protection Information Remap
``NVME_IO_PRINFO_PRCHK_REF``
Protection Information Check Reference Tag
``NVME_IO_PRINFO_PRCHK_APP``
Protection Information Check Application Tag
``NVME_IO_PRINFO_PRCHK_GUARD``
Protection Information Check Guard field
``NVME_IO_PRINFO_PRACT``
Protection Information Action
``NVME_IO_FUA``
Force Unit Access
``NVME_IO_LR``
Limited Retry
.. c:enum:: nvme_io_dsm_flags
Dataset Management flags
**Constants**
``NVME_IO_DSM_FREQ_UNSPEC``
No frequency information provided
``NVME_IO_DSM_FREQ_TYPICAL``
Typical number of reads and writes
expected for this LBA range
``NVME_IO_DSM_FREQ_RARE``
Infrequent writes and infrequent
reads to the LBA range indicated
``NVME_IO_DSM_FREQ_READS``
Infrequent writes and frequent
reads to the LBA range indicated
``NVME_IO_DSM_FREQ_WRITES``
Frequent writes and infrequent
reads to the LBA range indicated
``NVME_IO_DSM_FREQ_RW``
Frequent writes and frequent reads
to the LBA range indicated
``NVME_IO_DSM_FREQ_ONCE``
``NVME_IO_DSM_FREQ_PREFETCH``
``NVME_IO_DSM_FREQ_TEMP``
``NVME_IO_DSM_LATENCY_NONE``
No latency information provided
``NVME_IO_DSM_LATENCY_IDLE``
Longer latency acceptable
``NVME_IO_DSM_LATENCY_NORM``
Typical latency
``NVME_IO_DSM_LATENCY_LOW``
Smallest possible latency
``NVME_IO_DSM_SEQ_REQ``
``NVME_IO_DSM_COMPRESSED``
.. c:enum:: nvme_dsm_attributes
Dataset Management attributes
**Constants**
``NVME_DSMGMT_IDR``
Attribute -Integral Dataset for Read
``NVME_DSMGMT_IDW``
Attribute - Integral Dataset for Write
``NVME_DSMGMT_AD``
Attribute - Deallocate
.. c:enum:: nvme_resv_rtype
Reservation Type Encoding
**Constants**
``NVME_RESERVATION_RTYPE_WE``
Write Exclusive Reservation
``NVME_RESERVATION_RTYPE_EA``
Exclusive Access Reservation
``NVME_RESERVATION_RTYPE_WERO``
Write Exclusive - Registrants Only Reservation
``NVME_RESERVATION_RTYPE_EARO``
Exclusive Access - Registrants Only Reservation
``NVME_RESERVATION_RTYPE_WEAR``
Write Exclusive - All Registrants Reservation
``NVME_RESERVATION_RTYPE_EAAR``
Exclusive Access - All Registrants Reservation
.. c:enum:: nvme_resv_racqa
Reservation Acquire - Reservation Acquire Action
**Constants**
``NVME_RESERVATION_RACQA_ACQUIRE``
Acquire
``NVME_RESERVATION_RACQA_PREEMPT``
Preempt
``NVME_RESERVATION_RACQA_PREEMPT_AND_ABORT``
Preempt and Abort
.. c:enum:: nvme_resv_rrega
Reservation Register - Reservation Register Action
**Constants**
``NVME_RESERVATION_RREGA_REGISTER_KEY``
Register Reservation Key
``NVME_RESERVATION_RREGA_UNREGISTER_KEY``
Unregister Reservation Key
``NVME_RESERVATION_RREGA_REPLACE_KEY``
Replace Reservation Key
.. c:enum:: nvme_resv_cptpl
Reservation Register - Change Persist Through Power Loss State
**Constants**
``NVME_RESERVATION_CPTPL_NO_CHANGE``
No change to PTPL state
``NVME_RESERVATION_CPTPL_CLEAR``
Reservations are released and
registrants are cleared on a power on
``NVME_RESERVATION_CPTPL_PERSIST``
Reservations and registrants persist
across a power loss
.. c:enum:: nvme_resv_rrela
Reservation Release - Reservation Release Action
**Constants**
``NVME_RESERVATION_RRELA_RELEASE``
Release
``NVME_RESERVATION_RRELA_CLEAR``
Clear
.. c:enum:: nvme_zns_send_action
Zone Management Send - Zone Send Action
**Constants**
``NVME_ZNS_ZSA_CLOSE``
Close Zone
``NVME_ZNS_ZSA_FINISH``
Finish Zone
``NVME_ZNS_ZSA_OPEN``
Open Zone
``NVME_ZNS_ZSA_RESET``
Reset Zone
``NVME_ZNS_ZSA_OFFLINE``
Offline Zone
``NVME_ZNS_ZSA_SET_DESC_EXT``
Set Zone Descriptor Extension
``NVME_ZNS_ZSA_ZRWA_FLUSH``
Flush
.. c:enum:: nvme_zns_recv_action
Zone Management Receive - Zone Receive Action Specific Features
**Constants**
``NVME_ZNS_ZRA_REPORT_ZONES``
Report Zones
``NVME_ZNS_ZRA_EXTENDED_REPORT_ZONES``
Extended Report Zones
.. c:enum:: nvme_zns_report_options
Zone Management Receive - Zone Receive Action Specific Field
**Constants**
``NVME_ZNS_ZRAS_REPORT_ALL``
List all zones
``NVME_ZNS_ZRAS_REPORT_EMPTY``
List the zones in the ZSE:Empty state
``NVME_ZNS_ZRAS_REPORT_IMPL_OPENED``
List the zones in the ZSIO:Implicitly Opened state
``NVME_ZNS_ZRAS_REPORT_EXPL_OPENED``
List the zones in the ZSEO:Explicitly Opened state
``NVME_ZNS_ZRAS_REPORT_CLOSED``
List the zones in the ZSC:Closed state
``NVME_ZNS_ZRAS_REPORT_FULL``
List the zones in the ZSF:Full state
``NVME_ZNS_ZRAS_REPORT_READ_ONLY``
List the zones in the ZSRO:Read Only state
``NVME_ZNS_ZRAS_REPORT_OFFLINE``
List the zones in the ZSO:Offline state
.. c:enum:: nvme_io_mgmt_recv_mo
I/O Management Receive - Management Operation
**Constants**
``NVME_IO_MGMT_RECV_RUH_STATUS``
Reclaim Unit Handle Status
.. c:enum:: nvme_io_mgmt_send_mo
I/O Management Send - Management Operation
**Constants**
``NVME_IO_MGMT_SEND_RUH_UPDATE``
Reclaim Unit Handle Update