Blob Blame History Raw
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc" />
<title>nvme-connect-all(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-connect-all(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-connect-all -
   Discover and Connect to Fabrics controllers.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme connect-all</em>
                [--transport=&lt;trtype&gt;     | -t &lt;trtype&gt;]
                [--traddr=&lt;traddr&gt;        | -a &lt;traddr&gt;]
                [--trsvcid=&lt;trsvcid&gt;      | -s &lt;trsvcid&gt;]
                [--host-traddr=&lt;traddr&gt;   | -w &lt;traddr&gt;]
                [--hostnqn=&lt;hostnqn&gt;      | -q &lt;hostnqn&gt;]
                [--hostid=&lt;hostid&gt;        | -I &lt;hostid&gt;]
                [--raw=&lt;filename&gt;         | -r &lt;filename&gt;]
                [--keep-alive-tmo=&lt;#&gt;     | -k &lt;#&gt;]
                [--reconnect-delay=&lt;#&gt;    | -c &lt;#&gt;]
                [--ctrl-loss-tmo=&lt;#&gt;      | -l &lt;#&gt;]
                [--hdr-digest             | -g]
                [--data-digest            | -G]
                [--nr-io-queues=&lt;#&gt;       | -i &lt;#&gt;]
                [--nr-write-queues=&lt;#&gt;    | -W &lt;#&gt;]
                [--nr-poll-queues=&lt;#&gt;     | -P &lt;#&gt;]
                [--queue-size=&lt;#&gt;         | -Q &lt;#&gt;]
                [--matching               | -m]
                [--persistent             | -p]
                [--quiet                  | -q]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Send one or more Discovery requests to a NVMe over Fabrics Discovery
Controller, and create controllers for the returned discovery records.</p></div>
<div class="paragraph"><p>If no parameters are given, then <em>nvme connect-all</em> will attempt to
find a /etc/nvme/discovery.conf file to use to supply a list of
connect-all commands to run. If no /etc/nvme/discovery.conf file exists,
the command will quit with an error.</p></div>
<div class="paragraph"><p>Otherwise a specific Discovery Controller should be specified using the
--transport, --traddr and if necessary the --trsvcid and a Diѕcovery
request will be sent to the specified Discovery Controller.</p></div>
<div class="paragraph"><p>See the documentation for the nvme-discover(1) command for further
background.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-t &lt;trtype&gt;
</dt>
<dt class="hdlist1">
--transport=&lt;trtype&gt;
</dt>
<dd>
<p>
        This field specifies the network fabric being used for
        a NVMe-over-Fabrics network.  Current string values include:
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">rdma</p></td>
<td align="left" valign="top"><p class="table">The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">fc</p></td>
<td align="left" valign="top"><p class="table"><strong>WIP</strong> The network fabric is a Fibre Channel network.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">loop</p></td>
<td align="left" valign="top"><p class="table">Connect to a NVMe over Fabrics target on the local host</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-a &lt;traddr&gt;
</dt>
<dt class="hdlist1">
--traddr=&lt;traddr&gt;
</dt>
<dd>
<p>
        This field specifies the network address of the Discovery Controller.
        For transports using IP addressing (e.g. rdma) this should be an
        IP-based address (ex. IPv4).
</p>
</dd>
<dt class="hdlist1">
-s &lt;trsvcid&gt;
</dt>
<dt class="hdlist1">
--trsvcid=&lt;trsvcid&gt;
</dt>
<dd>
<p>
        This field specifies the transport service id.  For transports using IP
        addressing (e.g. rdma) this field is the port number. By default, the IP
        port number for the RDMA transport is 4420.
</p>
</dd>
<dt class="hdlist1">
-w &lt;traddr&gt;
</dt>
<dt class="hdlist1">
--host-traddr=&lt;traddr&gt;
</dt>
<dd>
<p>
        This field specifies the network address used on the host to connect
        to the Discovery Controller.
</p>
</dd>
<dt class="hdlist1">
-q &lt;hostnqn&gt;
</dt>
<dt class="hdlist1">
--hostnqn=&lt;hostnqn&gt;
</dt>
<dd>
<p>
        Overrides the default Host NQN that identifies the NVMe Host.
        If this option is not specified, the default is read from
        /etc/nvme/hostnqn first. If that does not exist, the autogenerated
        NQN value from the NVMe Host kernel module is used next.
        The Host NQN uniquely identifies the NVMe Host, and may be used by the
        the Discovery Controller to control what NVMe Target resources are
        allocated to the NVMe Host for a connection.
</p>
</dd>
<dt class="hdlist1">
-I &lt;hostid&gt;
</dt>
<dt class="hdlist1">
--hostid=&lt;hostid&gt;
</dt>
<dd>
<p>
        UUID(Universally Unique Identifier) to be discovered which should be
        formatted.
</p>
</dd>
<dt class="hdlist1">
-r &lt;filename&gt;
</dt>
<dt class="hdlist1">
--raw=&lt;filename&gt;
</dt>
<dd>
<p>
        This field will take the output of the <em>nvme connect-all</em> command
        and dump it to a raw binary file. By default <em>nvme connect-all</em> will
        dump the output to stdout.
</p>
</dd>
<dt class="hdlist1">
-k &lt;#&gt;
</dt>
<dt class="hdlist1">
--keep-alive-tmo=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default keep alive timeout (in seconds). This
        option will be ignored for discovery, but will be passed on to
        the subsequent connect call.
</p>
</dd>
<dt class="hdlist1">
-c &lt;#&gt;
</dt>
<dt class="hdlist1">
--reconnect-delay=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default delay (in seconds) before reconnect is attempted
        after a connect loss.
</p>
</dd>
<dt class="hdlist1">
-l &lt;#&gt;
</dt>
<dt class="hdlist1">
--ctrl-loss-tmo=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default controller loss timeout period (in seconds).
</p>
</dd>
<dt class="hdlist1">
-g
</dt>
<dt class="hdlist1">
--hdr-digest
</dt>
<dd>
<p>
        Generates/verifies header digest (TCP).
</p>
</dd>
<dt class="hdlist1">
-G
</dt>
<dt class="hdlist1">
--data-digest
</dt>
<dd>
<p>
        Generates/verifies data digest (TCP).
</p>
</dd>
<dt class="hdlist1">
-i &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-io-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default number of I/O queues create by the driver.
        This option will be ignored for discovery, but will be passed on
        to the subsequent connect call.
</p>
</dd>
<dt class="hdlist1">
-W &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-write-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Adds additional queues that will be used for write I/O.
</p>
</dd>
<dt class="hdlist1">
-P &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-poll-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Adds additional queues that will be used for polling latency sensitive I/O.
</p>
</dd>
<dt class="hdlist1">
-Q &lt;#&gt;
</dt>
<dt class="hdlist1">
--queue-size=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default number of elements in the I/O queues created
        by the driver. This option will be ignored for discovery, but will be
        passed on to the subsequent connect call.
</p>
</dd>
<dt class="hdlist1">
-m
</dt>
<dt class="hdlist1">
--matching
</dt>
<dd>
<p>
        If a traddr was specified on the command line or in the configuration
        file, only create controllers for discovery records that match the
        given traddr, rather than for all entries in the discovery log page.
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--persistent
</dt>
<dd>
<p>
        Don&#8217;t remove the discovery controller after retrieving the discovery
        log page.
</p>
</dd>
<dt class="hdlist1">
-q
</dt>
<dt class="hdlist1">
--quiet
</dt>
<dd>
<p>
        Suppress error messages.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
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:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme connect-all --transport=rdma --traddr=192.168.1.3 \
--hostnqn=host1-rogue-nqn</code></pre>
</div></div>
</li>
<li>
<p>
Issue a <em>nvme connect-all</em> command using a /etc/nvme/discovery.conf file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># Machine default 'nvme discover' commands.  Query the
# Discovery Controller's 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".</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme-discover(1)
nvme-connect(1)</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2020-04-29 22:28:00 CEST
</div>
</div>
</body>
</html>