NVME-DIR-RECEIVE(1)
π NVME-DIR-RECEIVE(1) β the nvme manual, bestie edition
okay so you're looking at nvme-dir-receive, a page from the NVMe Manual (yes, that NVMe manual), and honestly? it's giving "powerful but under-explained". so let me translate β¨
πΈ NAME
nvme-dir-receive β send a directive receive command, and it returns the applicable results. that's the whole job. it's literally in the name, no cap π
π¦ SYNOPSIS
nvme [<global-options>] dir receive <device>
[--namespace-id=<nsid> | -n <nsid>]
[--data-len=<data-len> | -l <data-len>]
[--dir-type=<dtype> | -D <dtype>]
[--dir-spec=<dspec> | -S <dspec>]
[--dir-oper=<doper> | -O <doper>]
[--req-resource=<nsr> | -r <nsr>] [--raw-binary | -b]
like, look at her. so many flags. she's an icon π
π DESCRIPTION
so what this does: it submits an NVMe Directive Receive admin command and hands you back the applicable results. that could be the combination of directive type and operation, plus the number of requested resources if that specific operation needs it. it's giving "here's your data, bestie, as requested" π
the <device> parameter is mandatory β not optional, not vibes-based, mandatory β and it can be either:
- the NVMe character device (ex:
/dev/nvme0), or - a namespace block device (ex:
/dev/nvme0n1)
on success, the returned directive's parameter structure (if applicable) comes back to you in one of several ways, and it all depends on which option flags you used:
- the structure may be parsed by the program and printed in a readable format if it's a known structure β¨
- it can be displayed in hex π
- or the raw buffer may be printed to stdout so another program can parse it π«Ά
π¨ heads up about the old spelling: the barenvme dir-receiveform (without a space) still works as a deprecated alias and will be removed in a future major version. new scripts should usenvme dir receiveinstead. do not be out here writing new scripts with the deprecated form, i'm begging π
β¨ OPTIONS β¨
-n <nsid>,--namespace-id=<nsid>β retrieve the feature for the given nsid. this is optional, and most features don't even use this value. the broadcast value0xffffffffcan also be given asallor-1. iykyk π«-D <dtype>,--dir-type=<dtype>β directive type π―-S <dspec>,--dir-spec=<dspec>β directive specific-O <doper>,--dir-oper=<doper>β directive operation-r <nsr>,--req-resource=<nsr>β directive requested resource count. here's the select breakdown, pls memorize the vibe:0β Current1β Default2β Saved3β Supported capabilities4β7β Reserved
-l <data-len>,--data-len=<data-len>β the data length for the buffer returned for this feature. most known features don't use this value. the exception is LBA Range Type π-b,--raw-binaryβ print the raw receive buffer to stdout if the command returns a structure. raw. unfiltered. main character energy π§
π GLOBAL OPTIONS π
these ones are defined at the top-level nvme command and are available to this subcommand too β so you get the whole squad, not just the solo act π
--dry-runβ print the command that would be executed, but do not actually execute it. it's a dress rehearsal, bestie π--no-ioctl-probingβ disable probing for 64-bit IOCTL support.--no-retriesβ disable retry logic on transient errors. one shot, no take-twos π-o <fmt>,--output-format=<fmt>β set the reporting format tonormal,tabular,'json, orbinary. only one output format may be used at a time. pick a lane, periodt.--output-format-version=<version>β select the output format version. version 1 uses the original field naming, while version 2 (default) provides more consistent and script-friendly field names. other versions are rejected β no exceptions, no negotiating π ββοΈ--quietβ suppress informational messages. errors are still reported, and--quietcancels any--verbosefor the library log level. the "shush" button π«Ά--set-options=<key=value>[,<key=value>...]β set libnvme library options for this invocation. supported keys areforce-4k,mi-probe-enabled,test-base-dirandtest-sysfs-dir.--timeout=<ms>β set the timeout for the command in milliseconds.infiniteor-1waits without a time limit (0xffffffff). patient queen vibes β³-v,--verboseβ increase the level of detail in the output. may be specified multiple times to further increase verbosity. stack it like a combo π₯
and yes β these options can also be set as machine-wide defaults in nvme-cli.conf(5). a command-line flag always overrides the file. flag wins, every time. no debate π
π EXAMPLES π
- identify directive type supported:
# nvme dir receive /dev/nvme0 --dir-type 0 --dir-oper 1 --verbose
- get stream directive parameters:
# nvme dir receive /dev/nvme0 --dir-type 1 --dir-oper 1 --verbose
- allocate 3 streams for namespace 1:
# nvme dir receive /dev/nvme0n1 --dir-type 1 --dir-oper 3 --req-resource 3 --verbose
- get streams directive status:
# nvme dir receive /dev/nvme0 --dir-type 1 --dir-oper 2 --verbose
π it is probably a bad idea to not redirect stdout when using this mode. like. genuinely. redirect it. > file is your bestie here, fr fr.
β NVME
part of the nvme-user suite π«Ά that's the family, that's the crew, that's the whole thing.
and that's the page, gorgeous π this one's from the NVMe folks, dated 10/30/2026 β NVME-DIR-RECEIVE(1) and all, slay πβ¨π
π¦ where this page comes from
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms