1
0
Fork 0

Merging upstream version 1.7.1.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-16 10:16:49 +01:00
parent 41144a7301
commit 476f38f2bb
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
878 changed files with 2965 additions and 1746 deletions

View file

@ -501,3 +501,80 @@ The key serial number if the key could be inserted into
the keyring or 0 with errno otherwise.
.. c:function:: long nvme_insert_tls_key_versioned (const char *keyring, const char *key_type, const char *hostnqn, const char *subsysnqn, int version, int hmac, unsigned char *configured_key, int key_len)
Derive and insert TLS key
**Parameters**
``const char *keyring``
Keyring to use
``const char *key_type``
Type of the resulting key
``const char *hostnqn``
Host NVMe Qualified Name
``const char *subsysnqn``
Subsystem NVMe Qualified Name
``int version``
Key version to use
``int hmac``
HMAC algorithm
``unsigned char *configured_key``
Configured key data to derive the key from
``int key_len``
Length of **configured_key**
**Description**
Derives a 'retained' TLS key as specified in NVMe TCP 1.0a (if
**version** s set to '0') or NVMe TP8028 (if **version** is set to '1) and
stores it as type **key_type** in the keyring specified by **keyring**.
**Return**
The key serial number if the key could be inserted into
the keyring or 0 with errno otherwise.
.. c:function:: char * nvme_generate_tls_key_identity (const char *hostnqn, const char *subsysnqn, int version, int hmac, unsigned char *configured_key, int key_len)
Generate the TLS key identity
**Parameters**
``const char *hostnqn``
Host NVMe Qualified Name
``const char *subsysnqn``
Subsystem NVMe Qualified Name
``int version``
Key version to use
``int hmac``
HMAC algorithm
``unsigned char *configured_key``
Configured key data to derive the key from
``int key_len``
Length of **configured_key**
**Description**
Derives a 'retained' TLS key as specified in NVMe TCP and
generate the corresponding TLs identity.
**Return**
The string containing the TLS identity. It is the responsibility
of the caller to free the returned string.

View file

@ -1618,6 +1618,18 @@ power scale value
If set, then the controller supports
the copy command.
``NVME_CTRL_ONCS_COPY_SINGLE_ATOMICITY``
If set, then the write portion of a
Copy command is performed as a single
write command to which the same
atomicity requirements that apply to
a write command apply.
``NVME_CTRL_ONCS_ALL_FAST_COPY``
If set, then all copy operations for
the Copy command are fast copy
operations.
@ -1892,8 +1904,7 @@ power scale value
__u8 nguid[16];
__u8 eui64[8];
struct nvme_lbaf lbaf[64];
__le64 lbstm;
__u8 vs[3704];
__u8 vs[3712];
};
**Members**
@ -2076,9 +2087,6 @@ power scale value
``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
@ -7461,7 +7469,11 @@ bytes, in size. This log captures the controllers internal state.
struct nvme_feat_host_behavior {
__u8 acre;
__u8 rsvd1[511];
__u8 etdas;
__u8 lbafee;
__u8 rsvd3;
__u16 cdfe;
__u8 rsvd6[506];
};
**Members**
@ -7469,7 +7481,19 @@ bytes, in size. This log captures the controllers internal state.
``acre``
Advanced Command Retry Enable
``rsvd1``
``etdas``
Extended Telemetry Data Area 4 Supported
``lbafee``
LBA Format Extension Enable
``rsvd3``
Reserved
``cdfe``
Copy Descriptor Formats Enable
``rsvd6``
Reserved
@ -7609,6 +7633,130 @@ bytes, in size. This log captures the controllers internal state.
.. c:enum:: nvme_copy_range_sopt
NVMe Copy Range Source Options
**Constants**
``NVME_COPY_SOPT_FCO``
NVMe Copy Source Option Fast Copy Only
.. c:struct:: nvme_copy_range_f2
Copy - Source Range Entries Descriptor Format 2h
**Definition**
::
struct nvme_copy_range_f2 {
__le32 snsid;
__u8 rsvd4[4];
__le64 slba;
__le16 nlb;
__u8 rsvd18[4];
__le16 sopt;
__le32 eilbrt;
__le16 elbat;
__le16 elbatm;
};
**Members**
``snsid``
Source Namespace Identifier
``rsvd4``
Reserved
``slba``
Starting LBA
``nlb``
Number of Logical Blocks
``rsvd18``
Reserved
``sopt``
Source Options
``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_f3
Copy - Source Range Entries Descriptor Format 3h
**Definition**
::
struct nvme_copy_range_f3 {
__le32 snsid;
__u8 rsvd4[4];
__le64 slba;
__le16 nlb;
__u8 rsvd18[4];
__le16 sopt;
__u8 rsvd24[2];
__u8 elbt[10];
__le16 elbat;
__le16 elbatm;
};
**Members**
``snsid``
Source Namespace Identifier
``rsvd4``
Reserved
``slba``
Starting LBA
``nlb``
Number of Logical Blocks
``rsvd18``
Reserved
``sopt``
Source Options
``rsvd24``
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
@ -10162,6 +10310,29 @@ entries are of a variable lengths (TEL), TEL is always a multiple of
``NVME_SC_CMD_SIZE_LIMIT_EXCEEDED``
Command Size Limit Exceeded
``NVME_SC_INCOMPATIBLE_NS``
Incompatible Namespace or Format: At
least one source namespace and the
destination namespace have incompatible
formats.
``NVME_SC_FAST_COPY_NOT_POSSIBLE``
Fast Copy Not Possible: The Fast Copy
Only (FCO) bit was set to 1 in a Source
Range entry and the controller was not
able to use fast copy operations to copy
the specified data.
``NVME_SC_OVERLAPPING_IO_RANGE``
Overlapping I/O Range: A source logical
block range overlaps the destination
logical block range.
``NVME_SC_INSUFFICIENT_RESOURCES``
Insufficient Resources: A resource
shortage prevented the controller from
performing the requested copy.
``NVME_SC_CONNECT_FORMAT``
Incompatible Format: The NVM subsystem
does not support the record format

View file

@ -233,6 +233,74 @@ otherwise.
Number of descriptors to construct
.. c:function:: void nvme_init_copy_range_f2 (struct nvme_copy_range_f2 *copy, __u32 *snsids, __u16 *nlbs, __u64 *slbas, __u16 *sopts, __u32 *eilbrts, __u32 *elbatms, __u32 *elbats, __u16 nr)
Constructs a copy range f2 structure
**Parameters**
``struct nvme_copy_range_f2 *copy``
Copy range array
``__u32 *snsids``
Source namespace identifier
``__u16 *nlbs``
Number of logical blocks
``__u64 *slbas``
Starting LBA
``__u16 *sopts``
Source options
``__u32 *eilbrts``
Expected initial logical block reference tag
``__u32 *elbatms``
Expected logical block application tag mask
``__u32 *elbats``
Expected logical block application tag
``__u16 nr``
Number of descriptors to construct
.. c:function:: void nvme_init_copy_range_f3 (struct nvme_copy_range_f3 *copy, __u32 *snsids, __u16 *nlbs, __u64 *slbas, __u16 *sopts, __u64 *eilbrts, __u32 *elbatms, __u32 *elbats, __u16 nr)
Constructs a copy range f3 structure
**Parameters**
``struct nvme_copy_range_f3 *copy``
Copy range array
``__u32 *snsids``
Source namespace identifier
``__u16 *nlbs``
Number of logical blocks
``__u64 *slbas``
Starting LBA
``__u16 *sopts``
Source options
``__u64 *eilbrts``
Expected initial logical block reference tag
``__u32 *elbatms``
Expected logical block application tag mask
``__u32 *elbats``
Expected logical block application tag
``__u16 nr``
Number of descriptors to construct
.. c:function:: int nvme_get_feature_length (int fid, __u32 cdw11, __u32 *len)
Retreive the command payload length for a specific feature identifier