summaryrefslogtreecommitdiffstats
path: root/doc/rst
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--doc/rst/fabrics.rst4
-rw-r--r--doc/rst/ioctl.rst194
-rw-r--r--doc/rst/linux.rst21
-rw-r--r--doc/rst/meson.build4
-rw-r--r--doc/rst/mi.rst98
-rw-r--r--doc/rst/tree.rst70
-rw-r--r--doc/rst/types.rst716
-rw-r--r--doc/rst/util.rst7
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)