spdk_nvme_ctrlr_opts Struct Reference

NVMe controller initialization options. More...

Data Fields

uint32_t num_io_queues
 Number of I/O queues to request (used to set Number of Queues feature)
 
bool use_cmb_sqs
 Enable submission queue in controller memory buffer.
 
bool no_shn_notification
 Don't initiate shutdown processing.
 
enum spdk_nvme_cc_ams arb_mechanism
 Type of arbitration mechanism.
 
uint8_t arbitration_burst
 Maximum number of commands that the controller may launch at one time. More...
 
uint8_t low_priority_weight
 Number of commands that may be executed from the low priority queue in each arbitration round. More...
 
uint8_t medium_priority_weight
 Number of commands that may be executed from the medium priority queue in each arbitration round. More...
 
uint8_t high_priority_weight
 Number of commands that may be executed from the high priority queue in each arbitration round. More...
 
uint32_t keep_alive_timeout_ms
 Keep alive timeout in milliseconds (0 = disabled). More...
 
uint8_t transport_retry_count
 Specify the retry number when there is issue with the transport.
 
uint32_t io_queue_size
 The queue depth of each NVMe I/O queue.
 
char hostnqn [SPDK_NVMF_NQN_MAX_LEN+1]
 The host NQN to use when connecting to NVMe over Fabrics controllers. More...
 
uint32_t io_queue_requests
 The number of requests to allocate for each NVMe I/O queue. More...
 
char src_addr [SPDK_NVMF_TRADDR_MAX_LEN+1]
 Source address for NVMe-oF connections. More...
 
char src_svcid [SPDK_NVMF_TRSVCID_MAX_LEN+1]
 Source service ID (port) for NVMe-oF connections. More...
 
uint8_t host_id [8]
 The host identifier to use when connecting to controllers with 64-bit host ID support. More...
 
uint8_t extended_host_id [16]
 The host identifier to use when connecting to controllers with extended (128-bit) host ID support. More...
 
enum spdk_nvme_cc_css command_set
 The I/O command set to select. More...
 
uint32_t admin_timeout_ms
 Admin commands timeout in milliseconds (0 = no timeout). More...
 
bool header_digest
 It is used for TCP transport. More...
 
bool data_digest
 It is used for TCP transport. More...
 
bool disable_error_logging
 Disable logging of requests that are completed with error status. More...
 
uint8_t transport_ack_timeout
 It is used for both RDMA & TCP transport Specify the transport ACK timeout. More...
 
uint16_t admin_queue_size
 The queue depth of NVMe Admin queue.
 
size_t opts_size
 The size of spdk_nvme_ctrlr_opts according to the caller of this library is used for ABI compatibility. More...
 
uint64_t fabrics_connect_timeout_us
 The amount of time to spend before timing out during fabric connect on qpairs associated with this controller in microseconds.
 
bool disable_read_ana_log_page
 Disable reading ANA log page. More...
 

Detailed Description

NVMe controller initialization options.

A pointer to this structure will be provided for each probe callback from spdk_nvme_probe() to allow the user to request non-default options, and the actual options enabled on the controller will be provided during the attach callback.

Field Documentation

◆ admin_timeout_ms

uint32_t spdk_nvme_ctrlr_opts::admin_timeout_ms

Admin commands timeout in milliseconds (0 = no timeout).

The timeout value is used for admin commands submitted internally by the nvme driver during initialization, before the user is able to call spdk_nvme_ctrlr_register_timeout_callback(). By default, this is set to 120 seconds, users can change it in the probing callback.

◆ arbitration_burst

uint8_t spdk_nvme_ctrlr_opts::arbitration_burst

Maximum number of commands that the controller may launch at one time.

The value is expressed as a power of two, valid values are from 0-7, and 7 means unlimited.

◆ command_set

enum spdk_nvme_cc_css spdk_nvme_ctrlr_opts::command_set

The I/O command set to select.

If the requested command set is not supported, the controller initialization process will not proceed. By default, the NVM command set is used.

◆ data_digest

bool spdk_nvme_ctrlr_opts::data_digest

It is used for TCP transport.

Set to true, means having data digest for the data in the NVMe/TCP PDU

◆ disable_error_logging

bool spdk_nvme_ctrlr_opts::disable_error_logging

Disable logging of requests that are completed with error status.

Defaults to 'false' (errors are logged).

◆ disable_read_ana_log_page

