'\" t
.\" Title: nvme-connect-all
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 10/30/2026
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: English
.\"
.TH "NVME\-CONNECT\-ALL" "1" "10/30/2026" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-connect-all \- Discover and Connect to Fabrics controllers\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme\fR [] \fIconnect\-all\fR
[\-\-raw= | \-r ]
[\-\-device= | \-d ]
[\-\-config= | \-J ]
[\-\-persistent[=] | \-p]
[\-\-quiet]
[\-\-no\-reuse]
[\-\-nbft]
[\-\-no\-nbft]
[\-\-nbft\-path=]
[\-\-owner=]
[]
[]
.fi
.SH "DESCRIPTION"
.sp
Send one or more Discovery requests to a NVMe over Fabrics Discovery Controller, and create controllers for the returned discovery records\&.
.sp
If no parameters are given, then \fInvme connect\-all\fR will attempt to find a /usr/local/etc/nvme/discovery\&.conf file to use to supply a list of connect\-all commands to run\&. If no /usr/local/etc/nvme/discovery\&.conf file exists, the command will quit with an error\&.
.sp
Otherwise a specific Discovery Controller should be specified using the \-\-transport, \-\-traddr and if necessary the \-\-trsvcid and a Discovery request will be sent to the specified Discovery Controller\&.
.sp
See the documentation for the nvme\-discover(1) command for further background\&.
.SH "OPTIONS"
.PP
\-r , \-\-raw=
.RS 4
This field will take the output of the
\fInvme connect\-all\fR
command and dump it to a raw binary file\&. By default
\fInvme connect\-all\fR
will dump the output to stdout\&.
.RE
.PP
\-d , \-\-device=
.RS 4
This field takes a device as input\&. It must be a persistent device associated with a Discovery Controller previously created by the command "connect\-all" or "discover"\&. follows the format nvme*, eg\&. nvme0, nvme1\&.
.RE
.PP
\-J , \-\-config=
.RS 4
Use the specified JSON configuration file instead of the default /usr/local/etc/nvme/config\&.json file or
\fInone\fR
to not read in an existing configuration file\&. The JSON configuration file format is documented in
\m[blue]\fBhttps://github\&.com/linux\-nvme/nvme\-cli/blob/master/libnvme/doc/config\-schema\&.json\fR\m[]
.RE
.PP
\-p, \-\-persistent[=]
.RS 4
Keep the discovery controller connected after retrieving the discovery log page, instead of disconnecting once it\(cqs done\&. Because the value is optional, it must be attached directly to the option: \-\-persistent=force for the long form, \-pforce for the short form\&. A value given as a separate argument (\-\-persistent force, \-p force) is no value of the option but an extra argument, and the command fails\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIno\fR: never persist\&. Use this to opt out of the default\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIauto\fR
(the default, both when the option is omitted entirely and when \-\-persistent is given with no value): persist a Discovery Log Page entry\(cqs connection only where that entry\(cqs own EPCSD (Explicit Persistent Connection Support for Discovery) flag reports support for it; degrade to non\-persistent, with a log message, for entries that don\(cqt\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIforce\fR: persist regardless of what EPCSD reports, for a target whose self\-reported EPCSD cannot be trusted\&.
.RE
.sp
\fIauto\fR
and
\fIforce\fR
ask each discovery controller for a keep\-alive timeout of 30 seconds, or the \-\-keep\-alive\-tmo value when it is given\&.
\fIno\fR
asks for none, even when \-\-keep\-alive\-tmo is given\&.
.RE
.PP
\-\-quiet
.RS 4
Suppress error messages\&.
.RE
.PP
\-\-no\-reuse
.RS 4
Always create a new connection, never reuse an existing one\&.
.RE
.PP
\-\-nbft
.RS 4
Only look at NBFT tables
.RE
.PP
\-\-no\-nbft
.RS 4
Do not look at NBFT tables
.RE
.PP
\-\-nbft\-path=
.RS 4
Use a user\-defined path to the NBFT tables
.RE
.PP
\-\-owner=
.RS 4
Record NAME as the owner of connected controllers in the NVMe ownership registry, so other orchestrators (and nvme\-disconnect\-all) leave them alone\&. See nvme\-disconnect\-all(1)\&. When \-\-nbft is also given, \-\-owner takes precedence over its default owner of
\fInbft\fR\&. An empty NAME (\-\-owner=) removes the registry entries instead, leaving the controllers unowned\&. Without \-\-owner, a controller that was already connected keeps the entry it has\&.
.RE
.SH "FABRICS OPTIONS"
.sp
The following options are common to NVMe over Fabrics commands such as nvme connect:
.PP
\-a , \-\-traddr=
.RS 4
Specify the network address of the controller\&. For transports using IP addressing (e\&.g\&. rdma, tcp), this should be an IP address\&.
.RE
.PP
\-\-concat
.RS 4
Enable secure concatenation (TCP)\&.
.RE
.PP
\-c <#>, \-\-reconnect\-delay=<#>
.RS 4
Set the delay in seconds before reconnect is attempted after a connection loss\&.
.RE
.PP
\-C , \-\-kxchap\-ctrl\-secret=
.RS 4
Controller authentication secret for bi\-directional authentication\&. If not specified, bi\-directional authentication is not attempted\&.
.RE
.PP
\-S , \-\-kxchap\-secret=
.RS 4
Host authentication secret (KX\-HMAC\-CHAP)\&. Must be provided in ASCII format as defined in the NVMe specification\&.
.RE
.PP
\-C , \-\-dhchap\-ctrl\-secret=
.RS 4
Controller authentication secret for bi\-directional authentication\&. If not specified, bi\-directional authentication is not attempted\&. (deprecated, see \-\-kxchap\-ctrl\-secret)
.RE
.PP
\-S , \-\-dhchap\-secret=
.RS 4
Host authentication secret (DH\-HMAC\-CHAP)\&. Must be provided in ASCII format as defined in the NVMe specification\&. (deprecated, see \-\-kxchap\-secret)
.RE
.PP
\-\-disable\-sqflow
.RS 4
Disable submission queue flow control\&.
.RE
.PP
\-G, \-\-data\-digest
.RS 4
Enable data digest generation/verification (TCP)\&.
.RE
.PP
\-D, \-\-duplicate\-connect
.RS 4
Allow duplicate connections to the same subsystem\&.
.RE
.PP
\-g, \-\-hdr\-digest
.RS 4
Enable header digest generation/verification (TCP)\&.
.RE
.PP
\-f , \-\-host\-iface=
.RS 4
Specify the network interface to use for the connection\&.
.RE
.PP
\-I , \-\-hostid=
.RS 4
Specify the host UUID\&.
.RE
.PP
\-q , \-\-hostnqn=
.RS 4
Override the default host NQN\&.
.RE
.PP
\-w , \-\-host\-traddr=
.RS 4
Specify the source address on the host side of the connection\&.
.RE
.PP
\-k <#>, \-\-keep\-alive\-tmo=<#>
.RS 4
Set the keep\-alive timeout in seconds\&.
.RE
.PP
\-\-keyring=
.RS 4
Keyring to use for TLS key lookup\&.
.RE
.PP
\-n , \-\-nqn=
.RS 4
Specify the NVMe subsystem NQN to connect to\&.
.RE
.PP
\-i <#>, \-\-nr\-io\-queues=<#>
.RS 4
Number of I/O queues to create\&.
.RE
.PP
\-P <#>, \-\-nr\-poll\-queues=<#>
.RS 4
Number of polling queues to create\&.
.RE
.PP
\-W <#>, \-\-nr\-write\-queues=<#>
.RS 4
Number of write queues to create\&.
.RE
.PP
\-Q <#>, \-\-queue\-size=<#>
.RS 4
Queue depth for I/O queues\&.
.RE
.PP
\-l <#>, \-\-ctrl\-loss\-tmo=<#>
.RS 4
Maximum time in seconds to retry reconnect attempts after controller loss\&.
.RE
.PP
\-s , \-\-trsvcid=
.RS 4
Transport service identifier (e\&.g\&. TCP/rdma port)\&. Default is 4420 for RDMA\&.
.RE
.PP
\-T <#>, \-\-tos=<#>
.RS 4
Type of service value for the connection (TCP)\&.
.RE
.PP
\-t , \-\-transport=
.RS 4
Specify the transport type\&. Supported values include:
.RE
.sp
+
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
Value
T}:T{
.sp
Description
T}
T{
.sp
rdma
T}:T{
.sp
RDMA (RoCE, iWARP, InfiniBand)
T}
T{
.sp
tcp
T}:T{
.sp
TCP/IP
T}
T{
.sp
fc
T}:T{
.sp
Fibre Channel (\fBexperimental\fR)
T}
T{
.sp
loop
T}:T{
.sp
Local loopback transport
T}
.TE
.sp 1
.PP
\-\-tls
.RS 4
Enable TLS encryption (TCP)\&.
.RE
.PP
\-\-tls\-key=
.RS 4
TLS key for the connection\&. It is recommended to preload keys into the system keyring instead of passing them via the command line\&.
.RE
.PP
\-\-tls\-key\-identity=
.RS 4
Identity associated with the TLS key\&.
.RE
.SH "GLOBAL OPTIONS"
.sp
The following options are defined at the top\-level nvme command and are available to this subcommand:
.PP
\-\-dry\-run
.RS 4
Print the command that would be executed, but do not actually execute it\&.
.RE
.PP
\-\-no\-ioctl\-probing
.RS 4
Disable probing for 64\-bit IOCTL support\&.
.RE
.PP
\-\-no\-retries
.RS 4
Disable retry logic on transient errors\&.
.RE
.PP
\-o , \-\-output\-format=
.RS 4
Set the reporting format to
\fInormal\fR,
\fItabular, \*(Aqjson\fR, or
\fIbinary\fR\&. Only one output format may be used at a time\&.
.RE
.PP
\-\-output\-format\-version=
.RS 4
Select the output format version\&. Version
\fI1\fR
uses the original field naming, while version
\fI2\fR
(default) provides more consistent and script\-friendly field names\&. Other versions are rejected\&.
.RE
.PP
\-\-quiet
.RS 4
Suppress informational messages\&. Errors are still reported, and \-\-quiet cancels any \-\-verbose for the library log level\&.
.RE
.PP
\-\-set\-options=[,\&...]
.RS 4
Set libnvme library options for this invocation\&. Supported keys are
\fIforce\-4k\fR,
\fImi\-probe\-enabled\fR,
\fItest\-base\-dir\fR
and
\fItest\-sysfs\-dir\fR\&.
.RE
.PP
\-\-timeout=
.RS 4
Set the timeout for the command in milliseconds\&.
\fIinfinite\fR
or
\fI\-1\fR
waits without a time limit (0xffffffff)\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Increase the level of detail in the output\&. May be specified multiple times to further increase verbosity\&.
.RE
.sp
These options can also be set as machine\-wide defaults in nvme\-cli\&.conf(5)\&. A command\-line flag always overrides the file\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Connect to all records returned by the Discover Controller with IP4 address 192\&.168\&.1\&.3 for all resources allocated for NVMe Host name host1\-rogue\-nqn on the RDMA network\&. Port 4420 is used by default:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme connect\-all \-\-transport=rdma \-\-traddr=192\&.168\&.1\&.3 \e
\-\-hostnqn=host1\-rogue\-nqn
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Issue a
\fInvme connect\-all\fR
command using the default system defined NBFT tables:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme connect\-all \-\-nbft
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Issue a
\fInvme connect\-all\fR
command with a user\-defined path for the NBFT table:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme connet\-all \-\-nbft\-path=/sys/firmware/acpi/tables/NBFT1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Issue a
\fInvme connect\-all\fR
command using a /usr/local/etc/nvme/discovery\&.conf file:
.sp
.if n \{\
.RS 4
.\}
.nf
# Machine default \*(Aqnvme discover\*(Aq commands\&. Query the
# Discovery Controller\*(Aqs two ports (some resources may only
# be accessible on a single port)\&. Note an official
# nqn (Host) name defined in the NVMe specification is being used
# in this example\&.
\-t rdma \-a 192\&.168\&.69\&.33 \-s 4420 \-q nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432
\-t rdma \-a 192\&.168\&.1\&.4 \-s 4420 \-q nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432
At the prompt type "nvme connect\-all"\&.
.fi
.if n \{\
.RE
.\}
.RE
.SH "SEE ALSO"
.sp
nvme\-discover(1) nvme\-connect(1)
.SH "NVME"
.sp
Part of the nvme\-user suite