Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NDA(4)		       FreeBSD Kernel Interfaces Manual			NDA(4)

NAME
     nda -- NVMe Direct	Access device driver

SYNOPSIS
     device nvme
     device scbus

DESCRIPTION
     The nda 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.

SYSCTL VARIABLES
     The following variables are available as both sysctl(8) variables and
     loader(8) tunables:

     hw.nvme.use_nvd
	 The nvme(4) driver will create	nda device nodes for block storage
	 when set to 0.	 Create	nvd(4) device nodes for	block storage when set
	 to 1.	See nvd(4) when	set to 1.

     kern.cam.nda.nvd_compat
	 When set to 1,	nvd(4) aliases will be created for all nda devices,
	 including partitions and other	geom(4)	providers that take their
	 names from the	disk's name.  nvd(4) devices will not, however,	be re-
	 ported	in the kern.disks sysctl(8).

     kern.cam.nda.sort_io_queue
	 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.

     kern.cam.nda.enable_biospeedup
	 This variable determines if the nda devices participate in the
	 speedup protocol.  When the device participates in the	speedup, then
	 when the upper	layers send a BIO_SPEEDUP, all current BIO_DELETE re-
	 quests	not yet	sent to	the hardware are completed successfully	imme-
	 diate 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 par-
	 ticipation is disabled, BIO_SPEEDUP requests are ignored.

     kern.cam.nda.max_trim
	 The maximum number of LBA ranges to be	collected together for each
	 DSM trims send	to the hardware.  Defaults to 256, which is the	maxi-
	 mum number of ranges the protocol supports.  Sometimes	poor trim per-
	 formance can be mitigated by limiting the number of ranges sent to
	 the device.  This value must be between 1 and 256 inclusive.

     The following report per-device settings, and are read-only unless	other-
     wise indicated.  Replace N	with the device	unit number.

     kern.cam.nda.N.rotating
	 This variable reports whether the storage volume is spinning or
	 flash.	 Its value is hard coded to 0 indicating flash.

     kern.cam.nda.N.unmapped_io
	 This variable reports whether the nda driver accepts unmapped I/O for
	 this unit.

     kern.cam.nda.N.flags
	 This variable reports the current flags.

	 OPEN
	     The device	is open.

	 DIRTY
	     Set when a	write to the drive is scheduled.  Cleared after	flush
	     commands.

	 SCTX_INIT
	     Internal flag set after sysctl(8) nodes have been created.

     kern.cam.nda.N.sort_io_queue
	 Same as the kern.cam.nda.sort_io_queue	tunable.

     kern.cam.nda.N.trim_ticks
	 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.

     kern.cam.nda.N.trim_goal
	 Writable.  When delaying a bit	to collect multiple trims, send	the
	 accumulated DSM TRIM to the drive.

     kern.cam.nda.N.trim_lbas
	 Total number of LBAs that have	been trimmed.

     kern.cam.nda.N.trim_ranges
	 Total number of LBA ranges that have been trimmed.

     kern.cam.nda.N.trim_count
	 Total number of trims sent to the hardware.

     kern.cam.nda.N.deletes
	 Total number of BIO_DELETE requests queued to the device.

NAMESPACE MAPPING
     Each nvme(4) drive	has one	or more	namespaces associated with it.	One
     instance of the nda driver	will be	created	for each of the	namespaces on
     the drive.	 All the nda nodes for a nvme(4) device	are at target 0.  How-
     ever, the namespace ID maps to the	CAM lun, as reported in	kernel mes-
     sages and in the devlist sub command of camcontrol(8).

     Namespaces	are managed with the ns	sub command of nvmecontrol(8).	Not
     all drives	support	namespace management, but all drives support at	least
     one namespace.  Device nodes for nda will be created and destroyed	dynam-
     ically as namespaces are activated	or detached.

FILES
     /dev/nda*	NVMe storage device nodes

SEE ALSO
     cam(4), geom(4), nvd(4), nvme(4), gpart(8)

HISTORY
     The nda driver first appeared in FreeBSD 12.0.

AUTHORS
     Warner Losh <imp@FreeBSD.org>

FreeBSD	13.0			 June 6, 2020			  FreeBSD 13.0

NAME | SYNOPSIS | DESCRIPTION | SYSCTL VARIABLES | NAMESPACE MAPPING | FILES | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=nda&sektion=4&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help