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