1.\" 2.\" SPDX-License-Identifier: BSD-2-Clause 3.\" 4.\" Copyright (c) 2024 Chelsio Communications, Inc. 5.\" 6.Dd May 2, 2024 7.Dt NVMFD 8 8.Os 9.Sh NAME 10.Nm nvmfd 11.Nd "NVMeoF controller daemon" 12.Sh SYNOPSIS 13.Nm 14.Fl K 15.Op Fl dFGg 16.Op Fl P Ar port 17.Op Fl p Ar port 18.Op Fl t Ar transport 19.Op Fl n Ar subnqn 20.Nm 21.Op Fl dFGg 22.Op Fl P Ar port 23.Op Fl p Ar port 24.Op Fl t Ar transport 25.Op Fl n Ar subnqn 26.Ar device 27.Op Ar device ... 28.Sh DESCRIPTION 29.Nm 30accepts incoming NVMeoF connections for both I/O and discovery controllers. 31.Nm 32can either implement a single dynamic I/O controller in user mode or hand 33off incoming I/O controller connections to 34.Xr nvmft 4 . 35A dynamic discovery controller service is always provided in user mode. 36.Pp 37The following options are available: 38.Bl -tag -width "-t transport" 39.It Fl F 40Permit remote hosts to disable SQ flow control. 41.It Fl G 42Permit remote hosts to enable PDU data digests for the TCP transport. 43.It Fl g 44Permit remote hosts to enable PDU header digests for the TCP transport. 45.It Fl K 46Enable kernel mode which hands off incoming I/O controller connections to 47.Xr nvmft 4 . 48.It Fl P Ar port 49Use 50.Ar port 51as the listen TCP port for the discovery controller service. 52The default value is 8009. 53.It Fl d 54Enable debug mode. 55The daemon sends any errors to standard output and does not place 56itself in the background. 57.It Fl p Ar port 58Use 59.Ar port 60as the listen TCP port for the I/O controller service. 61By default an unused ephemeral port will be chosen. 62.It Fl n Ar subnqn 63The Subsystem NVMe Qualified Name for the I/O controller. 64If an explicit NQN is not given, a default value is generated from the 65current host's UUID obtained from the 66.Vt kern.hostuuid 67sysctl. 68.It Fl t Ar transport 69The transport type to use. 70The default transport is 71.Dq tcp . 72.It Ar device 73When implementing a user mode I/O controller, 74one or more 75.Ar device 76arguments must be specified. 77Each 78.Ar device 79describes the backing store for a namespace exported to remote hosts. 80Devices can be specified using one of the following syntaxes: 81.Bl -tag -width "ramdisk:size" 82.It Pa pathname 83File or disk device 84.It ramdisk : Ns Ar size 85Allocate a memory disk with the given 86.Ar size . 87.Ar size 88may use any of the suffixes supported by 89.Xr expand_number 3 . 90.El 91.El 92.Sh FILES 93.Bl -tag -width "/var/run/nvmfd.pid" -compact 94.It Pa /var/run/nvmfd.pid 95The default location of the 96.Nm 97PID file. 98.El 99.Sh EXIT STATUS 100.Ex -std 101.Sh SEE ALSO 102.Xr ctl 4 , 103.Xr nvmft 4 , 104.Xr ctladm 8 , 105.Xr ctld 8 106.Sh HISTORY 107The 108.Nm 109module first appeared in 110.Fx 15.0 . 111.Sh AUTHORS 112The 113.Nm 114subsystem was developed by 115.An John Baldwin Aq Mt jhb@FreeBSD.org 116under sponsorship from Chelsio Communications, Inc. 117.Sh BUGS 118The discovery controller and kernel mode functionality of 119.Nm 120should be merged into 121.Xr ctld 8 . 122.Pp 123Additional paramters such as 124.Va MAXR2T , 125.Va MAXH2CDATA , 126and queue sizes should be configurable. 127