STRUCT NVMF_CTRL_OPTIONS(9)
π struct nvmf_ctrl_options(9) π
okay so bestie, welcome to the Kernel API Manual entry for struct nvmf_ctrl_options β literally the little container that holds all the options you specified with the parsing opts enum. she's a struct, she's a vibe, she's holding every knob you get to twist when you're bringing up an NVMe controller π
β¨ SYNOPSIS β¨
here's the whole shape of her, no cap, every field exactly where it lives:
struct nvmf_ctrl_options {
unsigned mask;
int max_reconnects;
char *transport;
char *subsysnqn;
char *traddr;
char *trsvcid;
char *host_traddr;
char *host_iface;
size_t queue_size;
unsigned int nr_io_queues;
unsigned int reconnect_delay;
bool discovery_nqn;
bool duplicate_connect;
unsigned int kato;
struct nvmf_host *host;
char *dhchap_secret;
char *dhchap_ctrl_secret;
struct key *keyring;
struct key *tls_key;
bool tls;
bool concat;
bool disable_sqflow;
bool hdr_digest;
bool data_digest;
unsigned int nr_write_queues;
unsigned int nr_poll_queues;
int tos;
int fast_io_fail_tmo;
};
like, look at her. an icon. π
π¦ Members π¦
every field gets her moment, so let's go one by one, no skipping, we don't do that here:
maskβ this one's for the fabrics library, bestie: it uses it to parse through the sysfs options when you're adding an NVMe controller. lowkey the backstage pass of the whole struct.max_reconnectsβ the maximum number of reconnect attempts allowed before the controller gets removed. and listen:(-1)means reconnect forever π₯, and zero means remove immediately π«Ά. those are very different energies.transportβ holds the fabric transport "technology name" (their words, for a lack of better description π) that the NVMe controller being added is gonna use.subsysnqnβ holds the fully qualified NQN subsystem name. the format is defined in the NVMe specification, "NVMe Qualified Names", iykyk β¨traddrβ the transport-specific TRADDR field for a port on the subsystem that's adding a controller.trsvcidβ the transport-specific TRSVCID field for a port on the subsystem that's adding a controller. yes she's traddr's sibling, they come as a pair πhost_traddrβ a transport-specific field identifying the NVME host port to use for the connection to the controller.host_ifaceβ a transport-specific field identifying the NVME host interface to use for the connection to the controller.queue_sizeβ number of IO queue elements. simple, clean, iconic.nr_io_queuesβ number of controller IO queues that will be established. that's a lot of queues, and honestly? she deserves them πreconnect_delayβ the time between two consecutive reconnect attempts. the chill-out period between tries πΈdiscovery_nqnβ indicates if thesubsysnqnis the well-known discovery NQN.katoβ keep-alive timeout. she stays alive, she stays connected, that's the whole point π«Άhostβ the virtual NVMe host, which contains the NQN and Host ID.dhchap_secretβ DH-HMAC-CHAP secret. secret secret, don't tell π€«dhchap_ctrl_secretβ DH-HMAC-CHAP controller secret for bi-directional authentication, so both sides are in on it, fr fr πkeyringβ keyring to use for key lookups πtls_keyβ TLS key for encrypted connections (TCP). secure girl summer πtlsβ start TLS encrypted connections (TCP).concatβ enabled Secure channel concatenation (TCP).disable_sqflowβ disable controller sq flow control.hdr_digestβ generate/verify header digest (TCP).data_digestβ generate/verify data digest (TCP).nr_write_queuesβ number of queues for write I/O.nr_poll_queuesβ number of queues for polling I/O.tosβ type of service.fast_io_fail_tmoβ Fast I/O fail timeout in seconds. when things go wrong, she doesn't drag it out π
also side note: duplicate_connect is chilling up there in the struct definition, and no, we're not making up a description for her. the page doesn't give one, and we don't invent lore π
π SEE ALSO π
go peek at the kernel file ./drivers/nvme/host/fabrics.h β that's where the real tea is π
and that's the whole page, bestie!! β¨ this one lives over in ./drivers/nvme/host, and the version drop is from October 2026 β so like, mark your calendar, mwah ππ¦
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms