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

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, __u16 cntid, struct nvme_secondary_ctrl_list *sc_list)

Retrieves secondary controller list

Parameters

int fd

File descriptor of nvme device

__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_log 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_log *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_log *log

User address to store the ana group log

Description

See struct nvme_ana_log 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_ana_log_atomic(int fd, bool rgo, bool rae, unsigned int retries, struct nvme_ana_log *log, __u32 *len)

Retrieve Asymmetric Namespace Access log page atomically

Parameters

int fd

File descriptor of nvme device

bool rgo

Whether to retrieve ANA groups only (no NSIDs)

bool rae

Whether to retain asynchronous events

unsigned int retries

The maximum number of times to retry on log page changes

struct nvme_ana_log *log

Pointer to a buffer to receive the ANA log page

__u32 *len

Input: the length of the log page buffer. Output: the actual length of the ANA log page.

Description

See struct nvme_ana_log for the definition of the returned structure.

Return

If successful, returns 0 and sets *len to the actual log page length. If unsuccessful, returns the nvme command status if a response was received (see enum nvme_status_field) or -1 with errno set otherwise. Sets errno = EINVAL if retries == 0. Sets errno = EAGAIN if unable to read the log page atomically because chgcnt changed during each of the retries attempts. Sets errno = ENOSPC if the full log page does not fit in the provided buffer.

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_phy_rx_eom(int fd, __u8 lsp, __u16 controller, __u32 len, struct nvme_phy_rx_eom_log *log)

Retrieve Physical Interface Receiver Eye Opening Measurement Log

Parameters

int fd

File descriptor of nvme device

__u8 lsp

Log specific, controls action and measurement quality

__u16 controller

Target controller ID

__u32 len

The allocated size, minimum struct nvme_phy_rx_eom_log

struct nvme_phy_rx_eom_log *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_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_get_log_lockdown(int fd, __u8 cnscp, struct nvme_lockdown_log *lockdown_log)

Retrieve lockdown Log

Parameters

int fd

File descriptor of nvme device

__u8 cnscp

Contents and Scope of Command and Feature Identifier Lists

struct nvme_lockdown_log *lockdown_log

Buffer to store the lockdown 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, __u8 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

__u8 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

Description

Deprecated: doesn’t support specifying a NSID. Use nvme_set_features_resv_mask2() instead.

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_mask2(int fd, __u32 nsid, __u32 mask, bool save, __u32 *result)

Set reservation notification mask feature

Parameters

int fd

File descriptor of nvme device

__u32 nsid

Namespace ID

__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

Description

Deprecated: doesn’t support specifying a NSID. Use nvme_set_features_resv_persist2() instead.

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_persist2(int fd, __u32 nsid, bool ptpl, bool save, __u32 *result)

Set persist through power loss feature

Parameters

int fd

File descriptor of nvme device

__u32 nsid

Namespace ID

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

Description

Deprecated: doesn’t support specifying a NSID. Use nvme_set_features_write_protect2() instead.

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_protect2(int fd, __u32 nsid, enum nvme_feat_nswpcfg_state state, bool save, __u32 *result)

Set write protect feature

Parameters

int fd

File descriptor of nvme device

__u32 nsid

Namespace ID

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_set_features_iocs_profile(int fd, __u16 iocsi, bool save)

Set I/O command set profile feature

Parameters

int fd

File descriptor of nvme device

__u16 iocsi

I/O Command Set Combination Index

bool save

Save value across power states

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

Description

Deprecated: doesn’t support specifying a NSID. Use nvme_get_features_lba_range2() instead.

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_range2(int fd, enum nvme_get_features_sel sel, __u32 nsid, 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

__u32 nsid

Namespace ID

struct nvme_lba_range_type *data

Buffer to receive LBA Range Type data structure

__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

Description

Deprecated: doesn’t support specifying a NSID. Use nvme_get_features_err_recovery2() instead.

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_recovery2(int fd, enum nvme_get_features_sel sel, __u32 nsid, __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 nsid

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

Description

Deprecated: doesn’t fetch the Host Memory Buffer Attributes data structure. Use nvme_get_features_host_mem_buf2() instead.

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_buf2(int fd, enum nvme_get_features_sel sel, struct nvme_host_mem_buf_attrs *attrs, __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

struct nvme_host_mem_buf_attrs *attrs

Buffer for returned Host Memory Buffer Attributes

__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

Description

Deprecated: doesn’t support specifying a NSID. Use nvme_get_features_resv_mask2() instead.

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_mask2(int fd, enum nvme_get_features_sel sel, __u32 nsid, __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 nsid

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

Description

Deprecated: doesn’t support specifying a NSID. Use nvme_get_features_resv_persist2() instead.

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_persist2(int fd, enum nvme_get_features_sel sel, __u32 nsid, __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 nsid

Namespace 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_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, struct nvme_ns_mgmt_host_sw_specified *data)

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

struct nvme_ns_mgmt_host_sw_specified *data

Host Software Specified Fields that defines ns creation parameters

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_timeout(int fd, __u32 nsid, __u32 timeout)

Delete a non attached namespace with timeout

Parameters

int fd

File descriptor of nvme device

__u32 nsid

Namespace identifier to delete

__u32 timeout

Override the default timeout to this value in milliseconds; set to 0 to use the system default.

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