diff options
Diffstat (limited to 'static/freebsd/man4/nda.4 3.html')
| -rw-r--r-- | static/freebsd/man4/nda.4 3.html | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/static/freebsd/man4/nda.4 3.html b/static/freebsd/man4/nda.4 3.html new file mode 100644 index 00000000..5c44e4ce --- /dev/null +++ b/static/freebsd/man4/nda.4 3.html @@ -0,0 +1,164 @@ +<table class="head"> + <tr> + <td class="head-ltitle">NDA(4)</td> + <td class="head-vol">Device Drivers Manual</td> + <td class="head-rtitle">NDA(4)</td> + </tr> +</table> +<div class="manual-text"> +<section class="Sh"> +<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1> +<p class="Pp"><code class="Nm">nda</code> — <span class="Nd">NVMe Direct + Access device driver</span></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> +<p class="Pp"><code class="Cd">device nvme</code> + <br/> + <code class="Cd">device scbus</code></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> +<p class="Pp">The <code class="Nm">nda</code> driver provides support for direct + access devices, implementing the NVMe command protocol, that are attached to + the system through a host adapter supported by the CAM subsystem.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="HARDWARE"><a class="permalink" href="#HARDWARE">HARDWARE</a></h1> +<p class="Pp">The <code class="Nm">nda</code> driver supports NVMe (Non-Volatile + Memory Express) storage devices connected via PCIe or over NVMF (NVMe over + Fabric) via the CAM subsystem.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="SYSCTL_VARIABLES"><a class="permalink" href="#SYSCTL_VARIABLES">SYSCTL + VARIABLES</a></h1> +<p class="Pp">The following variables are available as both + <a class="Xr">sysctl(8)</a> variables and <a class="Xr">loader(8)</a> + tunables:</p> +<dl class="Bl-tag"> + <dt id="hw.nvme.use_nvd"><var class="Va">hw.nvme.use_nvd</var></dt> + <dd>The <a class="Xr">nvme(4)</a> driver will create + <code class="Nm">nda</code> device nodes for block storage when set to 0. + Create <a class="Xr">nvd(4)</a> device nodes for block storage when set to + 1. See <a class="Xr">nvd(4)</a> when set to 1.</dd> + <dt id="kern.cam.nda.nvd_compat"><var class="Va">kern.cam.nda.nvd_compat</var></dt> + <dd>When set to 1, <a class="Xr">nvd(4)</a> aliases will be created for all + <code class="Nm">nda</code> devices, including partitions and other + <a class="Xr">geom(4)</a> providers that take their names from the disk's + name. <a class="Xr">nvd(4)</a> devices will not, however, be reported in + the <var class="Va">kern.disks</var> <a class="Xr">sysctl(8)</a>.</dd> + <dt id="kern.cam.nda.sort_io_queue"><var class="Va">kern.cam.nda.sort_io_queue</var></dt> + <dd>This variable determines whether the software queued entries are sorted in + LBA order or not. Sorting is almost always a waste of time. The default is + to not sort.</dd> + <dt id="kern.cam.nda.enable_biospeedup"><var class="Va">kern.cam.nda.enable_biospeedup</var></dt> + <dd>This variable determines if the <code class="Nm">nda</code> devices + participate in the speedup protocol. When the device participates in the + speedup, then when the upper layers send a + <var class="Va">BIO_SPEEDUP</var>, all current + <var class="Va">BIO_DELETE</var> requests not yet sent to the hardware are + completed successfully immediate without sending them to the hardware. + Used in low disk space scenarios when the filesystem encounters a critical + shortage and needs blocks immediately. Since trims have maximum benefit + when the LBA is unused for a long time, skipping the trim when space is + needed for immediate writes results in little to no excess wear. When + participation is disabled, <var class="Va">BIO_SPEEDUP</var> requests are + ignored.</dd> + <dt id="kern.cam.nda.max_trim"><var class="Va">kern.cam.nda.max_trim</var></dt> + <dd>The maximum number of LBA ranges to be collected together for each DSM + trims send to the hardware. Defaults to 256, which is the maximum number + of ranges the protocol supports. Sometimes poor trim performance can be + mitigated by limiting the number of ranges sent to the device. This value + must be between 1 and 256 inclusive.</dd> +</dl> +<p class="Pp">The following report per-device settings, and are read-only unless + otherwise indicated. Replace <var class="Va">N</var> with the device unit + number.</p> +<dl class="Bl-tag"> + <dt id="kern.cam.nda.N.rotating"><var class="Va">kern.cam.nda.N.rotating</var></dt> + <dd>This variable reports whether the storage volume is spinning or flash. Its + value is hard coded to 0 indicating flash.</dd> + <dt id="kern.cam.nda.N.unmapped_io"><var class="Va">kern.cam.nda.N.unmapped_io</var></dt> + <dd>This variable reports whether the <code class="Nm">nda</code> driver + accepts unmapped I/O for this unit.</dd> + <dt id="kern.cam.nda.N.flags"><var class="Va">kern.cam.nda.N.flags</var></dt> + <dd>This variable reports the current flags. + <dl class="Bl-tag"> + <dt id="OPEN"><var class="Va">OPEN</var></dt> + <dd>The device is open.</dd> + <dt id="DIRTY"><var class="Va">DIRTY</var></dt> + <dd>Set when a write to the drive is scheduled. Cleared after flush + commands.</dd> + <dt id="SCTX_INIT"><var class="Va">SCTX_INIT</var></dt> + <dd>Internal flag set after <a class="Xr">sysctl(8)</a> nodes have been + created.</dd> + </dl> + </dd> + <dt id="kern.cam.nda.N.sort_io_queue"><var class="Va">kern.cam.nda.N.sort_io_queue</var></dt> + <dd>Same as the <var class="Va">kern.cam.nda.sort_io_queue</var> tunable.</dd> + <dt id="kern.cam.nda.N.trim_ticks"><var class="Va">kern.cam.nda.N.trim_ticks</var></dt> + <dd>Writable. When greater than zero, hold trims for up to this many ticks + before sending to the drive. Sometimes waiting a little bit to collect + more trims to send at one time improves trim performance. When 0, no + delaying of trims are done.</dd> + <dt id="kern.cam.nda.N.trim_goal"><var class="Va">kern.cam.nda.N.trim_goal</var></dt> + <dd>Writable. When delaying a bit to collect multiple trims, send the + accumulated DSM TRIM to the drive.</dd> + <dt id="kern.cam.nda.N.trim_lbas"><var class="Va">kern.cam.nda.N.trim_lbas</var></dt> + <dd>Total number of LBAs that have been trimmed.</dd> + <dt id="kern.cam.nda.N.trim_ranges"><var class="Va">kern.cam.nda.N.trim_ranges</var></dt> + <dd>Total number of LBA ranges that have been trimmed.</dd> + <dt id="kern.cam.nda.N.trim_count"><var class="Va">kern.cam.nda.N.trim_count</var></dt> + <dd>Total number of trims sent to the hardware.</dd> + <dt id="kern.cam.nda.N.deletes"><var class="Va">kern.cam.nda.N.deletes</var></dt> + <dd>Total number of <var class="Va">BIO_DELETE</var> requests queued to the + device.</dd> +</dl> +</section> +<section class="Sh"> +<h1 class="Sh" id="NAMESPACE_MAPPING"><a class="permalink" href="#NAMESPACE_MAPPING">NAMESPACE + MAPPING</a></h1> +<p class="Pp">Each <a class="Xr">nvme(4)</a> drive has one or more namespaces + associated with it. One instance of the <code class="Nm">nda</code> driver + will be created for each of the namespaces on the drive. All the + <code class="Nm">nda</code> nodes for a <a class="Xr">nvme(4)</a> device are + at target 0. However, the namespace ID maps to the CAM lun, as reported in + kernel messages and in the <var class="Va">devlist</var> sub command of + <a class="Xr">camcontrol(8)</a>.</p> +<p class="Pp">Namespaces are managed with the <var class="Va">ns</var> sub + command of <a class="Xr">nvmecontrol(8)</a>. Not all drives support + namespace management, but all drives support at least one namespace. Device + nodes for <code class="Nm">nda</code> will be created and destroyed + dynamically as namespaces are activated or detached.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1> +<dl class="Bl-tag Bl-compact"> + <dt><span class="Pa">/dev/nda*</span></dt> + <dd>NVMe storage device nodes</dd> +</dl> +</section> +<section class="Sh"> +<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE + ALSO</a></h1> +<p class="Pp"><a class="Xr">cam(4)</a>, <a class="Xr">geom(4)</a>, + <a class="Xr">nvd(4)</a>, <a class="Xr">nvme(4)</a>, + <a class="Xr">gpart(8)</a></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> +<p class="Pp">The <code class="Nm">nda</code> driver first appeared in + <span class="Ux">FreeBSD 12.0</span>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1> +<p class="Pp"><span class="An">Warner Losh</span> + <<a class="Mt" href="mailto:imp@FreeBSD.org">imp@FreeBSD.org</a>></p> +</section> +</div> +<table class="foot"> + <tr> + <td class="foot-date">October 2, 2025</td> + <td class="foot-os">FreeBSD 15.0</td> + </tr> +</table> |
