1a1eda741SJohn Baldwin.\" 2a1eda741SJohn Baldwin.\" SPDX-License-Identifier: BSD-2-Clause 3a1eda741SJohn Baldwin.\" 4a1eda741SJohn Baldwin.\" Copyright (c) 2024 Chelsio Communications, Inc. 5a1eda741SJohn Baldwin.\" 6*aacaeeeeSJohn Baldwin.Dd June 5, 2024 7a1eda741SJohn Baldwin.Dt NVMF 4 8a1eda741SJohn Baldwin.Os 9a1eda741SJohn Baldwin.Sh NAME 10a1eda741SJohn Baldwin.Nm nvmf 11a1eda741SJohn Baldwin.Nd "NVM Express over Fabrics host driver" 12a1eda741SJohn Baldwin.Sh SYNOPSIS 13a1eda741SJohn BaldwinTo compile the driver into the kernel, 14a1eda741SJohn Baldwinplace the following line in the 15a1eda741SJohn Baldwinkernel configuration file: 16a1eda741SJohn Baldwin.Bd -ragged -offset indent 17a1eda741SJohn Baldwin.Cd "device nvmf" 18a1eda741SJohn Baldwin.Ed 19a1eda741SJohn Baldwin.Pp 20a1eda741SJohn BaldwinAlternatively, to load the driver as a 21a1eda741SJohn Baldwinmodule at boot time, place the following line in 22a1eda741SJohn Baldwin.Xr loader.conf 5 : 23a1eda741SJohn Baldwin.Bd -literal -offset indent 24a1eda741SJohn Baldwinnvmf_load="YES" 25a1eda741SJohn Baldwin.Ed 26a1eda741SJohn Baldwin.Sh DESCRIPTION 27a1eda741SJohn BaldwinThe 28a1eda741SJohn Baldwin.Nm 29a1eda741SJohn Baldwindriver provides the kernel component of an NVM Express over Fabrics 30a1eda741SJohn Baldwinhost. 31a1eda741SJohn BaldwinThe NVMeoF host is the client which provides local access to 32a1eda741SJohn Baldwinnamespaces exported by a remote controller. 33a1eda741SJohn Baldwin.Pp 34a1eda741SJohn BaldwinAssociations between the local host and remote controllers are managed 35a1eda741SJohn Baldwinusing 36a1eda741SJohn Baldwin.Xr nvmecontrol 8 . 37a1eda741SJohn BaldwinNew associations are created via the 38a1eda741SJohn Baldwin.Cm connect 39a1eda741SJohn Baldwincommand and destroyed via the 40a1eda741SJohn Baldwin.Cm disconnect 41a1eda741SJohn Baldwincommand. 42a1eda741SJohn BaldwinIf an association's connection is interrupted, 43a1eda741SJohn Baldwinthe 44a1eda741SJohn Baldwin.Cm reconnect 45a1eda741SJohn Baldwincommand creates a new association to replace the interrupted association. 46a1eda741SJohn Baldwin.Pp 47a1eda741SJohn BaldwinSimilar to 48a1eda741SJohn Baldwin.Xr nvme 4 , 49a1eda741SJohn Baldwin.Nm 50a1eda741SJohn Baldwincreates controller device nodes using the format 51a1eda741SJohn Baldwin.Pa /dev/nvmeX 52a1eda741SJohn Baldwinand namespace device nodes using the format 53a1eda741SJohn Baldwin.Pa /dev/nvmeXnsY . 54a1eda741SJohn Baldwin.Nm 55a1eda741SJohn Baldwinalso exports remote namespaces via the CAM 56a1eda741SJohn Baldwin.Xr nda 4 57a1eda741SJohn Baldwinperipheral driver. 58a1eda741SJohn BaldwinUnlike 59a1eda741SJohn Baldwin.Xr nvme 4 , 60a1eda741SJohn Baldwin.Nm 61a1eda741SJohn Baldwindoes not support the 62a1eda741SJohn Baldwin.Xr nvd 4 63a1eda741SJohn Baldwindisk driver. 64a1eda741SJohn Baldwin.Pp 65a1eda741SJohn BaldwinAssociations require a supported transport such as 66a1eda741SJohn Baldwin.Xr nvmf_tcp 4 67a1eda741SJohn Baldwinfor associations using TCP/IP. 68*aacaeeeeSJohn Baldwin.Sh SYSCTL VARIABLES 69*aacaeeeeSJohn BaldwinThe following variables are available as both 70*aacaeeeeSJohn Baldwin.Xr sysctl 8 71*aacaeeeeSJohn Baldwinvariables and 72*aacaeeeeSJohn Baldwin.Xr loader 8 73*aacaeeeeSJohn Baldwintunables: 74*aacaeeeeSJohn Baldwin.Bl -tag -width indent 75*aacaeeeeSJohn Baldwin.It Va kern.nvmf.fail_on_disconnection 76*aacaeeeeSJohn BaldwinDetermines the behavior when an association's connection is interrupted. 77*aacaeeeeSJohn BaldwinBy default, input/output operations are suspended while a host is disconnected. 78*aacaeeeeSJohn BaldwinThis includes operations pending at the time the association's connection was 79*aacaeeeeSJohn Baldwininterrupted as well as new requests submitted while the host is disconnected. 80*aacaeeeeSJohn BaldwinOnce a new association is established, suspended I/O requests are retried. 81*aacaeeeeSJohn BaldwinWhen set to 1, input/output operations fail with 82*aacaeeeeSJohn Baldwin.Er EIO 83*aacaeeeeSJohn Baldwinwhile a host is disconnected and 84*aacaeeeeSJohn Baldwin.Xr nda 4 85*aacaeeeeSJohn Baldwinperipherals are destroyed after the first failed I/O request. 86*aacaeeeeSJohn BaldwinNote that any destroyed 87*aacaeeeeSJohn Baldwin.Xr nda 4 88*aacaeeeeSJohn Baldwinperipherals will be recreated after a new association is established. 89*aacaeeeeSJohn Baldwin.El 90a1eda741SJohn Baldwin.Sh SEE ALSO 91a1eda741SJohn Baldwin.Xr nda 4 , 92a1eda741SJohn Baldwin.Xr nvme 4 , 93a1eda741SJohn Baldwin.Xr nvmf_tcp 4 , 94a1eda741SJohn Baldwin.Xr nvmft 4 , 95a1eda741SJohn Baldwin.Xr nvmecontrol 8 96a1eda741SJohn Baldwin.Sh HISTORY 97a1eda741SJohn BaldwinThe 98a1eda741SJohn Baldwin.Nm 99a1eda741SJohn Baldwinmodule first appeared in 100a1eda741SJohn Baldwin.Fx 15.0 . 101a1eda741SJohn Baldwin.Sh AUTHORS 102a1eda741SJohn BaldwinThe 103a1eda741SJohn Baldwin.Nm 104a1eda741SJohn Baldwindriver was developed by 105a1eda741SJohn Baldwin.An John Baldwin Aq Mt jhb@FreeBSD.org 106a1eda741SJohn Baldwinunder sponsorship from Chelsio Communications, Inc. 107a1eda741SJohn Baldwin.Sh BUGS 108a1eda741SJohn Baldwin.Nm 109a1eda741SJohn Baldwinonly supports a single I/O queue pair per association. 110