NVMF(4)

πŸ“¦ version 15.1, in freebsd 15.1, nixpkgs unstable

πŸŽ€ NAME πŸŽ€ β€” NVMF(4) from the Kernel Interfaces Manual

Okay bestie, welcome to the Kernel Interfaces Manual page for NVMF(4). The star of the show is nvmf β€” the NVM Express over Fabrics host driver. Iconic name, iconic job. πŸ’…


✨ SYNOPSIS ✨

Two ways to get this driver living in your kernel, depending on your setup:

To compile the driver into the kernel, place this line in the kernel configuration file:

device nvmf

Alternatively, to load the driver as a module at boot time, place this line in loader.conf(5):

nvmf_load="YES"

πŸ¦‹ DESCRIPTION πŸ¦‹

So the nvmf driver provides the kernel component of an NVM Express over Fabrics host. The NVMeoF host is the client that provides local access to namespaces exported by a remote controller. Basically remote storage said β€œcome through” and nvmf is the local bestie making it happen. ✨

Associations between the local host and remote controllers are managed using nvmecontrol(8). New associations are created via the connect command and destroyed via the disconnect command. If an association's connection is interrupted, the reconnect command creates a new association to replace the interrupted association. No cap, that's the management flow. 🫢

Similar to nvme(4), nvmf creates controller device nodes using the format /dev/nvmeX and namespace device nodes using the format /dev/nvmeXnsY. nvmf also exports remote namespaces via the CAM nda(4) peripheral driver. Unlike nvme(4), nvmf does not support the nvd(4) disk driver. Important distinction, bestie β€” don't mix them up. πŸ’€

Associations require a supported transport such as nvmf_tcp(4) for associations using TCP/IP. That's the transport tea. 🌈


πŸ’… SYSCTL VARIABLES πŸ’…

The following variables are available as both sysctl(8) variables and loader(8) tunables:

  • kern.nvmf.fail_on_disconnection β€” this one determines the behavior when an association's connection is interrupted. By default, input/output operations are suspended while a host is disconnected. This includes operations pending at the time the association's connection was interrupted as well as new requests submitted while the host is disconnected. Once a new association is established, suspended I/O requests are retried. When set to 1, input/output operations fail with EIO while a host is disconnected and nda(4) peripherals are destroyed after the first failed I/O request. Note that any destroyed nda(4) peripherals will be recreated after a new association is established. So yes, it can get dramatic, but the comeback is built in. 😭πŸ”₯

🌈 SEE ALSO 🌈


⭐ HISTORY ⭐

The nvmf module first appeared in FreeBSD 15.0. Fresh, new, main character energy. πŸ‘‘


πŸ‘‘ AUTHORS πŸ‘‘

The nvmf driver was developed by John Baldwin <jhb@FreeBSD.org> under sponsorship from Chelsio Communications, Inc. Respect the builder. πŸ«‘πŸ’–


That's the whole page, bestie. The footer tea says source/version Debian Β· date May 7, 2025, and that's the official sign-off. Byeee πŸŽ€πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from