fabrics.h

Fabrics-specific definitions.

struct nvme_fabrics_config

Defines all linux nvme fabrics initiator options

Definition

struct nvme_fabrics_config {
  char *host_traddr;
  char *host_iface;
  int queue_size;
  int nr_io_queues;
  int reconnect_delay;
  int ctrl_loss_tmo;
  int fast_io_fail_tmo;
  int keep_alive_tmo;
  int nr_write_queues;
  int nr_poll_queues;
  int tos;
  bool duplicate_connect;
  bool disable_sqflow;
  bool hdr_digest;
  bool data_digest;
  bool tls;
};

Members

host_traddr
Host transport address
host_iface
Host interface name
queue_size
Number of IO queue entries
nr_io_queues
Number of controller IO queues to establish
reconnect_delay
Time between two consecutive reconnect attempts.
ctrl_loss_tmo
Override the default controller reconnect attempt timeout in seconds
fast_io_fail_tmo
Set the fast I/O fail timeout in seconds.
keep_alive_tmo
Override the default keep-alive-timeout to this value in seconds
nr_write_queues
Number of queues to use for exclusively for writing
nr_poll_queues
Number of queues to reserve for polling completions
tos
Type of service
duplicate_connect
Allow multiple connections to the same target
disable_sqflow
Disable controller sq flow control
hdr_digest
Generate/verify header digest (TCP)
data_digest
Generate/verify data digest (TCP)
tls
Start TLS on the connection (TCP)
const char * nvmf_trtype_str(__u8 trtype)

Decode TRTYPE field

Parameters

__u8 trtype
value to be decoded

Description

Decode the transport type field in the discovery log page entry.

Return

decoded string

const char * nvmf_adrfam_str(__u8 adrfam)

Decode ADRFAM field

Parameters

__u8 adrfam
value to be decoded

Description

Decode the address family field in the discovery log page entry.

Return

decoded string

const char * nvmf_subtype_str(__u8 subtype)

Decode SUBTYPE field

Parameters

__u8 subtype
value to be decoded

Description

Decode the subsystem type field in the discovery log page entry.

Return

decoded string

const char * nvmf_treq_str(__u8 treq)

Decode TREQ field

Parameters

__u8 treq
value to be decoded

Description

Decode the transport requirements field in the discovery log page entry.

Return

decoded string

const char * nvmf_eflags_str(__u16 eflags)

Decode EFLAGS field

Parameters

__u16 eflags
value to be decoded

Description

Decode the EFLAGS field in the discovery log page entry.

Return

decoded string

const char * nvmf_sectype_str(__u8 sectype)

Decode SECTYPE field

Parameters

__u8 sectype
value to be decoded

Description

Decode the SECTYPE field in the discovery log page entry.

Return

decoded string

const char * nvmf_prtype_str(__u8 prtype)

Decode RDMA Provider type field

Parameters

__u8 prtype
value to be decoded

Description

Decode the RDMA Provider type field in the discovery log page entry.

Return

decoded string

const char * nvmf_qptype_str(__u8 qptype)

Decode RDMA QP Service type field

Parameters

__u8 qptype
value to be decoded

Description

Decode the RDMA QP Service type field in the discovery log page entry.

Return

decoded string

const char * nvmf_cms_str(__u8 cms)

Decode RDMA connection management service field

Parameters

__u8 cms
value to be decoded

Description

Decode the RDMA connection management service field in the discovery log page entry.

Return

decoded string

void nvmf_default_config(struct nvme_fabrics_config *cfg)

Default values for fabrics configuration

Parameters

struct nvme_fabrics_config *cfg
config values to set

Description

Initializes cfg with default values.

void nvmf_update_config(nvme_ctrl_t c, const struct nvme_fabrics_config *cfg)

Update fabrics configuration values

Parameters

nvme_ctrl_t c
Controller to be modified
const struct nvme_fabrics_config *cfg
Updated configuration values

Description

Updates the values from c with the configuration values from cfg; all non-default values from cfg will overwrite the values in c.

int nvmf_add_ctrl(nvme_host_t h, nvme_ctrl_t c, const struct nvme_fabrics_config *cfg)

