Merging upstream version 1.10.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
05578a6ab9
commit
a02d194ad0
946 changed files with 4401 additions and 1290 deletions
|
@ -98,6 +98,55 @@ Fabrics-specific definitions.
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:struct:: nvme_fabrics_uri
|
||||
|
||||
Parsed URI structure
|
||||
|
||||
**Definition**
|
||||
|
||||
::
|
||||
|
||||
struct nvme_fabrics_uri {
|
||||
char *scheme;
|
||||
char *protocol;
|
||||
char *userinfo;
|
||||
char *host;
|
||||
int port;
|
||||
char **path_segments;
|
||||
char *query;
|
||||
char *fragment;
|
||||
};
|
||||
|
||||
**Members**
|
||||
|
||||
``scheme``
|
||||
Scheme name (typically 'nvme')
|
||||
|
||||
``protocol``
|
||||
Optional protocol/transport (e.g. 'tcp')
|
||||
|
||||
``userinfo``
|
||||
Optional user information component of the URI authority
|
||||
|
||||
``host``
|
||||
Host transport address
|
||||
|
||||
``port``
|
||||
The port subcomponent or 0 if not specified
|
||||
|
||||
``path_segments``
|
||||
NULL-terminated array of path segments
|
||||
|
||||
``query``
|
||||
Optional query string component (separated by '?')
|
||||
|
||||
``fragment``
|
||||
Optional fragment identifier component (separated by '#')
|
||||
|
||||
|
||||
|
||||
.. c:function:: const char * nvmf_trtype_str (__u8 trtype)
|
||||
|
||||
Decode TRTYPE field
|
||||
|
@ -434,6 +483,38 @@ An nvm namespace qualified name string based on the machine
|
|||
identifier, or NULL if not successful.
|
||||
|
||||
|
||||
.. c:function:: char * nvmf_hostnqn_generate_from_hostid (char *hostid)
|
||||
|
||||
Generate a host nqn from host identifier
|
||||
|
||||
**Parameters**
|
||||
|
||||
``char *hostid``
|
||||
Host identifier
|
||||
|
||||
**Description**
|
||||
|
||||
If **hostid** is NULL, the function generates it based on the machine
|
||||
identifier.
|
||||
|
||||
**Return**
|
||||
|
||||
On success, an NVMe Qualified Name for host identification. This
|
||||
name is based on the given host identifier. On failure, NULL.
|
||||
|
||||
|
||||
.. c:function:: char * nvmf_hostid_generate ()
|
||||
|
||||
Generate a machine specific host identifier
|
||||
|
||||
**Parameters**
|
||||
|
||||
**Return**
|
||||
|
||||
On success, an identifier string based on the machine identifier to
|
||||
be used as NVMe Host Identifier, or NULL on failure.
|
||||
|
||||
|
||||
.. c:function:: char * nvmf_hostnqn_from_file ()
|
||||
|
||||
Reads the host nvm qualified name from the config default location
|
||||
|
@ -543,3 +624,39 @@ tasks are supported: register, deregister, and registration update.
|
|||
0 on success; on failure -1 is returned and errno is set
|
||||
|
||||
|
||||
.. c:function:: struct nvme_fabrics_uri * nvme_parse_uri (const char *str)
|
||||
|
||||
Parse the URI string
|
||||
|
||||
**Parameters**
|
||||
|
||||
``const char *str``
|
||||
URI string
|
||||
|
||||
**Description**
|
||||
|
||||
Parse the URI string as defined in the NVM Express Boot Specification.
|
||||
Supported URI elements looks as follows:
|
||||
|
||||
nvme+tcp://user**host**:port/subsys_nqn/nid?query=val#fragment
|
||||
|
||||
**Return**
|
||||
|
||||
:c:type:`nvme_fabrics_uri` structure on success; NULL on failure with errno
|
||||
set.
|
||||
|
||||
|
||||
.. c:function:: void nvme_free_uri (struct nvme_fabrics_uri *uri)
|
||||
|
||||
Free the URI structure
|
||||
|
||||
**Parameters**
|
||||
|
||||
``struct nvme_fabrics_uri *uri``
|
||||
:c:type:`nvme_fabrics_uri` structure
|
||||
|
||||
**Description**
|
||||
|
||||
Free an :c:type:`nvme_fabrics_uri` structure.
|
||||
|
||||
|
||||
|
|
|
@ -2022,7 +2022,7 @@ This log consists of a header describing the log and descriptors containing
|
|||
the asymmetric namespace access information for ANA Groups that contain
|
||||
namespaces that are attached to the controller processing the command.
|
||||
|
||||
See :c:type:`struct nvme_ana_rsp_hdr <nvme_ana_rsp_hdr>` for the definition of the returned structure.
|
||||
See :c:type:`struct nvme_ana_log <nvme_ana_log>` for the definition of the returned structure.
|
||||
|
||||
**Return**
|
||||
|
||||
|
@ -2030,7 +2030,7 @@ 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_ana_groups (int fd, bool rae, __u32 len, struct nvme_ana_group_desc *log)
|
||||
.. c:function:: int nvme_get_log_ana_groups (int fd, bool rae, __u32 len, struct nvme_ana_log *log)
|
||||
|
||||
Retrieve Asymmetric Namespace Access groups only log page
|
||||
|
||||
|
@ -2045,12 +2045,12 @@ The nvme command status if a response was received (see
|
|||
``__u32 len``
|
||||
The allocated length of the log page
|
||||
|
||||
``struct nvme_ana_group_desc *log``
|
||||
``struct nvme_ana_log *log``
|
||||
User address to store the ana group log
|
||||
|
||||
**Description**
|
||||
|
||||
See :c:type:`struct nvme_ana_group_desc <nvme_ana_group_desc>` for the definition of the returned structure.
|
||||
See :c:type:`struct nvme_ana_log <nvme_ana_log>` for the definition of the returned structure.
|
||||
|
||||
**Return**
|
||||
|
||||
|
@ -2058,6 +2058,46 @@ 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_atomic (int fd, bool rgo, bool rae, unsigned int retries, struct nvme_ana_log *log, __u32 *len)
|
||||
|
||||
Retrieve Asymmetric Namespace Access log page atomically
|
||||
|
||||
**Parameters**
|
||||
|
||||
``int fd``
|
||||
File descriptor of nvme device
|
||||
|
||||
``bool rgo``
|
||||
Whether to retrieve ANA groups only (no NSIDs)
|
||||
|
||||
``bool rae``
|
||||
Whether to retain asynchronous events
|
||||
|
||||
``unsigned int retries``
|
||||
The maximum number of times to retry on log page changes
|
||||
|
||||
``struct nvme_ana_log *log``
|
||||
Pointer to a buffer to receive the ANA log page
|
||||
|
||||
``__u32 *len``
|
||||
Input: the length of the log page buffer.
|
||||
Output: the actual length of the ANA log page.
|
||||
|
||||
**Description**
|
||||
|
||||
See :c:type:`struct nvme_ana_log <nvme_ana_log>` for the definition of the returned structure.
|
||||
|
||||
**Return**
|
||||
|
||||
If successful, returns 0 and sets *len to the actual log page length.
|
||||
If unsuccessful, returns 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.
|
||||
Sets errno = EINVAL if retries == 0.
|
||||
Sets errno = EAGAIN if unable to read the log page atomically
|
||||
because chgcnt changed during each of the retries attempts.
|
||||
Sets errno = ENOSPC if the full log page does not fit in the provided buffer.
|
||||
|
||||
|
||||
.. c:function:: int nvme_get_log_lba_status (int fd, bool rae, __u64 offset, __u32 len, void *log)
|
||||
|
||||
Retrieve LBA Status
|
||||
|
|
|
@ -205,6 +205,23 @@ 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:: size_t nvme_get_ana_log_len_from_id_ctrl (const struct nvme_id_ctrl *id_ctrl, bool rgo)
|
||||
|
||||
Retrieve maximum possible ANA log size
|
||||
|
||||
**Parameters**
|
||||
|
||||
``const struct nvme_id_ctrl *id_ctrl``
|
||||
Controller identify data
|
||||
|
||||
``bool rgo``
|
||||
If true, return maximum log page size without NSIDs
|
||||
|
||||
**Return**
|
||||
|
||||
A byte limit on the size of the controller's ANA log page
|
||||
|
||||
|
||||
.. c:function:: int nvme_get_ana_log_len (int fd, size_t *analen)
|
||||
|
||||
Retrieve size of the current ANA log
|
||||
|
@ -699,6 +716,26 @@ The string containing the TLS identity. It is the responsibility
|
|||
of the caller to free the returned string.
|
||||
|
||||
|
||||
.. c:function:: long nvme_revoke_tls_key (const char *keyring, const char *key_type, const char *identity)
|
||||
|
||||
Revoke TLS key from keyring
|
||||
|
||||
**Parameters**
|
||||
|
||||
``const char *keyring``
|
||||
Keyring to use
|
||||
|
||||
``const char *key_type``
|
||||
Type of the key to revoke
|
||||
|
||||
``const char *identity``
|
||||
Key identity string
|
||||
|
||||
**Return**
|
||||
|
||||
0 on success or on failure -1 with errno set.
|
||||
|
||||
|
||||
.. c:function:: char * nvme_export_tls_key (const unsigned char *key_data, int key_len)
|
||||
|
||||
Export a TLS key
|
||||
|
|
|
@ -28,6 +28,30 @@ logging functions
|
|||
Sets the default logging variables for the library.
|
||||
|
||||
|
||||
.. c:function:: void nvme_init_default_logging (FILE *fp, int lvl, bool log_pid, bool log_tstamp)
|
||||
|
||||
Initialize default (fallback) logging
|
||||
|
||||
**Parameters**
|
||||
|
||||
``FILE *fp``
|
||||
File descriptor for logging messages
|
||||
|
||||
``int lvl``
|
||||
Logging level to set
|
||||
|
||||
``bool log_pid``
|
||||
Boolean to enable logging of the PID
|
||||
|
||||
``bool log_tstamp``
|
||||
Boolean to enable logging of the timestamp
|
||||
|
||||
**Description**
|
||||
|
||||
Sets the default logging settings for the library in case the root object
|
||||
is absent.
|
||||
|
||||
|
||||
.. c:function:: int nvme_get_logging_level (nvme_root_t r, bool *log_pid, bool *log_tstamp)
|
||||
|
||||
Get current logging level
|
||||
|
@ -72,6 +96,9 @@ will be set as well. This means the global root object is always pointing to
|
|||
the latest created root object. Note the first **nvme_free_tree** call will reset
|
||||
the global root object.
|
||||
|
||||
This function is deprecated. Use nvme_init_default_logging or/and
|
||||
nvme_init_logging instead.
|
||||
|
||||
|
||||
.. c:function:: void nvme_set_debug (bool debug)
|
||||
|
||||
|
@ -84,7 +111,7 @@ the global root object.
|
|||
|
||||
**Description**
|
||||
|
||||
Don't use it, it's debricated.
|
||||
This function is deprecated. Use nvme_init_default_logging instead.
|
||||
|
||||
|
||||
.. c:function:: bool nvme_get_debug (void)
|
||||
|
@ -99,7 +126,7 @@ Don't use it, it's debricated.
|
|||
**Description**
|
||||
|
||||
|
||||
Don't use it, it's debricated.
|
||||
This function is deprecated. Use nvme_get_logging_level instead.
|
||||
|
||||
**Return**
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ if want_docs != 'false'
|
|||
if want_docs_build
|
||||
kernel_doc = find_program(top_source_dir + 'scripts/kernel-doc')
|
||||
|
||||
conf = configuration_data()
|
||||
conf.set('SYSCONFDIR', sysconfdir)
|
||||
rst_conf = configuration_data()
|
||||
rst_conf.set('SYSCONFDIR', sysconfdir)
|
||||
|
||||
if want_docs == 'all' or want_docs == 'rst' or want_docs == 'html'
|
||||
foreach apif : api_files
|
||||
|
@ -17,7 +17,7 @@ if want_docs != 'false'
|
|||
subst = configure_file(
|
||||
input: afile,
|
||||
output: '@BASENAME@.subst',
|
||||
configuration: conf)
|
||||
configuration: rst_conf)
|
||||
rst = custom_target(
|
||||
apif.underscorify() + '_rst',
|
||||
input: subst,
|
||||
|
|
|
@ -2459,7 +2459,7 @@ This log consists of a header describing the log and descriptors containing
|
|||
the asymmetric namespace access information for ANA Groups that contain
|
||||
namespaces that are attached to the controller processing the command.
|
||||
|
||||
See :c:type:`struct nvme_ana_rsp_hdr <nvme_ana_rsp_hdr>` for the definition of the returned structure.
|
||||
See :c:type:`struct nvme_ana_log <nvme_ana_log>` for the definition of the returned structure.
|
||||
|
||||
**Return**
|
||||
|
||||
|
@ -2495,6 +2495,46 @@ 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_get_ana_log_atomic (nvme_mi_ctrl_t ctrl, bool rgo, bool rae, unsigned int retries, struct nvme_ana_log *log, __u32 *len)
|
||||
|
||||
Retrieve Asymmetric Namespace Access log page atomically
|
||||
|
||||
**Parameters**
|
||||
|
||||
``nvme_mi_ctrl_t ctrl``
|
||||
Controller to query
|
||||
|
||||
``bool rgo``
|
||||
Whether to retrieve ANA groups only (no NSIDs)
|
||||
|
||||
``bool rae``
|
||||
Whether to retain asynchronous events
|
||||
|
||||
``unsigned int retries``
|
||||
The maximum number of times to retry on log page changes
|
||||
|
||||
``struct nvme_ana_log *log``
|
||||
Pointer to a buffer to receive the ANA log page
|
||||
|
||||
``__u32 *len``
|
||||
Input: the length of the log page buffer.
|
||||
Output: the actual length of the ANA log page.
|
||||
|
||||
**Description**
|
||||
|
||||
See :c:type:`struct nvme_ana_log <nvme_ana_log>` for the definition of the returned structure.
|
||||
|
||||
**Return**
|
||||
|
||||
If successful, returns 0 and sets *len to the actual log page length.
|
||||
If unsuccessful, returns 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.
|
||||
Sets errno = EINVAL if retries == 0.
|
||||
Sets errno = EAGAIN if unable to read the log page atomically
|
||||
because chgcnt changed during each of the retries attempts.
|
||||
Sets errno = ENOSPC if the full log page does not fit in the provided buffer.
|
||||
|
||||
|
||||
.. c:function:: int nvme_mi_admin_get_log_lba_status (nvme_mi_ctrl_t ctrl, bool rae, __u64 offset, __u32 len, void *log)
|
||||
|
||||
Retrieve LBA Status
|
||||
|
|
|
@ -53,6 +53,20 @@ Sets the managing application string for **r**.
|
|||
Returns the managing application string for **r** or NULL if not set.
|
||||
|
||||
|
||||
.. c:function:: void nvme_root_skip_namespaces (nvme_root_t r)
|
||||
|
||||
Skip namespace scanning
|
||||
|
||||
**Parameters**
|
||||
|
||||
``nvme_root_t r``
|
||||
:c:type:`nvme_root_t` object
|
||||
|
||||
**Description**
|
||||
|
||||
Sets a flag to skip namespaces during scanning.
|
||||
|
||||
|
||||
.. c:function:: void nvme_root_release_fds (nvme_root_t r)
|
||||
|
||||
Close all opened file descriptors in the tree
|
||||
|
@ -229,14 +243,62 @@ true if PDC is enabled for **h**, else false
|
|||
|
||||
**Description**
|
||||
|
||||
Initializes the default host object based on the values in
|
||||
/etc/nvme/hostnqn and /etc/nvme/hostid and attaches it to **r**.
|
||||
Initializes the default host object based on the hostnqn/hostid
|
||||
values returned by nvme_host_get_ids() and attaches it to **r**.
|
||||
|
||||
**Return**
|
||||
|
||||
:c:type:`nvme_host_t` object
|
||||
|
||||
|
||||
.. c:function:: int nvme_host_get_ids (nvme_root_t r, char *hostnqn_arg, char *hostid_arg, char **hostnqn, char **hostid)
|
||||
|
||||
Retrieve host ids from various sources
|
||||
|
||||
**Parameters**
|
||||
|
||||
``nvme_root_t r``
|
||||
:c:type:`nvme_root_t` object
|
||||
|
||||
``char *hostnqn_arg``
|
||||
Input hostnqn (command line) argument
|
||||
|
||||
``char *hostid_arg``
|
||||
Input hostid (command line) argument
|
||||
|
||||
``char **hostnqn``
|
||||
Output hostnqn
|
||||
|
||||
``char **hostid``
|
||||
Output hostid
|
||||
|
||||
**Description**
|
||||
|
||||
nvme_host_get_ids figures out which hostnqn/hostid is to be used.
|
||||
There are several sources where this information can be retrieved.
|
||||
|
||||
The order is:
|
||||
|
||||
- Start with informartion from DMI or device-tree
|
||||
- Override hostnqn and hostid from /etc/nvme files
|
||||
- Override hostnqn or hostid with values from JSON
|
||||
configuration file. The first host entry in the file is
|
||||
considered the default host.
|
||||
- Override hostnqn or hostid with values from the command line
|
||||
(**hostnqn_arg**, **hostid_arg**).
|
||||
|
||||
If the IDs are still NULL after the lookup algorithm, the function
|
||||
will generate random IDs.
|
||||
|
||||
The function also verifies that hostnqn and hostid matches. The Linux
|
||||
NVMe implementation expects a 1:1 matching between the IDs.
|
||||
|
||||
**Return**
|
||||
|
||||
0 on success (**hostnqn** and **hostid** contain valid strings
|
||||
which the caller needs to free), -1 otherwise and errno is set.
|
||||
|
||||
|
||||
.. c:function:: nvme_subsystem_t nvme_first_subsystem (nvme_host_t h)
|
||||
|
||||
Start subsystem iterator
|
||||
|
|
|
@ -2148,6 +2148,12 @@ power scale value
|
|||
``NVME_CTRL_CTRATT_ELBAS``
|
||||
Extended LBA Formats supported
|
||||
|
||||
``NVME_CTRL_CTRATT_MEM``
|
||||
MDTS and Size Limits Exclude Metadata supported
|
||||
|
||||
``NVME_CTRL_CTRATT_HMBR``
|
||||
HMB Restrict Non-Operational Power State Access
|
||||
|
||||
``NVME_CTRL_CTRATT_FDPS``
|
||||
Flexible Data Placement supported
|
||||
|
||||
|
@ -3162,6 +3168,34 @@ power scale value
|
|||
Mask to get the protection information format for
|
||||
the extended LBA format.
|
||||
|
||||
``NVME_NVM_ELBAF_QPIF_MASK``
|
||||
Mask to get the Qualified Protection Information
|
||||
Format.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:enum:: nvme_nvm_id_ns_pif
|
||||
|
||||
This field indicates the type of the Protection Information Format
|
||||
|
||||
**Constants**
|
||||
|
||||
``NVME_NVM_PIF_16B_GUARD``
|
||||
16-bit Guard Protection Information Format
|
||||
|
||||
``NVME_NVM_PIF_32B_GUARD``
|
||||
32-bit Guard Protection Information Format
|
||||
|
||||
``NVME_NVM_PIF_64B_GUARD``
|
||||
64-bit Guard Protection Information Format
|
||||
|
||||
``NVME_NVM_PIF_QTYPE``
|
||||
If Qualified Protection Information Format Supports
|
||||
and Protection Information Format is set to 3, then
|
||||
protection information format is taken from Qualified
|
||||
Protection Information Format field.
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -3759,7 +3793,9 @@ power scale value
|
|||
__u8 dmrl;
|
||||
__le32 dmrsl;
|
||||
__le64 dmsl;
|
||||
__u8 rsvd16[4080];
|
||||
__u8 rsvd16[2];
|
||||
__le16 aocs;
|
||||
__u8 rsvd20[4076];
|
||||
};
|
||||
|
||||
**Members**
|
||||
|
@ -3783,7 +3819,13 @@ power scale value
|
|||
Dataset Management Size Limit
|
||||
|
||||
``rsvd16``
|
||||
reserved
|
||||
Reserved
|
||||
|
||||
``aocs``
|
||||
Admin Optional Command Support
|
||||
|
||||
``rsvd20``
|
||||
Reserved
|
||||
|
||||
|
||||
|
||||
|
@ -3800,9 +3842,13 @@ power scale value
|
|||
struct nvme_nvm_id_ns {
|
||||
__le64 lbstm;
|
||||
__u8 pic;
|
||||
__u8 rsvd9[3];
|
||||
__u8 pifa;
|
||||
__u8 rsvd10[2];
|
||||
__le32 elbaf[64];
|
||||
__u8 rsvd268[3828];
|
||||
__le32 npdgl;
|
||||
__u8 rsvd272[20];
|
||||
__le32 tlbaag;
|
||||
__u8 rsvd296[3800];
|
||||
};
|
||||
|
||||
**Members**
|
||||
|
@ -3813,13 +3859,25 @@ power scale value
|
|||
``pic``
|
||||
Protection Information Capabilities
|
||||
|
||||
``rsvd9``
|
||||
``pifa``
|
||||
Protection Information Format Attribute
|
||||
|
||||
``rsvd10``
|
||||
Reserved
|
||||
|
||||
``elbaf``
|
||||
List of Extended LBA Format Support
|
||||
|
||||
``rsvd268``
|
||||
``npdgl``
|
||||
Namespace Preferred Deallocate Granularity Large
|
||||
|
||||
``rsvd272``
|
||||
Reserved
|
||||
|
||||
``tlbaag``
|
||||
Tracked LBA Allocation Granularity
|
||||
|
||||
``rsvd296``
|
||||
Reserved
|
||||
|
||||
|
||||
|
@ -5821,6 +5879,12 @@ bytes, in size. This log captures the controller’s internal state.
|
|||
``NVME_PEL_THERMAL_EXCURSION_EVENT``
|
||||
Thermal Excursion Event
|
||||
|
||||
``NVME_PEL_VENDOR_SPECIFIC_EVENT``
|
||||
Vendor Specific Event
|
||||
|
||||
``NVME_PEL_TCG_DEFINED_EVENT``
|
||||
TCG Defined Event
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -6395,16 +6459,21 @@ bytes, in size. This log captures the controller’s internal state.
|
|||
|
||||
.. c:enum:: nvme_lba_status_atype
|
||||
|
||||
Potentially Unrecoverable LBAs
|
||||
Action type the controller uses to return LBA status
|
||||
|
||||
**Constants**
|
||||
|
||||
``NVME_LBA_STATUS_ATYPE_SCAN_UNTRACKED``
|
||||
Potentially Unrecoverable LBAs
|
||||
``NVME_LBA_STATUS_ATYPE_ALLOCATED``
|
||||
Return tracked allocated LBAs status
|
||||
|
||||
``NVME_LBA_STATUS_ATYPE_SCAN_TRACKED``
|
||||
Potentially Unrecoverable LBAs
|
||||
associated with physical storage
|
||||
``NVME_LBA_STATUS_ATYPE_SCAN_UNTRACKED``
|
||||
Perform scan and return Untracked and
|
||||
Tracked Potentially Unrecoverable LBAs
|
||||
status
|
||||
|
||||
``NVME_LBA_STATUS_ATYPE_TRACKED``
|
||||
Return Tracked Potentially Unrecoverable
|
||||
LBAs associated with physical storage
|
||||
|
||||
|
||||
|
||||
|
@ -13061,6 +13130,9 @@ true if **status** is of the specified type and value
|
|||
``nvme_cmd_resv_release``
|
||||
Reservation Release
|
||||
|
||||
``nvme_cmd_cancel``
|
||||
Cancel
|
||||
|
||||
``nvme_cmd_copy``
|
||||
Copy
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue