ioctl.h

Linux NVMe ioctl interface functions

struct nvme_passthru_cmd

nvme passthrough command structure

Definition

struct nvme_passthru_cmd {
  __u8 opcode;
  __u8 flags;
  __u16 rsvd1;
  __u32 nsid;
  __u32 cdw2;
  __u32 cdw3;
  __u64 metadata;
  __u64 addr;
  __u32 metadata_len;
  __u32 data_len;
  __u32 cdw10;
  __u32 cdw11;
  __u32 cdw12;
  __u32 cdw13;
  __u32 cdw14;
  __u32 cdw15;
  __u32 timeout_ms;
  __u32 result;
};

Members

opcode
Operation code, see enum nvme_io_opcodes and enum nvme_admin_opcodes
flags
Not supported: intended for command flags (eg: SGL, FUSE)
rsvd1
Reserved for future use
nsid
Namespace Identifier, or Fabrics type
cdw2
Command Dword 2 (no spec defined use)
cdw3
Command Dword 3 (no spec defined use)
metadata
User space address to metadata buffer (NULL if not used)
addr
User space address to data buffer (NULL if not used)
metadata_len
Metadata buffer transfer length
data_len
Data buffer transfer length
cdw10
Command Dword 10 (command specific)
cdw11
Command Dword 11 (command specific)
cdw12
Command Dword 12 (command specific)
cdw13
Command Dword 13 (command specific)
cdw14
Command Dword 14 (command specific)
cdw15
Command Dword 15 (command specific)
timeout_ms
If non-zero, overrides system default timeout in milliseconds
result
Set on completion to the command’s CQE DWORD 0 controller response
struct nvme_passthru_cmd64

64-bit nvme passthrough command structure

Definition

struct nvme_passthru_cmd64 {
  __u8 opcode;
  __u8 flags;
  __u16 rsvd1;
  __u32 nsid;
  __u32 cdw2;
  __u32 cdw3;
  __u64 metadata;
  __u64 addr;
  __u32 metadata_len;
  __u32 data_len;
  __u32 cdw10;
  __u32 cdw11;
  __u32 cdw12;
  __u32 cdw13;
  __u32 cdw14;
  __u32 cdw15;
  __u32 timeout_ms;
  __u32 rsvd2;
  __u64 result;
};

Members

opcode
Operation code, see enum nvme_io_opcodes and enum nvme_admin_opcodes
flags
Not supported: intended for command flags (eg: SGL, FUSE)
rsvd1
Reserved for future use
nsid
Namespace Identifier, or Fabrics type
cdw2
Command Dword 2 (no spec defined use)
cdw3
Command Dword 3 (no spec defined use)
metadata
User space address to metadata buffer (NULL if not used)
addr
User space address to data buffer (NULL if not used)
metadata_len
Metadata buffer transfer length
data_len
Data buffer transfer length
cdw10
Command Dword 10 (command specific)
cdw11
Command Dword 11 (command specific)
cdw12
Command Dword 12 (command specific)
cdw13
Command Dword 13 (command specific)
cdw14
Command Dword 14 (command specific)
cdw15
Command Dword 15 (command specific)
timeout_ms
If non-zero, overrides system default timeout in milliseconds
rsvd2
Reserved for future use (and fills an implicit struct pad
result
Set on completion to the command’s CQE DWORD 0-1 controller response
struct nvme_uring_cmd

nvme uring command structure

Definition

struct nvme_uring_cmd {
  __u8 opcode;
  __u8 flags;
  __u16 rsvd1;
  __u32 nsid;
  __u32 cdw2;
  __u32 cdw3;
  __u64 metadata;
  __u64 addr;
  __u32 metadata_len;
  __u32 data_len;
  __u32 cdw10;
  __u32 cdw11;
  __u32 cdw12;
  __u32 cdw13;
  __u32 cdw14;
  __u32 cdw15;
  __u32 timeout_ms;
  __u32 rsvd2;
};

Members

opcode
Operation code, see enum nvme_io_opcodes and enum nvme_admin_opcodes
flags
Not supported: intended for command flags (eg: SGL, FUSE)
rsvd1
Reserved for future use
nsid
Namespace Identifier, or Fabrics type
cdw2
Command Dword 2 (no spec defined use)
cdw3
Command Dword 3 (no spec defined use)
metadata
User space address to metadata buffer (NULL if not used)
addr
User space address to data buffer (NULL if not used)
metadata_len
Metadata buffer transfer length
data_len
Data buffer transfer length
cdw10
Command Dword 10 (command specific)
cdw11
Command Dword 11 (command specific)
cdw12
Command Dword 12 (command specific)
cdw13
Command Dword 13 (command specific)
cdw14
Command Dword 14 (command specific)
cdw15
Command Dword 15 (command specific)
timeout_ms
If non-zero, overrides system default timeout in milliseconds
rsvd2
Reserved for future use (and fills an implicit struct pad
sizeof_args(type, member, align)

Helper function used to determine structure sizes

Parameters

type
Argument structure type
member
Member inside the type
align
Alignment information
int nvme_submit_admin_passthru64(int fd, struct nvme_passthru_cmd64 *cmd, __u64 *result)

Submit a 64-bit nvme passthrough admin command

Parameters

int fd
File descriptor of nvme device
struct nvme_passthru_cmd64 *cmd
The nvme admin command to send
__u64 *result
Optional field to return the result from the CQE DW0-1

Description

Uses NVME_IOCTL_ADMIN64_CMD for the ioctl request.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_admin_passthru64(int fd, __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, __u64 *result)

Submit a 64-bit nvme passthrough command

Parameters

int fd
File descriptor of nvme device
__u8 opcode
The nvme io 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
void *metadata
Pointer to user address of the metadata buffer
__u32 timeout_ms
How long the kernel waits for the command to complete
__u64 *result
Optional field to return the result from the CQE dword 0

Description

Parameterized form of nvme_submit_admin_passthru64(). This sets up and submits a struct nvme_passthru_cmd64.

Known values for opcode are defined in enum nvme_admin_opcode.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_submit_admin_passthru(int fd, struct nvme_passthru_cmd *cmd, __u32 *result)

Submit an nvme passthrough admin command

Parameters

int fd
File descriptor of nvme device
struct nvme_passthru_cmd *cmd
The nvme admin command to send
__u32 *result
Optional field to return the result from the CQE DW0

Description

Uses NVME_IOCTL_ADMIN_CMD for the ioctl request.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_admin_passthru(int fd, __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 passthrough command

Parameters

int fd
File descriptor of nvme device
__u8 opcode
The nvme io 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
void *metadata
Pointer to user address of the metadata buffer
__u32 timeout_ms
How long the kernel waits for the command to complete
__u32 *result
Optional field to return the result from the CQE dword 0

Description

Parameterized form of nvme_submit_admin_passthru(). This sets up and submits a struct nvme_passthru_cmd.

Known values for opcode are defined in enum nvme_admin_opcode.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_submit_io_passthru64(int fd, struct nvme_passthru_cmd64 *cmd, __u64 *result)

Submit a 64-bit nvme passthrough command

Parameters

int fd
File descriptor of nvme device
struct nvme_passthru_cmd64 *cmd
The nvme io command to send
__u64 *result
Optional field to return the result from the CQE DW0-1

Description

Uses NVME_IOCTL_IO64_CMD for the ioctl request.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_io_passthru64(int fd, __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, __u64 *result)

Submit an nvme io passthrough command

Parameters

int fd
File descriptor of nvme device
__u8 opcode
The nvme io 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
void *metadata
Pointer to user address of the metadata buffer
__u32 timeout_ms
How long the kernel waits for the command to complete
__u64 *result
Optional field to return the result from the CQE dword 0

Description

Parameterized form of nvme_submit_io_passthru64(). This sets up and submits a struct nvme_passthru_cmd64.

Known values for opcode are defined in enum nvme_io_opcode.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_submit_io_passthru(int fd, struct nvme_passthru_cmd *cmd, __u32 *result)

Submit an nvme passthrough command

Parameters

int fd
File descriptor of nvme device
struct nvme_passthru_cmd *cmd
The nvme io command to send
__u32 *result
Optional field to return the result from the CQE DW0

Description

Uses NVME_IOCTL_IO_CMD for the ioctl request.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_io_passthru(int fd, __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 io passthrough command

Parameters

int fd
File descriptor of nvme device
__u8 opcode
The nvme io 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
void *metadata
Pointer to user address of the metadata buffer
__u32 timeout_ms
How long the kernel waits for the command to complete
__u32 *result
Optional field to return the result from the CQE dword 0

Description

Parameterized form of nvme_submit_io_passthru(). This sets up and submits a struct nvme_passthru_cmd.

Known values for opcode are defined in enum nvme_io_opcode.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_subsystem_reset(int fd)

Initiate a subsystem reset

Parameters

int fd
File descriptor of nvme device

Description

This should only be sent to controller handles, not to namespaces.

Return

Zero if a subsystem reset was initiated or -1 with errno set otherwise.

int nvme_ctrl_reset(int fd)

Initiate a controller reset

Parameters

int fd
File descriptor of nvme device

Description

This should only be sent to controller handles, not to namespaces.

Return

0 if a reset was initiated or -1 with errno set otherwise.

int nvme_ns_rescan(int fd)

Initiate a controller rescan

Parameters

int fd
File descriptor of nvme device

Description

This should only be sent to controller handles, not to namespaces.

Return

0 if a rescan was initiated or -1 with errno set otherwise.

int nvme_get_nsid(int fd, __u32 *nsid)

Retrieve the NSID from a namespace file descriptor

Parameters

int fd
File descriptor of nvme namespace
__u32 *nsid
User pointer to namespace id

Description

This should only be sent to namespace handles, not to controllers. The kernel’s interface returns the nsid as the return value. This is unfortunate for many architectures that are incapable of allowing distinguishing a namespace id > 0x80000000 from a negative error number.

Return

0 if nsid was set successfully or -1 with errno set otherwise.

int nvme_identify(struct nvme_identify_args *args)

Send the NVMe Identify command

Parameters

struct nvme_identify_args *args
struct nvme_identify_args argument structure

Description

The Identify command returns a data buffer that describes information about the NVM subsystem, the controller or the namespace(s).

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_ctrl(int fd, struct nvme_id_ctrl *id)

Retrieves nvme identify controller

Parameters

int fd
File descriptor of nvme device
struct nvme_id_ctrl *id
User space destination address to transfer the data,

Description

Sends nvme identify with CNS value NVME_IDENTIFY_CNS_CTRL.

See struct nvme_id_ctrl for details on the data returned.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_ns(int fd, __u32 nsid, struct nvme_id_ns *ns)

Retrieves nvme identify namespace

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace to identify
struct nvme_id_ns *ns
User space destination address to transfer the data

Description

If the Namespace Identifier (NSID) field specifies an active NSID, then the Identify Namespace data structure is returned to the host for that specified namespace.

If the controller supports the Namespace Management capability and the NSID field is set to NVME_NSID_ALL, then the controller returns an Identify Namespace data structure that specifies capabilities that are common across namespaces for this controller.

See struct nvme_id_ns for details on the structure returned.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_allocated_ns(int fd, __u32 nsid, struct nvme_id_ns *ns)

Same as nvme_identify_ns, but only for allocated namespaces

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace to identify
struct nvme_id_ns *ns
User space destination address to transfer the data

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_active_ns_list(int fd, __u32 nsid, struct nvme_ns_list *list)

Retrieves active namespaces id list

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Return namespaces greater than this identifier
struct nvme_ns_list *list
User space destination address to transfer the data

Description

A list of 1024 namespace IDs is returned to the host containing NSIDs in increasing order that are greater than the value specified in the Namespace Identifier (nsid) field of the command.

See struct nvme_ns_list for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_allocated_ns_list(int fd, __u32 nsid, struct nvme_ns_list *list)

Retrieves allocated namespace id list

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Return namespaces greater than this identifier
struct nvme_ns_list *list
User space destination address to transfer the data

Description

A list of 1024 namespace IDs is returned to the host containing NSIDs in increasing order that are greater than the value specified in the Namespace Identifier (nsid) field of the command.

See struct nvme_ns_list for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_ctrl_list(int fd, __u16 cntid, struct nvme_ctrl_list *cntlist)

Retrieves identify controller list

Parameters

int fd
File descriptor of nvme device
__u16 cntid
Starting CNTLID to return in the list
struct nvme_ctrl_list *cntlist
User space destination address to transfer the data

Description

Up to 2047 controller identifiers is returned containing a controller identifier greater than or equal to the controller identifier specified in cntid.

See struct nvme_ctrl_list for a definition of the structure returned.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_nsid_ctrl_list(int fd, __u32 nsid, __u16 cntid, struct nvme_ctrl_list *cntlist)

Retrieves controller list attached to an nsid

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Return controllers that are attached to this nsid
__u16 cntid
Starting CNTLID to return in the list
struct nvme_ctrl_list *cntlist
User space destination address to transfer the data

Description

Up to 2047 controller identifiers are returned containing a controller identifier greater than or equal to the controller identifier specified in cntid attached to nsid.

See struct nvme_ctrl_list for a definition of the structure returned.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1

int nvme_identify_ns_descs(int fd, __u32 nsid, struct nvme_ns_id_desc *descs)

Retrieves namespace descriptor list

Parameters

int fd
File descriptor of nvme device
__u32 nsid
The namespace id to retrieve descriptors
struct nvme_ns_id_desc *descs
User space destination address to transfer the data

Description

A list of Namespace Identification Descriptor structures is returned to the host for the namespace specified in the Namespace Identifier (NSID) field if it is an active NSID.

The data returned is in the form of an array of ‘struct nvme_ns_id_desc’.

See struct nvme_ns_id_desc for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_nvmset_list(int fd, __u16 nvmsetid, struct nvme_id_nvmset_list *nvmset)

Retrieves NVM Set List

Parameters

int fd
File descriptor of nvme device
__u16 nvmsetid
NVM Set Identifier
struct nvme_id_nvmset_list *nvmset
User space destination address to transfer the data

Description

Retrieves an NVM Set List, struct nvme_id_nvmset_list. The data structure is an ordered list by NVM Set Identifier, starting with the first NVM Set Identifier supported by the NVM subsystem that is equal to or greater than the NVM Set Identifier.

See struct nvme_id_nvmset_list for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_primary_ctrl(int fd, __u16 cntid, struct nvme_primary_ctrl_cap *cap)

Retrieve NVMe Primary Controller identification

Parameters

int fd
File descriptor of nvme device
__u16 cntid
Return controllers starting at this identifier
struct nvme_primary_ctrl_cap *cap
User space destination buffer address to transfer the data

Description

See struct nvme_primary_ctrl_cap for the definition of the returned structure, cap.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_secondary_ctrl_list(int fd, __u32 nsid, __u16 cntid, struct nvme_secondary_ctrl_list *sc_list)

Retrieves secondary controller list

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace identifier
__u16 cntid
Return controllers starting at this identifier
struct nvme_secondary_ctrl_list *sc_list
User space destination address to transfer the data

Description

A Secondary Controller List is returned to the host for up to 127 secondary controllers associated with the primary controller processing this command. The list contains entries for controller identifiers greater than or equal to the value specified in the Controller Identifier (cntid).

See struct nvme_secondary_ctrls_list for a definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_ns_granularity(int fd, struct nvme_id_ns_granularity_list *gr_list)

Retrieves namespace granularity identification

Parameters

int fd
File descriptor of nvme device
struct nvme_id_ns_granularity_list *gr_list
User space destination address to transfer the data

Description

If the controller supports reporting of Namespace Granularity, then a Namespace Granularity List is returned to the host for up to sixteen namespace granularity descriptors

See struct nvme_id_ns_granularity_list for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_uuid(int fd, struct nvme_id_uuid_list *uuid_list)

Retrieves device’s UUIDs

Parameters

int fd
File descriptor of nvme device
struct nvme_id_uuid_list *uuid_list
User space destination address to transfer the data

Description

Each UUID List entry is either 0h, the NVMe Invalid UUID, or a valid UUID. Valid UUIDs are those which are non-zero and are not the NVMe Invalid UUID.

See struct nvme_id_uuid_list for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_ns_csi(int fd, __u32 nsid, __u8 uuidx, enum nvme_csi csi, void *data)

I/O command set specific identify namespace data

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace to identify
__u8 uuidx
UUID Index for differentiating vendor specific encoding
enum nvme_csi csi
Command Set Identifier
void *data
User space destination address to transfer the data

Description

An I/O Command Set specific Identify Namespace data structure is returned for the namespace specified in nsid.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_ctrl_csi(int fd, enum nvme_csi csi, void *data)

I/O command set specific Identify Controller data

Parameters

int fd
File descriptor of nvme device
enum nvme_csi csi
Command Set Identifier
void *data
User space destination address to transfer the data

Description

An I/O Command Set specific Identify Controller data structure is returned to the host for the controller processing the command. The specific Identify Controller data structure to be returned is specified by csi.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_active_ns_list_csi(int fd, __u32 nsid, enum nvme_csi csi, struct nvme_ns_list *ns_list)

Active namespace ID list associated with a specified I/O command set

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Return namespaces greater than this identifier
enum nvme_csi csi
Command Set Identifier
struct nvme_ns_list *ns_list
User space destination address to transfer the data

Description

A list of 1024 namespace IDs is returned to the host containing active NSIDs in increasing order that are greater than the value specified in the Namespace Identifier (nsid) field of the command and matching the I/O Command Set specified in the csi argument.

See struct nvme_ns_list for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_allocated_ns_list_csi(int fd, __u32 nsid, enum nvme_csi csi, struct nvme_ns_list *ns_list)

Allocated namespace ID list associated with a specified I/O command set

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Return namespaces greater than this identifier
enum nvme_csi csi
Command Set Identifier
struct nvme_ns_list *ns_list
User space destination address to transfer the data

Description

A list of 1024 namespace IDs is returned to the host containing allocated NSIDs in increasing order that are greater than the value specified in the nsid field of the command and matching the I/O Command Set specified in the csi argument.

See struct nvme_ns_list for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_independent_identify_ns(int fd, __u32 nsid, struct nvme_id_independent_id_ns *ns)

I/O command set independent Identify namespace data

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Return namespaces greater than this identifier
struct nvme_id_independent_id_ns *ns
I/O Command Set Independent Identify Namespace data structure

Description

The I/O command set independent Identify namespace data structure for the namespace identified with ns is returned to the host.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_ns_csi_user_data_format(int fd, __u16 user_data_format, __u8 uuidx, enum nvme_csi csi, void *data)

Identify namespace user data format

Parameters

int fd
File descriptor of nvme device
__u16 user_data_format
Return namespaces capability of identifier
__u8 uuidx
UUID selection, if supported
enum nvme_csi csi
Command Set Identifier
void *data
User space destination address to transfer the data

Description

Identify Namespace data structure for the specified User Data Format index containing the namespace capabilities for the NVM Command Set.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_iocs_ns_csi_user_data_format(int fd, __u16 user_data_format, __u8 uuidx, enum nvme_csi csi, void *data)

Identify I/O command set namespace data structure

Parameters

int fd
File descriptor of nvme device
__u16 user_data_format
Return namespaces capability of identifier
__u8 uuidx
UUID selection, if supported
enum nvme_csi csi
Command Set Identifier
void *data
User space destination address to transfer the data

Description

I/O Command Set specific Identify Namespace data structure for the specified User Data Format index containing the namespace capabilities for the I/O Command Set specified in the CSI field.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_nvm_identify_ctrl(int fd, struct nvme_id_ctrl_nvm *id)

Identify controller data

Parameters

int fd
File descriptor of nvme device
struct nvme_id_ctrl_nvm *id
User space destination address to transfer the data

Description

Return an identify controller data structure to the host of processing controller.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_domain_list(int fd, __u16 domid, struct nvme_id_domain_list *list)

Domain list data

Parameters

int fd
File descriptor of nvme device
__u16 domid
Domain ID
struct nvme_id_domain_list *list
User space destination address to transfer data

Description

A list of 31 domain IDs is returned to the host containing domain attributes in increasing order that are greater than the value specified in the domid field.

See struct nvme_identify_domain_attr for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_endurance_group_list(int fd, __u16 endgrp_id, struct nvme_id_endurance_group_list *list)

Endurance group list data

Parameters

int fd
File descriptor of nvme device
__u16 endgrp_id
Endurance group identifier
struct nvme_id_endurance_group_list *list
Array of endurance group identifiers

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_identify_iocs(int fd, __u16 cntlid, struct nvme_id_iocs *iocs)

I/O command set data structure

Parameters

int fd
File descriptor of nvme device
__u16 cntlid
Controller ID
struct nvme_id_iocs *iocs
User space destination address to transfer the data

Description

Retrieves list of the controller’s supported io command set vectors. See struct nvme_id_iocs.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_zns_identify_ns(int fd, __u32 nsid, struct nvme_zns_id_ns *data)

ZNS identify namespace data

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace to identify
struct nvme_zns_id_ns *data
User space destination address to transfer the data

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_zns_identify_ctrl(int fd, struct nvme_zns_id_ctrl *id)

ZNS identify controller data

Parameters

int fd
File descriptor of nvme device
struct nvme_zns_id_ctrl *id
User space destination address to transfer the data

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log(struct nvme_get_log_args *args)

NVMe Admin Get Log command

Parameters

struct nvme_get_log_args *args
struct nvme_get_log_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

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
struct nvme_get_log_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_supported_log_pages(int fd, bool rae, struct nvme_supported_log_pages *log)

Retrieve nmve supported log pages

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
struct nvme_supported_log_pages *log
Array of LID supported and Effects data structures

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_error(int fd, unsigned int nr_entries, bool rae, struct nvme_error_log_page *err_log)

Retrieve nvme error log

Parameters

int fd
File descriptor of nvme device
unsigned int nr_entries
Number of error log entries allocated
bool rae
Retain asynchronous events
struct nvme_error_log_page *err_log
Array of error logs of size ‘entries’

Description

This log page describes extended error information for a command that completed with error, or may report an error that is not specific to a particular command.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_smart(int fd, __u32 nsid, bool rae, struct nvme_smart_log *smart_log)

Retrieve nvme smart log

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Optional namespace identifier
bool rae
Retain asynchronous events
struct nvme_smart_log *smart_log
User address to store the smart log

Description

This log page provides SMART and general health information. The information provided is over the life of the controller and is retained across power cycles. To request the controller log page, the namespace identifier specified is FFFFFFFFh. The controller may also support requesting the log page on a per namespace basis, as indicated by bit 0 of the LPA field in the Identify Controller data structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_fw_slot(int fd, bool rae, struct nvme_firmware_slot *fw_log)

Retrieves the controller firmware log

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
struct nvme_firmware_slot *fw_log
User address to store the log page

Description

This log page describes the firmware revision stored in each firmware slot supported. The firmware revision is indicated as an ASCII string. The log page also indicates the active slot number.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_changed_ns_list(int fd, bool rae, struct nvme_ns_list *ns_log)

Retrieve namespace changed list

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
struct nvme_ns_list *ns_log
User address to store the log page

Description

This log page describes namespaces attached to this controller that have changed since the last time the namespace was identified, been added, or deleted.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_cmd_effects(int fd, enum nvme_csi csi, struct nvme_cmd_effects_log *effects_log)

Retrieve nvme command effects log

Parameters

int fd
File descriptor of nvme device
enum nvme_csi csi
Command Set Identifier
struct nvme_cmd_effects_log *effects_log
User address to store the effects log

Description

This log page describes the commands that the controller supports and the effects of those commands on the state of the NVM subsystem.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_device_self_test(int fd, struct nvme_self_test_log *log)

Retrieve the device self test log

Parameters

int fd
File descriptor of nvme device
struct nvme_self_test_log *log
Userspace address of the log payload

Description

The log page indicates the status of an in progress self test and the percent complete of that operation, and the results of the previous 20 self-test operations.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_create_telemetry_host(int fd, struct nvme_telemetry_log *log)

Create host telemetry log

Parameters

int fd
File descriptor of nvme device
struct nvme_telemetry_log *log
Userspace address of the log payload

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_telemetry_host(int fd, __u64 offset, __u32 len, void *log)

Get Telemetry Host-Initiated log page

Parameters

int fd
File descriptor of nvme device
__u64 offset
Offset into the telemetry data
__u32 len
Length of provided user buffer to hold the log data in bytes
void *log
User address for log page data

Description

Retrieves the Telemetry Host-Initiated log page at the requested offset using the previously existing capture.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_telemetry_ctrl(int fd, bool rae, __u64 offset, __u32 len, void *log)

Get Telemetry Controller-Initiated log page

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
__u64 offset
Offset into the telemetry data
__u32 len
Length of provided user buffer to hold the log data in bytes
void *log
User address for log page data

Description

Retrieves the Telemetry Controller-Initiated log page at the requested offset using the previously existing capture.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_endurance_group(int fd, __u16 endgid, struct nvme_endurance_group_log *log)

Get Endurance Group log

Parameters

int fd
File descriptor of nvme device
__u16 endgid
Starting group identifier to return in the list
struct nvme_endurance_group_log *log
User address to store the endurance log

Description

This log page indicates if an Endurance Group Event has occurred for a particular Endurance Group. If an Endurance Group Event has occurred, the details of the particular event are included in the Endurance Group Information log page for that Endurance Group. An asynchronous event is generated when an entry for an Endurance Group is newly added to this log page.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_predictable_lat_nvmset(int fd, __u16 nvmsetid, struct nvme_nvmset_predictable_lat_log *log)

Predictable Latency Per NVM Set

Parameters

int fd
File descriptor of nvme device
__u16 nvmsetid
NVM set id
struct nvme_nvmset_predictable_lat_log *log
User address to store the predictable latency log

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_predictable_lat_event(int fd, bool rae, __u32 offset, __u32 len, void *log)

Retrieve Predictable Latency Event Aggregate Log Page

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
__u32 offset
Offset into the predictable latency event
__u32 len
Length of provided user buffer to hold the log data in bytes
void *log
User address for log page data

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

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
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
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
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
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

Parameters

int fd
File descriptor of nvme device
enum nvme_log_ana_lsp lsp
Log specific, see enum nvme_get_log_ana_lsp
bool rae
Retain asynchronous events
__u64 offset
Offset to the start of the log page
__u32 len
The allocated length of the log page
void *log
User address to store the ana log

Description

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 struct nvme_ana_rsp_hdr for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_ana_groups(int fd, bool rae, __u32 len, struct nvme_ana_group_desc *log)

Retrieve Asymmetric Namespace Access groups only log page

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
__u32 len
The allocated length of the log page
struct nvme_ana_group_desc *log
User address to store the ana group log

Description

See struct nvme_ana_group_desc for the definition of the returned structure.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_lba_status(int fd, bool rae, __u64 offset, __u32 len, void *log)

Retrieve LBA Status

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
__u64 offset
Offset to the start of the log page
__u32 len
The allocated length of the log page
void *log
User address to store the log page

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_endurance_grp_evt(int fd, bool rae, __u32 offset, __u32 len, void *log)

Retrieve Rotational Media Information

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
__u32 offset
Offset to the start of the log page
__u32 len
The allocated length of the log page
void *log
User address to store the log page

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_fid_supported_effects(int fd, bool rae, struct nvme_fid_supported_effects_log *log)

Retrieve Feature Identifiers Supported and Effects

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
struct nvme_fid_supported_effects_log *log
FID Supported and Effects data structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise

int nvme_get_log_mi_cmd_supported_effects(int fd, bool rae, struct nvme_mi_cmd_supported_effects_log *log)

displays the MI Commands Supported by the controller

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
struct nvme_mi_cmd_supported_effects_log *log
MI Command Supported and Effects data structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise

int nvme_get_log_boot_partition(int fd, bool rae, __u8 lsp, __u32 len, struct nvme_boot_partition *part)

Retrieve Boot Partition

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
__u8 lsp
The log specified field of LID
__u32 len
The allocated size, minimum struct nvme_boot_partition
struct nvme_boot_partition *part
User address to store the log page

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise

int nvme_get_log_discovery(int fd, bool rae, __u32 offset, __u32 len, void *log)

Retrieve Discovery log page

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
__u32 offset
Offset of this log to retrieve
__u32 len
The allocated size for this portion of the log
void *log
User address to store the discovery log

Description

Supported only by fabrics discovery controllers, returning discovery records.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_media_unit_stat(int fd, __u16 domid, struct nvme_media_unit_stat_log *mus)

Retrieve Media Unit Status

Parameters

int fd
File descriptor of nvme device
__u16 domid
Domain Identifier selection, if supported
struct nvme_media_unit_stat_log *mus
User address to store the Media Unit statistics log

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise

int nvme_get_log_support_cap_config_list(int fd, __u16 domid, struct nvme_supported_cap_config_list_log *cap)

Retrieve Supported Capacity Configuration List

Parameters

int fd
File descriptor of nvme device
__u16 domid
Domain Identifier selection, if supported
struct nvme_supported_cap_config_list_log *cap
User address to store supported capabilities config list

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise

int nvme_get_log_reservation(int fd, bool rae, struct nvme_resv_notification_log *log)

Retrieve Reservation Notification

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
struct nvme_resv_notification_log *log
User address to store the reservation log

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise

int nvme_get_log_sanitize(int fd, bool rae, struct nvme_sanitize_log_page *log)

Retrieve Sanitize Status

Parameters

int fd
File descriptor of nvme device
bool rae
Retain asynchronous events
struct nvme_sanitize_log_page *log
User address to store the sanitize log

Description

The Sanitize Status log page reports sanitize operation time estimates and information about the most recent sanitize operation.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_zns_changed_zones(int fd, __u32 nsid, bool rae, struct nvme_zns_changed_zone_log *log)

Retrieve list of zones that have changed

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
bool rae
Retain asynchronous events
struct nvme_zns_changed_zone_log *log
User address to store the changed zone log

Description

The list of zones that have changed state due to an exceptional event.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_log_persistent_event(int fd, enum nvme_pevent_log_action action, __u32 size, void *pevent_log)

Retrieve Persistent Event Log

Parameters

int fd
File descriptor of nvme device
enum nvme_pevent_log_action action
Action the controller should take during processing this command
__u32 size
Size of pevent_log
void *pevent_log
User address to store the persistent event log

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features(struct nvme_set_features_args *args)

Set a feature attribute

Parameters

struct nvme_set_features_args *args
struct nvme_set_features_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_data(int fd, __u8 fid, __u32 nsid, __u32 cdw11, bool save, __u32 data_len, void *data, __u32 *result)

Helper function for nvme_set_features()

Parameters

int fd
File descriptor of nvme device
__u8 fid
Feature identifier
__u32 nsid
Namespace ID, if applicable
__u32 cdw11
Value to set the feature to
bool save
Save value across power states
__u32 data_len
Length of feature data, if applicable, in bytes
void *data
User address of feature data, if applicable
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_simple(int fd, __u8 fid, __u32 nsid, __u32 cdw11, bool save, __u32 *result)

Helper function for nvme_set_features()

Parameters

int fd
File descriptor of nvme device
__u8 fid
Feature identifier
__u32 nsid
Namespace ID, if applicable
__u32 cdw11
Value to set the feature to
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_arbitration(int fd, __u8 ab, __u8 lpw, __u8 mpw, __u8 hpw, bool save, __u32 *result)

Set arbitration features

Parameters

int fd
File descriptor of nvme device
__u8 ab
Arbitration Burst
__u8 lpw
Low Priority Weight
__u8 mpw
Medium Priority Weight
__u8 hpw
High Priority Weight
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_power_mgmt(int fd, __u8 ps, __u8 wh, bool save, __u32 *result)

Set power management feature

Parameters

int fd
File descriptor of nvme device
__u8 ps
Power State
__u8 wh
Workload Hint
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_lba_range(int fd, __u32 nsid, __u32 nr_ranges, bool save, struct nvme_lba_range_type *data, __u32 *result)

Set LBA range feature

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
__u32 nr_ranges
Number of ranges in data
bool save
Save value across power states
struct nvme_lba_range_type *data
User address of feature data
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_temp_thresh(int fd, __u16 tmpth, __u8 tmpsel, enum nvme_feat_tmpthresh_thsel thsel, bool save, __u32 *result)

Set temperature threshold feature

Parameters

int fd
File descriptor of nvme device
__u16 tmpth
Temperature Threshold
__u8 tmpsel
Threshold Temperature Select
enum nvme_feat_tmpthresh_thsel thsel
Threshold Type Select
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_err_recovery(int fd, __u32 nsid, __u16 tler, bool dulbe, bool save, __u32 *result)

Set error recovery feature

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
__u16 tler
Time-limited error recovery value
bool dulbe
Deallocated or Unwritten Logical Block Error Enable
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_volatile_wc(int fd, bool wce, bool save, __u32 *result)

Set volatile write cache feature

Parameters

int fd
File descriptor of nvme device
bool wce
Write cache enable
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_irq_coalesce(int fd, __u8 thr, __u8 time, bool save, __u32 *result)

Set IRQ coalesce feature

Parameters

int fd
File descriptor of nvme device
__u8 thr
Aggregation Threshold
__u8 time
Aggregation Time
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_irq_config(int fd, __u16 iv, bool cd, bool save, __u32 *result)

Set IRQ config feature

Parameters

int fd
File descriptor of nvme device
__u16 iv
Interrupt Vector
bool cd
Coalescing Disable
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_write_atomic(int fd, bool dn, bool save, __u32 *result)

Set write atomic feature

Parameters

int fd
File descriptor of nvme device
bool dn
Disable Normal
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_async_event(int fd, __u32 events, bool save, __u32 *result)

Set asynchronous event feature

Parameters

int fd
File descriptor of nvme device
__u32 events
Events to enable
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_auto_pst(int fd, bool apste, bool save, struct nvme_feat_auto_pst *apst, __u32 *result)

Set autonomous power state feature

Parameters

int fd
File descriptor of nvme device
bool apste
Autonomous Power State Transition Enable
bool save
Save value across power states
struct nvme_feat_auto_pst *apst
Autonomous Power State Transition
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_timestamp(int fd, bool save, __u64 timestamp)

Set timestamp feature

Parameters

int fd
File descriptor of nvme device
bool save
Save value across power states
__u64 timestamp
The current timestamp value to assign to this feature

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_hctm(int fd, __u16 tmt2, __u16 tmt1, bool save, __u32 *result)

Set thermal management feature

Parameters

int fd
File descriptor of nvme device
__u16 tmt2
Thermal Management Temperature 2
__u16 tmt1
Thermal Management Temperature 1
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_nopsc(int fd, bool noppme, bool save, __u32 *result)

Set non-operational power state feature

Parameters

int fd
File descriptor of nvme device
bool noppme
Non-Operational Power State Permissive Mode Enable
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_rrl(int fd, __u8 rrl, __u16 nvmsetid, bool save, __u32 *result)

Set read recovery level feature

Parameters

int fd
File descriptor of nvme device
__u8 rrl
Read recovery level setting
__u16 nvmsetid
NVM set id
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_plm_config(int fd, bool enable, __u16 nvmsetid, bool save, struct nvme_plm_config *data, __u32 *result)

Set predictable latency feature

Parameters

int fd
File descriptor of nvme device
bool enable
Predictable Latency Enable
__u16 nvmsetid
NVM Set Identifier
bool save
Save value across power states
struct nvme_plm_config *data
Pointer to structure nvme_plm_config
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_plm_window(int fd, enum nvme_feat_plm_window_select sel, __u16 nvmsetid, bool save, __u32 *result)

Set window select feature

Parameters

int fd
File descriptor of nvme device
enum nvme_feat_plm_window_select sel
Window Select
__u16 nvmsetid
NVM Set Identifier
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_lba_sts_interval(int fd, __u16 lsiri, __u16 lsipi, bool save, __u32 *result)

Set LBA status information feature

Parameters

int fd
File descriptor of nvme device
__u16 lsiri
LBA Status Information Report Interval
__u16 lsipi
LBA Status Information Poll Interval
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_host_behavior(int fd, bool save, struct nvme_feat_host_behavior *data)

Set host behavior feature

Parameters

int fd
File descriptor of nvme device
bool save
Save value across power states
struct nvme_feat_host_behavior *data
Pointer to structure nvme_feat_host_behavior

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_sanitize(int fd, bool nodrm, bool save, __u32 *result)

Set sanitize feature

Parameters

int fd
File descriptor of nvme device
bool nodrm
No-Deallocate Response Mode
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_endurance_evt_cfg(int fd, __u16 endgid, __u8 egwarn, bool save, __u32 *result)

Set endurance event config feature

Parameters

int fd
File descriptor of nvme device
__u16 endgid
Endurance Group Identifier
__u8 egwarn
Flags to enable warning, see enum nvme_eg_critical_warning_flags
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_sw_progress(int fd, __u8 pbslc, bool save, __u32 *result)

Set pre-boot software load count feature

Parameters

int fd
File descriptor of nvme device
__u8 pbslc
Pre-boot Software Load Count
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_host_id(int fd, bool exhid, bool save, __u8 *hostid)

Set enable extended host identifiers feature

Parameters

int fd
File descriptor of nvme device
bool exhid
Enable Extended Host Identifier
bool save
Save value across power states
__u8 *hostid
Host ID to set

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_resv_mask(int fd, __u32 mask, bool save, __u32 *result)

Set reservation notification mask feature

Parameters

int fd
File descriptor of nvme device
__u32 mask
Reservation Notification Mask Field
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_resv_persist(int fd, bool ptpl, bool save, __u32 *result)

Set persist through power loss feature

Parameters

int fd
File descriptor of nvme device
bool ptpl
Persist Through Power Loss
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_features_write_protect(int fd, enum nvme_feat_nswpcfg_state state, bool save, __u32 *result)

Set write protect feature

Parameters

int fd
File descriptor of nvme device
enum nvme_feat_nswpcfg_state state
Write Protection State
bool save
Save value across power states
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features(struct nvme_get_features_args *args)

Retrieve a feature attribute

Parameters

struct nvme_get_features_args *args
struct nvme_get_features_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_data(int fd, enum nvme_features_id fid, __u32 nsid, __u32 data_len, void *data, __u32 *result)

Helper function for nvme_get_features()

Parameters

int fd
File descriptor of nvme device
enum nvme_features_id fid
Feature identifier
__u32 nsid
Namespace ID, if applicable
__u32 data_len
Length of feature data, if applicable, in bytes
void *data
User address of feature data, if applicable
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_simple(int fd, enum nvme_features_id fid, __u32 nsid, __u32 *result)

Helper function for nvme_get_features()

Parameters

int fd
File descriptor of nvme device
enum nvme_features_id fid
Feature identifier
__u32 nsid
Namespace ID, if applicable
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_arbitration(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get arbitration feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_power_mgmt(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get power management feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_lba_range(int fd, enum nvme_get_features_sel sel, struct nvme_lba_range_type *data, __u32 *result)

Get LBA range feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
struct nvme_lba_range_type *data
User address of feature data, if applicable
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_temp_thresh(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get temperature threshold feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_err_recovery(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get error recovery feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_volatile_wc(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get volatile write cache feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_num_queues(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get number of queues feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_irq_coalesce(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get IRQ coalesce feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_irq_config(int fd, enum nvme_get_features_sel sel, __u16 iv, __u32 *result)

Get IRQ config feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel

__u16 iv

__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_write_atomic(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get write atomic feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_async_event(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get asynchronous event feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_auto_pst(int fd, enum nvme_get_features_sel sel, struct nvme_feat_auto_pst *apst, __u32 *result)

Get autonomous power state feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel

struct nvme_feat_auto_pst *apst

__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_host_mem_buf(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get host memory buffer feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_timestamp(int fd, enum nvme_get_features_sel sel, struct nvme_timestamp *ts)

Get timestamp feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
struct nvme_timestamp *ts
Current timestamp

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_kato(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get keep alive timeout feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_hctm(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get thermal management feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_nopsc(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get non-operational power state feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_rrl(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get read recovery level feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_plm_config(int fd, enum nvme_get_features_sel sel, __u16 nvmsetid, struct nvme_plm_config *data, __u32 *result)

Get predictable latency feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u16 nvmsetid
NVM set id

struct nvme_plm_config *data

__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_plm_window(int fd, enum nvme_get_features_sel sel, __u16 nvmsetid, __u32 *result)

Get window select feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u16 nvmsetid
NVM set id
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_lba_sts_interval(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get LBA status information feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_host_behavior(int fd, enum nvme_get_features_sel sel, struct nvme_feat_host_behavior *data, __u32 *result)

Get host behavior feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
struct nvme_feat_host_behavior *data
Pointer to structure nvme_feat_host_behavior
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_sanitize(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get sanitize feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_endurance_event_cfg(int fd, enum nvme_get_features_sel sel, __u16 endgid, __u32 *result)

Get endurance event config feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u16 endgid
Endurance Group Identifier
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_sw_progress(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get software progress feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_host_id(int fd, enum nvme_get_features_sel sel, bool exhid, __u32 len, __u8 *hostid)

Get host id feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
bool exhid
Enable Extended Host Identifier
__u32 len
Length of hostid
__u8 *hostid
Buffer for returned host ID

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_resv_mask(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get reservation mask feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_resv_persist(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get reservation persist feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_write_protect(int fd, __u32 nsid, enum nvme_get_features_sel sel, __u32 *result)

Get write protect feature

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_features_iocs_profile(int fd, enum nvme_get_features_sel sel, __u32 *result)

Get IOCS profile feature

Parameters

int fd
File descriptor of nvme device
enum nvme_get_features_sel sel
Select which type of attribute to return, see enum nvme_get_features_sel
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_format_nvm(struct nvme_format_nvm_args *args)

Format nvme namespace(s)

Parameters

struct nvme_format_nvm_args *args
struct nvme_format_nvme_args argument structure

Description

The Format NVM command low level formats the NVM media. This command is used by the host to change the LBA data size and/or metadata size. A low level format may destroy all data and metadata associated with all namespaces or only the specific namespace associated with the command

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_ns_mgmt(struct nvme_ns_mgmt_args *args)

Issue a Namespace management command

Parameters

struct nvme_ns_mgmt_args *args
struct nvme_ns_mgmt_args Argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_ns_mgmt_create(int fd, struct nvme_id_ns *ns, __u32 *nsid, __u32 timeout, __u8 csi)

Create a non attached namespace

Parameters

int fd
File descriptor of nvme device
struct nvme_id_ns *ns
Namespace identification that defines ns creation parameters
__u32 *nsid
On success, set to the namespace id that was created
__u32 timeout
Override the default timeout to this value in milliseconds; set to 0 to use the system default.
__u8 csi
Command Set Identifier

Description

On successful creation, the namespace exists in the subsystem, but is not attached to any controller. Use the nvme_ns_attach_ctrls() to assign the namespace to one or more controllers.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_ns_mgmt_delete(int fd, __u32 nsid)

Delete a non attached namespace

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace identifier to delete

Description

It is recommended that a namespace being deleted is not attached to any controller. Use the nvme_ns_detach_ctrls() first if the namespace is still attached.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_ns_attach(struct nvme_ns_attach_args *args)

Attach or detach namespace to controller(s)

Parameters

struct nvme_ns_attach_args *args
struct nvme_ns_attach_args Argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_ns_attach_ctrls(int fd, __u32 nsid, struct nvme_ctrl_list *ctrlist)

Attach namespace to controllers

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID to attach
struct nvme_ctrl_list *ctrlist
Controller list to modify attachment state of nsid

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_ns_detach_ctrls(int fd, __u32 nsid, struct nvme_ctrl_list *ctrlist)

Detach namespace from controllers

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID to detach
struct nvme_ctrl_list *ctrlist
Controller list to modify attachment state of nsid

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_fw_download(struct nvme_fw_download_args *args)

Download part or all of a firmware image to the controller

Parameters

struct nvme_fw_download_args *args
struct nvme_fw_download_args argument structure

Description

The Firmware Image Download command downloads all or a portion of an image for a future update to the controller. The Firmware Image Download command downloads a new image (in whole or in part) to the controller.

The image may be constructed of multiple pieces that are individually downloaded with separate Firmware Image Download commands. Each Firmware Image Download command includes a Dword Offset and Number of Dwords that specify a dword range.

The new firmware image is not activated as part of the Firmware Image Download command. Use the nvme_fw_commit() to activate a newly downloaded image.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_fw_commit(struct nvme_fw_commit_args *args)

Commit firmware using the specified action

Parameters

struct nvme_fw_commit_args *args
struct nvme_fw_commit_args argument structure

Description

The Firmware Commit command modifies the firmware image or Boot Partitions.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise. The command status response may specify additional reset actions required to complete the commit process.

int nvme_security_send(struct nvme_security_send_args *args)

Security Send command

Parameters

struct nvme_security_send_args *args
struct nvme_security_send argument structure

Description

The Security Send command transfers security protocol data to the controller. The data structure transferred to the controller as part of this command contains security protocol specific commands to be performed by the controller. The data structure transferred may also contain data or parameters associated with the security protocol commands.

The security data is protocol specific and is not defined by the NVMe specification.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_security_receive(struct nvme_security_receive_args *args)

Security Receive command

Parameters

struct nvme_security_receive_args *args
struct nvme_security_receive argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_lba_status(struct nvme_get_lba_status_args *args)

Retrieve information on possibly unrecoverable LBAs

Parameters

struct nvme_get_lba_status_args *args
struct nvme_get_lba_status_args argument structure

Description

The Get LBA Status command requests information about Potentially Unrecoverable LBAs. Refer to the specification for action type descriptions.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_directive_send(struct nvme_directive_send_args *args)

Send directive command

Parameters

struct nvme_directive_send_args *args
struct nvme_directive_send_args argument structure

Description

Directives is a mechanism to enable host and NVM subsystem or controller information exchange. The Directive Send command transfers data related to a specific Directive Type from the host to the controller.

See the NVMe specification for more information.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_directive_send_id_endir(int fd, __u32 nsid, bool endir, enum nvme_directive_dtype dtype, struct nvme_id_directives *id)

Directive Send Enable Directive

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace Identifier
bool endir
Enable Directive
enum nvme_directive_dtype dtype
Directive Type
struct nvme_id_directives *id
Pointer to structure nvme_id_directives

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_directive_send_stream_release_identifier(int fd, __u32 nsid, __u16 stream_id)

Directive Send Stream release

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
__u16 stream_id
Stream identifier

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_directive_send_stream_release_resource(int fd, __u32 nsid)

Directive Send Stream release resources

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_directive_recv(struct nvme_directive_recv_args *args)

Receive directive specific data

Parameters

struct nvme_directive_recv_args *args
struct nvme_directive_recv_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_directive_recv_identify_parameters(int fd, __u32 nsid, struct nvme_id_directives *id)

Directive receive identifier parameters

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
struct nvme_id_directives *id
Identify parameters buffer

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_directive_recv_stream_parameters(int fd, __u32 nsid, struct nvme_streams_directive_params *parms)

Directive receive stream parameters

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
struct nvme_streams_directive_params *parms
Streams directive parameters buffer

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_directive_recv_stream_status(int fd, __u32 nsid, unsigned int nr_entries, struct nvme_streams_directive_status *id)

Directive receive stream status

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
unsigned int nr_entries
Number of streams to receive
struct nvme_streams_directive_status *id
Stream status buffer

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_directive_recv_stream_allocate(int fd, __u32 nsid, __u16 nsr, __u32 *result)

Directive receive stream allocate

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
__u16 nsr
Namespace Streams Requested
__u32 *result
If successful, the CQE dword0 value

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_capacity_mgmt(struct nvme_capacity_mgmt_args *args)

Capacity management command

Parameters

struct nvme_capacity_mgmt_args *args
struct nvme_capacity_mgmt_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_lockdown(struct nvme_lockdown_args *args)

Issue lockdown command

Parameters

struct nvme_lockdown_args *args
struct nvme_lockdown_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_set_property(struct nvme_set_property_args *args)

Set controller property

Parameters

struct nvme_set_property_args *args
struct nvme_set_property_args argument structure

Description

This is an NVMe-over-Fabrics specific command, not applicable to PCIe. These properties align to the PCI MMIO controller registers.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_get_property(struct nvme_get_property_args *args)

Get a controller property

Parameters

struct nvme_get_property_args *args
struct nvme_get_propert_args argument structure

Description

This is an NVMe-over-Fabrics specific command, not applicable to PCIe. These properties align to the PCI MMIO controller registers.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_sanitize_nvm(struct nvme_sanitize_nvm_args *args)

Start a sanitize operation

Parameters

struct nvme_sanitize_nvm_args *args
struct nvme_sanitize_nvm_args argument structure

Description

A sanitize operation alters all user data in the NVM subsystem such that recovery of any previous user data from any cache, the non-volatile media, or any Controller Memory Buffer is not possible.

The Sanitize command starts a sanitize operation or to recover from a previously failed sanitize operation. The sanitize operation types that may be supported are Block Erase, Crypto Erase, and Overwrite. All sanitize operations are processed in the background, i.e., completion of the sanitize command does not indicate completion of the sanitize operation.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_dev_self_test(struct nvme_dev_self_test_args *args)

Start or abort a self test

Parameters

struct nvme_dev_self_test_args *args
struct nvme_dev_self_test argument structure

Description

The Device Self-test command starts a device self-test operation or abort a device self-test operation. A device self-test operation is a diagnostic testing sequence that tests the integrity and functionality of the 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 namespaces in the test. Set to 0xffffffff to test all namespaces. All other values tests a specific namespace, if present.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_virtual_mgmt(struct nvme_virtual_mgmt_args *args)

Virtualization resource management

Parameters

struct nvme_virtual_mgmt_args *args
struct nvme_virtual_mgmt_args argument structure

Description

The Virtualization Management command is supported by primary controllers that support the Virtualization Enhancements capability. This command is used for several functions:

  • Modifying Flexible Resource allocation for the primary controller
  • Assigning Flexible Resources for secondary controllers
  • Setting the Online and Offline state for secondary controllers

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_flush(int fd, __u32 nsid)

Send an nvme flush command

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace identifier

Description

The Flush command requests that the contents of volatile write cache be made non-volatile.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_io(struct nvme_io_args *args, __u8 opcode)

Submit an nvme user I/O command

Parameters

struct nvme_io_args *args
struct nvme_io_args argument structure
__u8 opcode
Opcode to execute

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_read(struct nvme_io_args *args)

Submit an nvme user read command

Parameters

struct nvme_io_args *args
struct nvme_io_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_write(struct nvme_io_args *args)

Submit an nvme user write command

Parameters

struct nvme_io_args *args
struct nvme_io_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_compare(struct nvme_io_args *args)

Submit an nvme user compare command

Parameters

struct nvme_io_args *args
struct nvme_io_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_write_zeros(struct nvme_io_args *args)

Submit an nvme write zeroes command

Parameters

struct nvme_io_args *args
struct nvme_io_args argument structure

Description

The Write Zeroes command sets a range of logical blocks to zero. After successful completion of this command, the value returned by subsequent reads of logical blocks in this range shall be all bytes cleared to 0h until a write occurs to this LBA range.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_write_uncorrectable(struct nvme_io_args *args)

Submit an nvme write uncorrectable command

Parameters

struct nvme_io_args *args
struct nvme_io_args argument structure

Description

The Write Uncorrectable command marks a range of logical blocks as invalid. When the specified logical block(s) are read after this operation, a failure is returned with Unrecovered Read Error status. To clear the invalid logical block status, a write operation on those logical blocks is required.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_verify(struct nvme_io_args *args)

Send an nvme verify command

Parameters

struct nvme_io_args *args
struct nvme_io_args argument structure

Description

The Verify command verifies integrity of stored information by reading data and metadata, if applicable, for the LBAs indicated without transferring any data or metadata to the host.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_dsm(struct nvme_dsm_args *args)

Send an nvme data set management command

Parameters

struct nvme_dsm_args *args
struct nvme_dsm_args argument structure

Description

The Dataset Management command is used by the host to indicate attributes for ranges of logical blocks. This includes attributes like frequency that data is read or written, access size, and other information that may be used to optimize performance and reliability, and may be used to deallocate/unmap/trim those logical blocks.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_copy(struct nvme_copy_args *args)

Copy command

Parameters

struct nvme_copy_args *args
struct nvme_copy_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_resv_acquire(struct nvme_resv_acquire_args *args)

Send an nvme reservation acquire

Parameters

struct nvme_resv_acquire_args *args
struct nvme_resv_acquire argument structure

Description

The Reservation Acquire command acquires a reservation on a namespace, preempt a reservation held on a namespace, and abort a reservation held on a namespace.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_resv_register(struct nvme_resv_register_args *args)

Send an nvme reservation register

Parameters

struct nvme_resv_register_args *args
struct nvme_resv_register_args argument structure

Description

The Reservation Register command registers, unregisters, or replaces a reservation key.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_resv_release(struct nvme_resv_release_args *args)

Send an nvme reservation release

Parameters

struct nvme_resv_release_args *args
struct nvme_resv_release_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_resv_report(struct nvme_resv_report_args *args)

Send an nvme reservation report

Parameters

struct nvme_resv_report_args *args
struct nvme_resv_report_args argument structure

Description

Returns a Reservation Status data structure to memory that describes the registration and reservation status of a namespace. See the definition for the returned structure, struct nvme_reservation_status, for more details.

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

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
struct nvme_io_mgmt_recv_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

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 enum nvme_status_field) or -1 with errno set otherwise.

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
struct nvme_io_mgmt_send_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

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 enum nvme_status_field) or -1 with errno set otherwise.

int nvme_zns_mgmt_send(struct nvme_zns_mgmt_send_args *args)

ZNS management send command

Parameters

struct nvme_zns_mgmt_send_args *args
struct nvme_zns_mgmt_send_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_zns_mgmt_recv(struct nvme_zns_mgmt_recv_args *args)

ZNS management receive command

Parameters

struct nvme_zns_mgmt_recv_args *args
struct nvme_zns_mgmt_recv_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_zns_report_zones(int fd, __u32 nsid, __u64 slba, enum nvme_zns_report_options opts, bool extended, bool partial, __u32 data_len, void *data, __u32 timeout, __u32 *result)

Return the list of zones

Parameters

int fd
File descriptor of nvme device
__u32 nsid
Namespace ID
__u64 slba
Starting LBA
enum nvme_zns_report_options opts
Reporting options
bool extended
Extended report
bool partial
Partial report requested
__u32 data_len
Length of the data buffer
void *data
Userspace address of the report zones data
__u32 timeout
timeout in ms
__u32 *result
The command completion result from CQE dword0

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_zns_append(struct nvme_zns_append_args *args)

Append data to a zone

Parameters

struct nvme_zns_append_args *args
struct nvme_zns_append_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.

int nvme_dim_send(struct nvme_dim_args *args)

Send a Discovery Information Management (DIM) command

Parameters

struct nvme_dim_args *args
struct nvme_dim_args argument structure

Return

The nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise.