12155 lines
225 KiB
ReStructuredText
12155 lines
225 KiB
ReStructuredText
.. _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;
|
||
__le32 oaqd;
|
||
__u8 rsvd568[200];
|
||
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 0’s 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 0’s 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.
|
||
|
||
``oaqd``
|
||
Optimal Aggregated Queue Depth indicates the recommended maximum
|
||
total number of outstanding I/O commands across all I/O queues
|
||
on the controller for optimal operation.
|
||
|
||
``rsvd568``
|
||
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 0’s 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;
|
||
__le32 dmrsl;
|
||
__le64 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 {
|
||
__le64 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 csi;
|
||
__u8 opcode;
|
||
__le64 cs;
|
||
__le16 trtype_spec_info;
|
||
__u8 rsvd[21];
|
||
__u8 log_page_version;
|
||
};
|
||
|
||
**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>`.
|
||
|
||
``csi``
|
||
Command Set Indicator: This field contains command set
|
||
indicator for the command that the error is associated
|
||
with.
|
||
|
||
``opcode``
|
||
Opcode: This field contains opcode for the command that
|
||
the error is associated with.
|
||
|
||
``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
|
||
|
||
``rsvd``
|
||
Reserved: [62:42]
|
||
|
||
``log_page_version``
|
||
This field shall be set to 1h. If set, **csi** and **opcode**
|
||
will have valid values.
|
||
|
||
|
||
|
||
|
||
|
||
.. 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 controller’s internal state.
|
||
|
||
|
||
|
||
|
||
.. c:struct:: nvme_endurance_group_log
|
||
|
||
Endurance Group Information Log
|
||
|
||
**Definition**
|
||
|
||
::
|
||
|
||
struct nvme_endurance_group_log {
|
||
__u8 critical_warning;
|
||
__u8 endurance_group_features;
|
||
__u8 rsvd2;
|
||
__u8 avl_spare;
|
||
__u8 avl_spare_threshold;
|
||
__u8 percent_used;
|
||
__le16 domain_identifier;
|
||
__u8 rsvd8[24];
|
||
__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 total_end_grp_cap[16];
|
||
__u8 unalloc_end_grp_cap[16];
|
||
__u8 rsvd192[320];
|
||
};
|
||
|
||
**Members**
|
||
|
||
``critical_warning``
|
||
Critical Warning
|
||
|
||
``endurance_group_features``
|
||
Endurance Group Features
|
||
|
||
``rsvd2``
|
||
Reserved
|
||
|
||
``avl_spare``
|
||
Available Spare
|
||
|
||
``avl_spare_threshold``
|
||
Available Spare Threshold
|
||
|
||
``percent_used``
|
||
Percentage Used
|
||
|
||
``domain_identifier``
|
||
Domain Identifier
|
||
|
||
``rsvd8``
|
||
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
|
||
|
||
``total_end_grp_cap``
|
||
Total Endurance Group Capacity
|
||
|
||
``unalloc_end_grp_cap``
|
||
Unallocated Endurance Group Capacity
|
||
|
||
``rsvd192``
|
||
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_eom_lane_desc
|
||
|
||
EOM Lane Descriptor
|
||
|
||
**Definition**
|
||
|
||
::
|
||
|
||
struct nvme_eom_lane_desc {
|
||
__u8 rsvd0;
|
||
__u8 mstatus;
|
||
__u8 lane;
|
||
__u8 eye;
|
||
__le16 top;
|
||
__le16 bottom;
|
||
__le16 left;
|
||
__le16 right;
|
||
__le16 nrows;
|
||
__le16 ncols;
|
||
__le16 edlen;
|
||
__u8 rsvd18[14];
|
||
__u8 eye_desc[];
|
||
};
|
||
|
||
**Members**
|
||
|
||
``rsvd0``
|
||
Reserved
|
||
|
||
``mstatus``
|
||
Measurement Status
|
||
|
||
``lane``
|
||
Lane number
|
||
|
||
``eye``
|
||
Eye number
|
||
|
||
``top``
|
||
Absolute number of rows from center to top edge of eye
|
||
|
||
``bottom``
|
||
Absolute number of rows from center to bottom edge of eye
|
||
|
||
``left``
|
||
Absolute number of rows from center to left edge of eye
|
||
|
||
``right``
|
||
Absolute number of rows from center to right edge of eye
|
||
|
||
``nrows``
|
||
Number of Rows
|
||
|
||
``ncols``
|
||
Number of Columns
|
||
|
||
``edlen``
|
||
Eye Data Length
|
||
|
||
``rsvd18``
|
||
Reserved
|
||
|
||
``eye_desc``
|
||
Printable Eye, Eye Data, and any Padding
|
||
|
||
|
||
|
||
|
||
|
||
.. c:struct:: nvme_phy_rx_eom_log
|
||
|
||
Physical Interface Receiver Eye Opening Measurement Log
|
||
|
||
**Definition**
|
||
|
||
::
|
||
|
||
struct nvme_phy_rx_eom_log {
|
||
__u8 lid;
|
||
__u8 eomip;
|
||
__le16 hsize;
|
||
__le32 rsize;
|
||
__u8 eomdgn;
|
||
__u8 lr;
|
||
__u8 odp;
|
||
__u8 lanes;
|
||
__u8 epl;
|
||
__u8 lspfc;
|
||
__u8 li;
|
||
__u8 rsvd15[3];
|
||
__le16 lsic;
|
||
__le32 dsize;
|
||
__le16 nd;
|
||
__le16 maxtb;
|
||
__le16 maxlr;
|
||
__le16 etgood;
|
||
__le16 etbetter;
|
||
__le16 etbest;
|
||
__u8 rsvd36[28];
|
||
struct nvme_eom_lane_desc descs[];
|
||
};
|
||
|
||
**Members**
|
||
|
||
``lid``
|
||
Log Identifier
|
||
|
||
``eomip``
|
||
EOM In Progress
|
||
|
||
``hsize``
|
||
Header Size
|
||
|
||
``rsize``
|
||
Result Size
|
||
|
||
``eomdgn``
|
||
EOM Data Generation Number
|
||
|
||
``lr``
|
||
Log Revision
|
||
|
||
``odp``
|
||
Optional Data Present
|
||
|
||
``lanes``
|
||
Number of lanes configured for this port
|
||
|
||
``epl``
|
||
Eyes Per Lane
|
||
|
||
``lspfc``
|
||
Log Specific Parameter Field Copy
|
||
|
||
``li``
|
||
Link Information
|
||
|
||
``rsvd15``
|
||
Reserved
|
||
|
||
``lsic``
|
||
Log Specific Identifier Copy
|
||
|
||
``dsize``
|
||
Descriptor Size
|
||
|
||
``nd``
|
||
Number of Descriptors
|
||
|
||
``maxtb``
|
||
Maximum Top Bottom
|
||
|
||
``maxlr``
|
||
Maximum Left Right
|
||
|
||
``etgood``
|
||
Estimated Time for Good Quality
|
||
|
||
``etbetter``
|
||
Estimated Time for Better Quality
|
||
|
||
``etbest``
|
||
Estimated Time for Best Quality
|
||
|
||
``rsvd36``
|
||
Reserved
|
||
|
||
``descs``
|
||
EOM Lane Descriptors
|
||
|
||
|
||
|
||
|
||
|
||
.. c:enum:: nvme_eom_optional_data
|
||
|
||
EOM Optional Data Present Fields
|
||
|
||
**Constants**
|
||
|
||
``NVME_EOM_EYE_DATA_PRESENT``
|
||
Eye Data Present
|
||
|
||
``NVME_EOM_PRINTABLE_EYE_PRESENT``
|
||
Printable Eye Present
|
||
|
||
|
||
|
||
|
||
.. c:enum:: nvme_phy_rx_eom_progress
|
||
|
||
EOM In Progress Values
|
||
|
||
**Constants**
|
||
|
||
``NVME_PHY_RX_EOM_NOT_STARTED``
|
||
EOM Not Started
|
||
|
||
``NVME_PHY_RX_EOM_IN_PROGRESS``
|
||
EOM In Progress
|
||
|
||
``NVME_PHY_RX_EOM_COMPLETED``
|
||
EOM Completed
|
||
|
||
|
||
|
||
|
||
.. 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 {
|
||
__le16 size;
|
||
__u8 fdpa;
|
||
__u8 vss;
|
||
__le32 nrg;
|
||
__le16 nruh;
|
||
__le16 maxpids;
|
||
__le32 nnss;
|
||
__le64 runs;
|
||
__le32 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 {
|
||
__le16 n;
|
||
__u8 version;
|
||
__u8 rsvd3;
|
||
__le32 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 {
|
||
__le16 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;
|
||
__le16 nlbam;
|
||
__le64 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;
|
||
__le16 pid;
|
||
struct nvme_timestamp ts;
|
||
__le32 nsid;
|
||
__u8 type_specific[16];
|
||
__le16 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 {
|
||
__le32 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 {
|
||
__le16 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 {
|
||
__le16 pid;
|
||
__le16 ruhid;
|
||
__le32 earutr;
|
||
__le64 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];
|
||
__le16 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;
|
||
__le16 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];
|
||
__le64 slba;
|
||
__le64 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 elbat;
|
||
__le16 elbatm;
|
||
};
|
||
|
||
**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
|
||
|
||
``elbat``
|
||
Expected Logical Block Application Tag
|
||
|
||
``elbatm``
|
||
Expected Logical Block Application Tag Mask
|
||
|
||
|
||
|
||
|
||
|
||
.. 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 elbat;
|
||
__le16 elbatm;
|
||
};
|
||
|
||
**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
|
||
|
||
``elbat``
|
||
Expected Logical Block Application Tag
|
||
|
||
``elbatm``
|
||
Expected Logical Block Application Tag Mask
|
||
|
||
|
||
|
||
|
||
|
||
.. 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
|
||
|
||
``NVME_ID_DIR_DP_BIT``
|
||
Direct Placement 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];
|
||
__le16 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_FDP_DISABLED``
|
||
Command is not allowed when
|
||
Flexible Data Placement is disabled.
|
||
|
||
``NVME_SC_INVALID_PLACEMENT_HANDLE_LIST``
|
||
The Placement Handle List is invalid
|
||
due to invalid Reclaim Unit Handle Identifier or
|
||
valid Reclaim Unit Handle Identifier but restricted or
|
||
the Placement Handle List number of entries exceeded the
|
||
maximum number allowed.
|
||
|
||
``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 portion’s 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_PHY_RX_EOM``
|
||
Physical Interface Receiver Eye Opening Measurement
|
||
|
||
``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_log_phy_rx_eom_action
|
||
|
||
Physical Interface Receiver Eye Opening Measurement Action
|
||
|
||
**Constants**
|
||
|
||
``NVME_LOG_PHY_RX_EOM_READ``
|
||
Read Log Data
|
||
|
||
``NVME_LOG_PHY_RX_EOM_START_READ``
|
||
Start Measurement and Read Log Data
|
||
|
||
``NVME_LOG_PHY_RX_EOM_ABORT_CLEAR``
|
||
Abort Measurement and Clear Log Data
|
||
|
||
|
||
|
||
|
||
.. c:enum:: nvme_log_phy_rx_eom_quality
|
||
|
||
Physical Interface Receiver Eye Opening Measurement Quality
|
||
|
||
**Constants**
|
||
|
||
``NVME_LOG_PHY_RX_EOM_GOOD``
|
||
<= Better Quality
|
||
|
||
``NVME_LOG_PHY_RX_EOM_BETTER``
|
||
<= Best Quality, >= Good Quality
|
||
|
||
``NVME_LOG_PHY_RX_EOM_BEST``
|
||
>= Better Quality
|
||
|
||
|
||
|
||
|
||
.. 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
|
||
|
||
|
||
|
||
|
||
.. c:struct:: nvme_ns_mgmt_host_sw_specified
|
||
|
||
Namespace management Host Software Specified Fields.
|
||
|
||
**Definition**
|
||
|
||
::
|
||
|
||
struct nvme_ns_mgmt_host_sw_specified {
|
||
__le64 nsze;
|
||
__le64 ncap;
|
||
__u8 rsvd16[10];
|
||
__u8 flbas;
|
||
__u8 rsvd27[2];
|
||
__u8 dps;
|
||
__u8 nmic;
|
||
__u8 rsvd31[61];
|
||
__le32 anagrpid;
|
||
__u8 rsvd96[4];
|
||
__le16 nvmsetid;
|
||
__le16 endgid;
|
||
__u8 rsvd104[280];
|
||
__le64 lbstm;
|
||
__le16 nphndls;
|
||
__u8 rsvd394[105];
|
||
union {
|
||
__u8 rsvd499[13];
|
||
struct {
|
||
__u8 znsco;
|
||
__le32 rar;
|
||
__le32 ror;
|
||
__le32 rnumzrwa;
|
||
} zns;
|
||
};
|
||
__le16 phndl[128];
|
||
__u8 rsvd768[3328];
|
||
};
|
||
|
||
**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.
|
||
|
||
``rsvd16``
|
||
Reserved
|
||
|
||
``flbas``
|
||
Formatted LBA Size, see :c:type:`enum nvme_id_ns_flbas <nvme_id_ns_flbas>`.
|
||
|
||
``rsvd27``
|
||
Reserved
|
||
|
||
``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>`.
|
||
|
||
``rsvd31``
|
||
Reserved
|
||
|
||
``anagrpid``
|
||
ANA Group Identifier indicates the ANA Group Identifier of the
|
||
ANA group of which the namespace is a member.
|
||
|
||
``rsvd96``
|
||
Reserved
|
||
|
||
``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.
|
||
|
||
``rsvd104``
|
||
Reserved
|
||
|
||
``lbstm``
|
||
Logical Block Storage Tag Mask Identifies the mask for the
|
||
Storage Tag field for the protection information
|
||
|
||
``nphndls``
|
||
Number of Placement Handles specifies the number of Placement
|
||
Handles included in the Placement Handle List
|
||
|
||
``rsvd394``
|
||
Reserved
|
||
|
||
``{unnamed_union}``
|
||
anonymous
|
||
|
||
``rsvd499``
|
||
Reserved for I/O Command Sets that extend this specification.
|
||
|
||
``zns``
|
||
rsvd499( Zoned Namespace Command Set specific field )
|
||
|
||
``phndl``
|
||
Placement Handle Associated RUH : This field specifies the Reclaim
|
||
Unit Handle Identifier to be associated with the Placement Handle
|
||
value. If the Flexible Data Placement capability is not supported or
|
||
not enabled in specified Endurance Group, then the controller shall
|
||
ignore this field.
|
||
|
||
``rsvd768``
|
||
Reserved
|
||
|
||
|
||
|