STRUCT NVMF_CTRL_OPTIONS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ‘‘ 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 the subsysnqn is 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