Connect a controller and update topology

Parameters

nvme_host_t h
Host to which the controller should be attached
nvme_ctrl_t c
Controller to be connected
const struct nvme_fabrics_config *cfg
Default configuration for the controller

Description

Issues a ‘connect’ command to the NVMe-oF controller and inserts c into the topology using h as parent. c must be initialized and not connected to the topology.

Return

0 on success; on failure errno is set and -1 is returned.

int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp, int max_retries)

Return the discovery log page

Parameters

nvme_ctrl_t c
Discovery controller to use
struct nvmf_discovery_log **logp
Pointer to the log page to be returned
int max_retries
Number of retries in case of failure

Description

The memory allocated for the log page and returned in logp must be freed by the caller using free().

Note

Consider using nvmf_get_discovery_wargs() instead.

Return

0 on success; on failure -1 is returned and errno is set

struct nvme_get_discovery_args

Arguments for nvmf_get_discovery_wargs()

Definition

struct nvme_get_discovery_args {
  nvme_ctrl_t c;
  int args_size;
  int max_retries;
  __u32 *result;
  __u32 timeout;
  __u8 lsp;
};

Members

c
Discovery controller
args_size
Length of the structure
max_retries
Number of retries in case of failure
result
The command completion result from CQE dword0
timeout
Timeout in ms (default: NVME_DEFAULT_IOCTL_TIMEOUT)
lsp
Log specific field (See enum nvmf_log_discovery_lsp)
struct nvmf_discovery_log * nvmf_get_discovery_wargs(struct nvme_get_discovery_args *args)

Get the discovery log page with args

Parameters

struct nvme_get_discovery_args *args
Argument structure

Description

This function is similar to nvmf_get_discovery_log(), but takes an extensible args parameter. args provides more options than nvmf_get_discovery_log().

This function performs a get discovery log page (DLP) command and returns the DLP. The memory allocated for the returned DLP must be freed by the caller using free().

Return

Pointer to the discovery log page (to be freed). NULL on failure and errno is set.

char * nvmf_hostnqn_generate()

Generate a machine specific host nqn

Parameters

Return

An nvm namespace qualified name string based on the machine identifier, or NULL if not successful.

char * nvmf_hostnqn_from_file()

Reads the host nvm qualified name from the config default location in /etc/nvme/

Parameters

Return

The host nqn, or NULL if unsuccessful. If found, the caller is responsible to free the string.

char * nvmf_hostid_from_file()

Reads the host identifier from the config default location in /etc/nvme/.

Parameters

Return

The host identifier, or NULL if unsuccessful. If found, the caller
is responsible to free the string.
nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h, struct nvmf_disc_log_entry *e, const struct nvme_fabrics_config *defcfg, bool *discover)

Connect controller based on the discovery log page entry

Parameters

nvme_host_t h
Host to which the controller should be connected
struct nvmf_disc_log_entry *e
Discovery log page entry
const struct nvme_fabrics_config *defcfg
Default configuration to be used for the new controller
bool *discover
Set to ‘true’ if the new controller is a discovery controller

Return

Pointer to the new controller

bool nvmf_is_registration_supported(nvme_ctrl_t c)

check whether registration can be performed.

Parameters

nvme_ctrl_t c
Controller instance

Description

Only discovery controllers (DC) that comply with TP8010 support explicit registration with the DIM PDU. These can be identified by looking at the value of a dctype in the Identify command response. A value of 1 (DDC) or 2 (CDC) indicates that the DC supports explicit registration.

Return

true if controller supports explicit registration. false otherwise.

int nvmf_register_ctrl(nvme_ctrl_t c, enum nvmf_dim_tas tas, __u32 *result)

Perform registration task with a DC

Parameters

nvme_ctrl_t c
Controller instance
enum nvmf_dim_tas tas
Task field of the Command Dword 10 (cdw10). Indicates whether to perform a Registration, Deregistration, or Registration-update.
__u32 *result
The command-specific result returned by the DC upon command completion.

Description

Perform registration task with a Discovery Controller (DC). Three tasks are supported: register, deregister, and registration update.

Return

0 on success; on failure -1 is returned and errno is set