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
Discover controller to use
struct nvmf_discovery_log **logp
Pointer to the log page to be returned
int max_retries
maximum number of log page entries to be returned
Return
0 on success; on failure -1 is returned 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