bool spdk_nvme_ctrlr_opts::disable_read_ana_log_page

Disable reading ANA log page.

The upper layer should reading ANA log page instead if set to true.

Default is false (ANA log page is read).

◆ extended_host_id

uint8_t spdk_nvme_ctrlr_opts::extended_host_id[16]

The host identifier to use when connecting to controllers with extended (128-bit) host ID support.

Set to all zeroes to specify that no host ID should be provided to the controller.

◆ header_digest

bool spdk_nvme_ctrlr_opts::header_digest

It is used for TCP transport.

Set to true, means having header digest for the header in the NVMe/TCP PDU

◆ high_priority_weight

uint8_t spdk_nvme_ctrlr_opts::high_priority_weight

Number of commands that may be executed from the high priority queue in each arbitration round.

This field is only valid when arb_mechanism is set to SPDK_NVME_CC_AMS_WRR (weighted round robin).

◆ host_id

uint8_t spdk_nvme_ctrlr_opts::host_id[8]

The host identifier to use when connecting to controllers with 64-bit host ID support.

Set to all zeroes to specify that no host ID should be provided to the controller.

◆ hostnqn

char spdk_nvme_ctrlr_opts::hostnqn[SPDK_NVMF_NQN_MAX_LEN+1]

The host NQN to use when connecting to NVMe over Fabrics controllers.

If empty, a default value will be used.

◆ io_queue_requests

uint32_t spdk_nvme_ctrlr_opts::io_queue_requests

The number of requests to allocate for each NVMe I/O queue.

This should be at least as large as io_queue_size.

A single I/O may allocate more than one request, since splitting may be necessary to conform to the device's maximum transfer size, PRP list compatibility requirements, or driver-assisted striping.

◆ keep_alive_timeout_ms

uint32_t spdk_nvme_ctrlr_opts::keep_alive_timeout_ms

Keep alive timeout in milliseconds (0 = disabled).

The NVMe library will set the Keep Alive Timer feature to this value and automatically send Keep Alive commands as needed. The library user must call spdk_nvme_ctrlr_process_admin_completions() periodically to ensure Keep Alive commands are sent.

◆ low_priority_weight

uint8_t spdk_nvme_ctrlr_opts::low_priority_weight

Number of commands that may be executed from the low priority queue in each arbitration round.

This field is only valid when arb_mechanism is set to SPDK_NVME_CC_AMS_WRR (weighted round robin).

◆ medium_priority_weight

uint8_t spdk_nvme_ctrlr_opts::medium_priority_weight

Number of commands that may be executed from the medium priority queue in each arbitration round.

This field is only valid when arb_mechanism is set to SPDK_NVME_CC_AMS_WRR (weighted round robin).

◆ opts_size

size_t spdk_nvme_ctrlr_opts::opts_size

The size of spdk_nvme_ctrlr_opts according to the caller of this library is used for ABI compatibility.

The library uses this field to know how many fields in this structure are valid. And the library will populate any remaining fields with default values.

◆ src_addr

char spdk_nvme_ctrlr_opts::src_addr[SPDK_NVMF_TRADDR_MAX_LEN+1]

Source address for NVMe-oF connections.

Set src_addr and src_svcid to empty strings if no source address should be specified.

◆ src_svcid

char spdk_nvme_ctrlr_opts::src_svcid[SPDK_NVMF_TRSVCID_MAX_LEN+1]

Source service ID (port) for NVMe-oF connections.

Set src_addr and src_svcid to empty strings if no source address should be specified.

◆ transport_ack_timeout

uint8_t spdk_nvme_ctrlr_opts::transport_ack_timeout

It is used for both RDMA & TCP transport Specify the transport ACK timeout.

The value should be in range 0-31 where 0 means use driver-specific default value. RDMA: The value is applied to each qpair and affects the time that qpair waits for transport layer acknowledgement until it retransmits a packet. The value should be chosen empirically to meet the needs of a particular application. A low value means less time the qpair waits for ACK which can increase the number of retransmissions. A large value can increase the time the connection is closed. The value of ACK timeout is calculated according to the formula 4.096 * 2^(transport_ack_timeout) usec. TCP: The value is applied to each qpair and affects the time that qpair waits for transport layer acknowledgement until connection is closed forcefully. The value of ACK timeout is calculated according to the formula 2^(transport_ack_timeout) msec.


The documentation for this struct was generated from the following file: