diff options
Diffstat (limited to '')
-rw-r--r-- | doc/rst/fabrics.rst | 4 | ||||
-rw-r--r-- | doc/rst/ioctl.rst | 194 | ||||
-rw-r--r-- | doc/rst/linux.rst | 21 | ||||
-rw-r--r-- | doc/rst/meson.build | 4 | ||||
-rw-r--r-- | doc/rst/mi.rst | 98 | ||||
-rw-r--r-- | doc/rst/tree.rst | 70 | ||||
-rw-r--r-- | doc/rst/types.rst | 716 | ||||
-rw-r--r-- | doc/rst/util.rst | 7 |
8 files changed, 1055 insertions, 59 deletions
diff --git a/doc/rst/fabrics.rst b/doc/rst/fabrics.rst index f0249f0..a7e0e60 100644 --- a/doc/rst/fabrics.rst +++ b/doc/rst/fabrics.rst @@ -424,7 +424,7 @@ identifier, or NULL if not successful. .. c:function:: char * nvmf_hostnqn_from_file () - Reads the host nvm qualified name from the config default location in /etc/nvme/ + Reads the host nvm qualified name from the config default location in /usr/local/etc/nvme/ **Parameters** @@ -436,7 +436,7 @@ is responsible to free the string. .. c:function:: char * nvmf_hostid_from_file () - Reads the host identifier from the config default location in /etc/nvme/. + Reads the host identifier from the config default location in /usr/local/etc/nvme/. **Parameters** diff --git a/doc/rst/ioctl.rst b/doc/rst/ioctl.rst index aaf6b55..d0a5173 100644 --- a/doc/rst/ioctl.rst +++ b/doc/rst/ioctl.rst @@ -1538,6 +1538,27 @@ The nvme command status if a response was received (see :c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. +.. c:function:: int nvme_get_log_page (int fd, __u32 xfer_len, struct nvme_get_log_args *args) + + Get log page data + +**Parameters** + +``int fd`` + File descriptor of nvme device + +``__u32 xfer_len`` + Max log transfer size per request to split the total. + +``struct nvme_get_log_args *args`` + :c:type:`struct nvme_get_log_args <nvme_get_log_args>` argument structure + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + .. c:function:: int nvme_get_log_supported_log_pages (int fd, bool rae, struct nvme_supported_log_pages *log) Retrieve nmve supported log pages @@ -1883,6 +1904,97 @@ The nvme command status if a response was received (see :c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. +.. c:function:: int nvme_get_log_fdp_configurations (int fd, __u16 egid, __u32 offset, __u32 len, void *log) + + Get list of Flexible Data Placement configurations + +**Parameters** + +``int fd`` + File descriptor of nvme device + +``__u16 egid`` + Endurance group identifier + +``__u32 offset`` + Offset into log page + +``__u32 len`` + Length (in bytes) of provided user buffer to hold the log data + +``void *log`` + Log page data buffer + + +.. c:function:: int nvme_get_log_reclaim_unit_handle_usage (int fd, __u16 egid, __u32 offset, __u32 len, void *log) + + Get reclaim unit handle usage + +**Parameters** + +``int fd`` + File descriptor of nvme device + +``__u16 egid`` + Endurance group identifier + +``__u32 offset`` + Offset into log page + +``__u32 len`` + Length (in bytes) of provided user buffer to hold the log data + +``void *log`` + Log page data buffer + + +.. c:function:: int nvme_get_log_fdp_stats (int fd, __u16 egid, __u32 offset, __u32 len, void *log) + + Get Flexible Data Placement statistics + +**Parameters** + +``int fd`` + File descriptor of nvme device + +``__u16 egid`` + Endurance group identifier + +``__u32 offset`` + Offset into log page + +``__u32 len`` + Length (in bytes) of provided user buffer to hold the log data + +``void *log`` + Log page data buffer + + +.. c:function:: int nvme_get_log_fdp_events (int fd, __u16 egid, bool host_events, __u32 offset, __u32 len, void *log) + + Get Flexible Data Placement events + +**Parameters** + +``int fd`` + File descriptor of nvme device + +``__u16 egid`` + Endurance group identifier + +``bool host_events`` + Whether to report host or controller events + +``__u32 offset`` + Offset into log page + +``__u32 len`` + Length (in bytes) of provided user buffer to hold the log data + +``void *log`` + Log page data buffer + + .. c:function:: int nvme_get_log_ana (int fd, enum nvme_log_ana_lsp lsp, bool rae, __u64 offset, __u32 len, void *log) Retrieve Asymmetric Namespace Access log page @@ -2911,7 +3023,7 @@ The nvme command status if a response was received (see .. c:function:: int nvme_set_features_host_id (int fd, bool exhid, bool save, __u8 *hostid) - Set enable extended host identifers feature + Set enable extended host identifiers feature **Parameters** @@ -4307,7 +4419,7 @@ controller and may include testing of the media associated with namespaces. The controller may return a response to this command immediately while running the self-test in the background. -Set the 'nsid' field to 0 to not include namepsaces in the test. Set to +Set the 'nsid' field to 0 to not include namespaces in the test. Set to 0xffffffff to test all namespaces. All other values tests a specific namespace, if present. @@ -4608,6 +4720,84 @@ The nvme command status if a response was received (see :c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. +.. c:function:: int nvme_io_mgmt_recv (struct nvme_io_mgmt_recv_args *args) + + I/O Management Receive command + +**Parameters** + +``struct nvme_io_mgmt_recv_args *args`` + :c:type:`struct nvme_io_mgmt_recv_args <nvme_io_mgmt_recv_args>` argument structure + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_fdp_reclaim_unit_handle_status (int fd, __u32 nsid, __u32 data_len, void *data) + + Get reclaim unit handle status + +**Parameters** + +``int fd`` + File descriptor of nvme device + +``__u32 nsid`` + Namespace identifier + +``__u32 data_len`` + Length of response buffer + +``void *data`` + Response buffer + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_io_mgmt_send (struct nvme_io_mgmt_send_args *args) + + I/O Management Send command + +**Parameters** + +``struct nvme_io_mgmt_send_args *args`` + :c:type:`struct nvme_io_mgmt_send_args <nvme_io_mgmt_send_args>` argument structure + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_fdp_reclaim_unit_handle_update (int fd, __u32 nsid, unsigned int npids, __u16 *pids) + + Update a list of reclaim unit handles + +**Parameters** + +``int fd`` + File descriptor of nvme device + +``__u32 nsid`` + Namespace identifier + +``unsigned int npids`` + Number of placement identifiers + +``__u16 *pids`` + List of placement identifiers + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + .. c:function:: int nvme_zns_mgmt_send (struct nvme_zns_mgmt_send_args *args) ZNS management send command diff --git a/doc/rst/linux.rst b/doc/rst/linux.rst index 83dbca9..4f159f1 100644 --- a/doc/rst/linux.rst +++ b/doc/rst/linux.rst @@ -143,27 +143,6 @@ The nvme command status if a response was received (see :c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. -.. c:function:: int nvme_get_log_page (int fd, __u32 xfer_len, struct nvme_get_log_args *args) - - Get log page data - -**Parameters** - -``int fd`` - File descriptor of nvme device - -``__u32 xfer_len`` - Max log transfer size per request to split the total. - -``struct nvme_get_log_args *args`` - :c:type:`struct nvme_get_log_args <nvme_get_log_args>` argument structure - -**Return** - -The nvme command status if a response was received (see -:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. - - .. c:function:: int nvme_get_ana_log_len (int fd, size_t *analen) Retrieve size of the current ANA log diff --git a/doc/rst/meson.build b/doc/rst/meson.build index 43874f0..ea79115 100644 --- a/doc/rst/meson.build +++ b/doc/rst/meson.build @@ -29,8 +29,6 @@ if want_docs != 'false' endforeach endif else - if want_docs == 'all' or want_docs == 'rst' - install_subdir('rst', install_dir: rstdir) - endif + # no prebuild docs endif endif diff --git a/doc/rst/mi.rst b/doc/rst/mi.rst index 3eaa20c..7e82918 100644 --- a/doc/rst/mi.rst +++ b/doc/rst/mi.rst @@ -635,6 +635,25 @@ new root object, or NULL on failure. root to free +.. c:function:: void nvme_mi_set_probe_enabled (nvme_root_t root, bool enabled) + + enable/disable the probe for new endpoints + +**Parameters** + +``nvme_root_t root`` + :c:type:`nvme_root_t` object + +``bool enabled`` + whether to probe new endpoints + +**Description** + +Controls whether newly-created endpoints are probed for quirks on creation. +Defaults to enabled, which results in some initial messaging with the +endpoint to determine model-specific details. + + .. c:type:: nvme_mi_ep_t @@ -1427,6 +1446,85 @@ The nvme command status if a response was received (see :c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. +.. c:function:: int nvme_mi_admin_admin_passthru (nvme_mi_ctrl_t ctrl, __u8 opcode, __u8 flags, __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3, __u32 cdw10, __u32 cdw11, __u32 cdw12, __u32 cdw13, __u32 cdw14, __u32 cdw15, __u32 data_len, void *data, __u32 metadata_len, void *metadata, __u32 timeout_ms, __u32 *result) + + Submit an nvme admin passthrough command + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``__u8 opcode`` + The nvme admin command to send + +``__u8 flags`` + NVMe command flags (not used) + +``__u16 rsvd`` + Reserved for future use + +``__u32 nsid`` + Namespace identifier + +``__u32 cdw2`` + Command dword 2 + +``__u32 cdw3`` + Command dword 3 + +``__u32 cdw10`` + Command dword 10 + +``__u32 cdw11`` + Command dword 11 + +``__u32 cdw12`` + Command dword 12 + +``__u32 cdw13`` + Command dword 13 + +``__u32 cdw14`` + Command dword 14 + +``__u32 cdw15`` + Command dword 15 + +``__u32 data_len`` + Length of the data transferred in this command in bytes + +``void *data`` + Pointer to user address of the data buffer + +``__u32 metadata_len`` + Length of metadata transferred in this command(not used) + +``void *metadata`` + Pointer to user address of the metadata buffer(not used) + +``__u32 timeout_ms`` + How long to wait for the command to complete + +``__u32 *result`` + Optional field to return the result from the CQE dword 0 + +**Description** + +Send a customized NVMe Admin command request message and get the corresponding +response message. + +This interface supports no data, host to controller and controller to +host but it doesn't support bidirectional data transfer. +Also this interface only supports data transfer size range [0, 4096] (bytes) +so the & data_len parameter must be less than 4097. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + .. c:function:: int nvme_mi_admin_identify_partial (nvme_mi_ctrl_t ctrl, struct nvme_identify_args *args, off_t offset, size_t size) Perform an Admin identify command, and retrieve partial response data. diff --git a/doc/rst/tree.rst b/doc/rst/tree.rst index d6f270d..9a8bb3f 100644 --- a/doc/rst/tree.rst +++ b/doc/rst/tree.rst @@ -133,6 +133,44 @@ DH-HMAC-CHAP host key or NULL if not set DH-HMAC-CHAP Key to set or NULL to clear existing key +.. c:function:: void nvme_host_set_pdc_enabled (nvme_host_t h, bool enabled) + + Set Persistent Discovery Controller flag + +**Parameters** + +``nvme_host_t h`` + Host for which the falg should be set + +``bool enabled`` + The bool to set the enabled flag + +**Description** + +When nvme_host_set_pdc_enabled() is not used to set the PDC flag, +nvme_host_is_pdc_enabled() will return the default value which was +passed into the function and not the undefined flag value. + + +.. c:function:: bool nvme_host_is_pdc_enabled (nvme_host_t h, bool fallback) + + Is Persistenct Discovery Controller enabled + +**Parameters** + +``nvme_host_t h`` + Host which to check if PDC is enabled + +``bool fallback`` + The fallback default value of the flag when + **nvme_host_set_pdc_enabled** has not be used + to set the flag. + +**Return** + +true if PDC is enabled for **h**, else false + + .. c:function:: nvme_host_t nvme_default_host (nvme_root_t r) Initializes the default host @@ -1644,6 +1682,38 @@ Returns the value of the 'discovery_ctrl' flag which specifies whether Value of the 'discover_ctrl' flag +.. c:function:: void nvme_ctrl_set_unique_discovery_ctrl (nvme_ctrl_t c, bool unique) + + Set the 'unique_discovery_ctrl' flag + +**Parameters** + +``nvme_ctrl_t c`` + Controller to be modified + +``bool unique`` + value of the unique_disc_ctrl flag + +**Description** + +Sets the 'unique_discovery_ctrl' flag in **c** to specify wheter +**c** is a unique discovery controller + + +.. c:function:: bool nvme_ctrl_is_unique_discovery_ctrl (nvme_ctrl_t c) + + Check the 'unique_discovery_ctrl' flag + +**Parameters** + +``nvme_ctrl_t c`` + Controller to be checked + +**Return** + +Value of the 'unique_discovery_ctrl' flag + + .. c:function:: int nvme_ctrl_identify (nvme_ctrl_t c, struct nvme_id_ctrl *id) Issues an 'identify controller' command diff --git a/doc/rst/types.rst b/doc/rst/types.rst index 9140821..0435c87 100644 --- a/doc/rst/types.rst +++ b/doc/rst/types.rst @@ -1155,6 +1155,9 @@ power scale value ``NVME_CTRL_CTRATT_ELBAS`` Extended LBA Formats supported +``NVME_CTRL_CTRATT_FDPS`` + Flexible Data Placement supported + @@ -3944,6 +3947,9 @@ Supported Log Pages (Log Identifier 00h) ``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. @@ -4775,6 +4781,35 @@ bytes, in size. This log captures the controller’s internal state. +.. 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 @@ -6175,6 +6210,598 @@ bytes, in size. This log captures the controller’s internal state. +.. c:enum:: nvme_fdp_ruh_type + + Reclaim Unit Handle Type + +**Constants** + +``NVME_FDP_RUHT_INITIALLY_ISOLATED`` + Initially Isolated + +``NVME_FDP_RUHT_PERSISTENTLY_ISOLATED`` + Persistently Isolated + + + + +.. c:struct:: nvme_fdp_ruh_desc + + Reclaim Unit Handle Descriptor + +**Definition** + +:: + + struct nvme_fdp_ruh_desc { + __u8 ruht; + __u8 rsvd1[3]; + }; + +**Members** + +``ruht`` + Reclaim Unit Handle Type + +``rsvd1`` + Reserved + + + + + +.. c:enum:: nvme_fdp_config_fdpa + + FDP Attributes + +**Constants** + +``NVME_FDP_CONFIG_FDPA_RGIF_SHIFT`` + Reclaim Group Identifier Format Shift + +``NVME_FDP_CONFIG_FDPA_RGIF_MASK`` + Reclaim Group Identifier Format Mask + +``NVME_FDP_CONFIG_FDPA_FDPVWC_SHIFT`` + FDP Volatile Write Cache Shift + +``NVME_FDP_CONFIG_FDPA_FDPVWC_MASK`` + FDP Volatile Write Cache Mask + +``NVME_FDP_CONFIG_FDPA_VALID_SHIFT`` + FDP Configuration Valid Shift + +``NVME_FDP_CONFIG_FDPA_VALID_MASK`` + FDP Configuration Valid Mask + + + + +.. c:struct:: nvme_fdp_config_desc + + FDP Configuration Descriptor + +**Definition** + +:: + + struct nvme_fdp_config_desc { + __u16 size; + __u8 fdpa; + __u8 vss; + __u32 nrg; + __u16 nruh; + __u16 maxpids; + __u32 nnss; + __u64 runs; + __u32 erutl; + __u8 rsvd28[36]; + struct nvme_fdp_ruh_desc ruhs[]; + }; + +**Members** + +``size`` + Descriptor size + +``fdpa`` + FDP Attributes (:c:type:`enum nvme_fdp_config_fdpa <nvme_fdp_config_fdpa>`) + +``vss`` + Vendor Specific Size + +``nrg`` + Number of Reclaim Groups + +``nruh`` + Number of Reclaim Unit Handles + +``maxpids`` + Max Placement Identifiers + +``nnss`` + Number of Namespaces Supported + +``runs`` + Reclaim Unit Nominal Size + +``erutl`` + Estimated Reclaim Unit Time Limit + +``rsvd28`` + Reserved + +``ruhs`` + Reclaim Unit Handle descriptors (:c:type:`struct nvme_fdp_ruh_desc <nvme_fdp_ruh_desc>`) + + + + + +.. c:struct:: nvme_fdp_config_log + + FDP Configurations Log Page + +**Definition** + +:: + + struct nvme_fdp_config_log { + __u16 n; + __u8 version; + __u8 rsvd3; + __u32 size; + __u8 rsvd8[8]; + struct nvme_fdp_config_desc configs[]; + }; + +**Members** + +``n`` + Number of FDP Configurations + +``version`` + Log page version + +``rsvd3`` + Reserved + +``size`` + Log page size in bytes + +``rsvd8`` + Reserved + +``configs`` + FDP Configuration descriptors (:c:type:`struct nvme_fdp_config_desc <nvme_fdp_config_desc>`) + + + + + +.. c:enum:: nvme_fdp_ruha + + Reclaim Unit Handle Attributes + +**Constants** + +``NVME_FDP_RUHA_HOST_SHIFT`` + Host Specified Reclaim Unit Handle Shift + +``NVME_FDP_RUHA_HOST_MASK`` + Host Specified Reclaim Unit Handle Mask + +``NVME_FDP_RUHA_CTRL_SHIFT`` + Controller Specified Reclaim Unit Handle Shift + +``NVME_FDP_RUHA_CTRL_MASK`` + Controller Specified Reclaim Unit Handle Mask + + + + +.. c:struct:: nvme_fdp_ruhu_desc + + Reclaim Unit Handle Usage Descriptor + +**Definition** + +:: + + struct nvme_fdp_ruhu_desc { + __u8 ruha; + __u8 rsvd1[7]; + }; + +**Members** + +``ruha`` + Reclaim Unit Handle Attributes (:c:type:`enum nvme_fdp_ruha <nvme_fdp_ruha>`) + +``rsvd1`` + Reserved + + + + + +.. c:struct:: nvme_fdp_ruhu_log + + Reclaim Unit Handle Usage Log Page + +**Definition** + +:: + + struct nvme_fdp_ruhu_log { + __u16 nruh; + __u8 rsvd2[6]; + struct nvme_fdp_ruhu_desc ruhus[]; + }; + +**Members** + +``nruh`` + Number of Reclaim Unit Handles + +``rsvd2`` + Reserved + +``ruhus`` + Reclaim Unit Handle Usage descriptors + + + + + +.. c:struct:: nvme_fdp_stats_log + + FDP Statistics Log Page + +**Definition** + +:: + + struct nvme_fdp_stats_log { + __u8 hbmw[16]; + __u8 mbmw[16]; + __u8 mbe[16]; + __u8 rsvd48[16]; + }; + +**Members** + +``hbmw`` + Host Bytes with Metadata Written + +``mbmw`` + Media Bytes with Metadata Written + +``mbe`` + Media Bytes Erased + +``rsvd48`` + Reserved + + + + + +.. c:enum:: nvme_fdp_event_type + + FDP Event Types + +**Constants** + +``NVME_FDP_EVENT_RUNFW`` + Reclaim Unit Not Fully Written + +``NVME_FDP_EVENT_RUTLE`` + Reclaim Unit Time Limit Exceeded + +``NVME_FDP_EVENT_RESET`` + Controller Level Reset Modified Reclaim Unit Handles + +``NVME_FDP_EVENT_PID`` + Invalid Placement Identifier + +``NVME_FDP_EVENT_REALLOC`` + Media Reallocated + +``NVME_FDP_EVENT_MODIFY`` + Implicitly Modified Reclaim Unit Handle + + + + +.. c:enum:: nvme_fdp_event_realloc_flags + + Media Reallocated Event Type Specific Flags + +**Constants** + +``NVME_FDP_EVENT_REALLOC_F_LBAV`` + LBA Valid + + + + +.. c:struct:: nvme_fdp_event_realloc + + Media Reallocated Event Type Specific Information + +**Definition** + +:: + + struct nvme_fdp_event_realloc { + __u8 flags; + __u8 rsvd1; + __u16 nlbam; + __u64 lba; + __u8 rsvd12[4]; + }; + +**Members** + +``flags`` + Event Type Specific flags (:c:type:`enum nvme_fdp_event_realloc_flags <nvme_fdp_event_realloc_flags>`) + +``rsvd1`` + Reserved + +``nlbam`` + Number of LBAs Moved + +``lba`` + Logical Block Address + +``rsvd12`` + Reserved + + + + + +.. c:enum:: nvme_fdp_event_flags + + FDP Event Flags + +**Constants** + +``NVME_FDP_EVENT_F_PIV`` + Placement Identifier Valid + +``NVME_FDP_EVENT_F_NSIDV`` + Namespace Identifier Valid + +``NVME_FDP_EVENT_F_LV`` + Location Valid + + + + +.. c:struct:: nvme_fdp_event + + FDP Event + +**Definition** + +:: + + struct nvme_fdp_event { + __u8 type; + __u8 flags; + __u16 pid; + struct nvme_timestamp ts; + __u32 nsid; + __u8 type_specific[16]; + __u16 rgid; + __u8 ruhid; + __u8 rsvd35[5]; + __u8 vs[24]; + }; + +**Members** + +``type`` + Event Type (:c:type:`enum nvme_fdp_event_type <nvme_fdp_event_type>`) + +``flags`` + Event Flags (:c:type:`enum nvme_fdp_event_flags <nvme_fdp_event_flags>`) + +``pid`` + Placement Identifier + +``ts`` + Timestamp + +``nsid`` + Namespace Identifier + +``type_specific`` + Event Type Specific Information + +``rgid`` + Reclaim Group Identifier + +``ruhid`` + Reclaim Unit Handle Identifier + +``rsvd35`` + Reserved + +``vs`` + Vendor Specific + + + + + +.. c:struct:: nvme_fdp_events_log + + FDP Events Log Page + +**Definition** + +:: + + struct nvme_fdp_events_log { + __u32 n; + __u8 rsvd4[60]; + struct nvme_fdp_event events[63]; + }; + +**Members** + +``n`` + Number of FDP Events + +``rsvd4`` + Reserved + +``events`` + FDP Events (:c:type:`struct nvme_fdp_event <nvme_fdp_event>`) + + + + + +.. c:struct:: nvme_feat_fdp_events_cdw11 + + FDP Events Feature Command Dword 11 + +**Definition** + +:: + + struct nvme_feat_fdp_events_cdw11 { + __u16 phndl; + __u8 noet; + __u8 rsvd24; + }; + +**Members** + +``phndl`` + Placement Handle + +``noet`` + Number of FDP Event Types + +``rsvd24`` + Reserved + + + + + +.. c:enum:: nvme_fdp_supported_event_attributes + + Supported FDP Event Attributes + +**Constants** + +``NVME_FDP_SUPP_EVENT_ENABLED_SHIFT`` + FDP Event Enable Shift + +``NVME_FDP_SUPP_EVENT_ENABLED_MASK`` + FDP Event Enable Mask + + + + +.. c:struct:: nvme_fdp_supported_event_desc + + Supported FDP Event Descriptor + +**Definition** + +:: + + struct nvme_fdp_supported_event_desc { + __u8 evt; + __u8 evta; + }; + +**Members** + +``evt`` + FDP Event Type + +``evta`` + FDP Event Type Attributes (:c:type:`enum nvme_fdp_supported_event_attributes <nvme_fdp_supported_event_attributes>`) + + + + + +.. c:struct:: nvme_fdp_ruh_status_desc + + Reclaim Unit Handle Status Descriptor + +**Definition** + +:: + + struct nvme_fdp_ruh_status_desc { + __u16 pid; + __u16 ruhid; + __u32 earutr; + __u64 ruamw; + __u8 rsvd16[16]; + }; + +**Members** + +``pid`` + Placement Identifier + +``ruhid`` + Reclaim Unit Handle Identifier + +``earutr`` + Estimated Active Reclaim Unit Time Remaining + +``ruamw`` + Reclaim Unit Available Media Writes + +``rsvd16`` + Reserved + + + + + +.. c:struct:: nvme_fdp_ruh_status + + Reclaim Unit Handle Status + +**Definition** + +:: + + struct nvme_fdp_ruh_status { + __u8 rsvd0[14]; + __u16 nruhsd; + struct nvme_fdp_ruh_status_desc ruhss[]; + }; + +**Members** + +``rsvd0`` + Reserved + +``nruhsd`` + Number of Reclaim Unit Handle Status Descriptors + +``ruhss`` + Reclaim Unit Handle Status descriptors + + + + + .. c:struct:: nvme_lba_status_desc LBA Status Descriptor Entry @@ -6446,35 +7073,6 @@ bytes, in size. This log captures the controller’s internal state. -.. 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_lba_range_type_entry LBA Range Type - Data Structure Entry @@ -9884,6 +10482,18 @@ true if **status** is of the specified type and value ``NVME_LOG_LID_BOOT_PARTITION`` Boot Partition +``NVME_LOG_LID_FDP_CONFIGS`` + FDP Configurations + +``NVME_LOG_LID_FDP_RUH_USAGE`` + Reclaim Unit Handle Usage + +``NVME_LOG_LID_FDP_STATS`` + FDP Statistics + +``NVME_LOG_LID_FDP_EVENTS`` + FDP Events + ``NVME_LOG_LID_DISCOVER`` Discovery @@ -9983,6 +10593,12 @@ true if **status** is of the specified type and value ``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 @@ -10212,6 +10828,18 @@ true if **status** is of the specified type and value ``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`` + @@ -10776,12 +11404,18 @@ true if **status** is of the specified type and value ``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 @@ -11079,3 +11713,27 @@ true if **status** is of the specified type and value 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 + + diff --git a/doc/rst/util.rst b/doc/rst/util.rst index 87ea945..4b85492 100644 --- a/doc/rst/util.rst +++ b/doc/rst/util.rst @@ -64,6 +64,9 @@ libnvme utility functions ``ENVME_CONNECT_OPNOTSUPP`` not supported +``ENVME_CONNECT_CONNREFUSED`` + connection refused + .. c:function:: __u8 nvme_status_to_errno (int status, bool fabrics) @@ -433,7 +436,7 @@ usage: int x = round_up(13, sizeof(__u32)); // 13 -> 16 **Parameters** ``size_t val_len`` - Value lenght + Value length **Description** @@ -443,7 +446,7 @@ __u32), of the buffer needed to hold the exat value of size **Return** -Lenght rounded up by 4 +Length rounded up by 4 .. c:function:: __u16 nvmf_exat_size (size_t val_len) |