NVME-ZNS-ZONE-APP(1)
π NVME-ZNS-ZONE-APP(1) π
okay so this is the nvme-zns-zone-append page from the NVMe Manual β yes, that NVMe Manual, the one we actually read β and bestie, it's literally just about yeeting data into a ZNS zone and finding out where it landed. sit down, hydrate, let's go π«Ά
β¨ NAME β¨
nvme-zns-zone-append β send an NVMe write command, and get results back. that's the whole vibe. π
πΈ SYNOPSIS πΈ
nvme [<global-options>] zns zone-append <device>
[--namespace-id=<NUM> | -n <NUM>]
[--zslba=<IONUM> | -s <IONUM>]
[--data-size=<IONUM> | -z <IONUM>]
[--metadata-size=<IONUM> | -y <IONUM>]
[--data=<FILE> | -d <FILE>]
[--metadata=<FILE> | -M <FILE>]
[--limited-retry | -l]
[--force-unit-access | -f]
[--ref-tag=<NUM> | -r <NUM>]
[--app-tag-mask=<NUM> | -m <NUM>]
[--app-tag=<NUM> | -a <NUM>]
[--prinfo=<NUM> | -p <NUM>]
no cap, that's a lot of brackets. but every single one is listed down below so you don't have to guess π
π¦ DESCRIPTION π¦
so the zone append command writes the logical blocks specified by the command to the medium, pulling from the data buffer you give it. it's literally that. π₯
if you don't pass a file? it will use stdin by default. no file, no problem, just pipe it in π
on success, the program will report the LBA that was assigned to the data for the append operation β which is kind of the main character moment of this whole command, ngl. π
π OPTIONS π
-n <NUM>,--namespace-id=<NUM>β use this namespace id for the command. if you don't provide one, the namespace id of the block device gets used instead. but if you're issuing the command to a non-block device, the parameter is required (so like, don't skip it, bestie). also: the broadcast value0xffffffffcan be given as eitherallor-1. β¨-s <IONUM>,--zslba=<IONUM>,-z <IONUM>,--data-size=<IONUM>β size of data, in bytes. yes, all four of those spellings, exactly like that, i don't make the rules π-y <IONUM>,--metadata-size=<IONUM>β size of metadata, in bytes. πΈ-d <FILE>,--data=<FILE>β the data file providing the data to write. if none provided, contents are sent fromSTDIN. slay. π-M <FILE>,--metadata=<FILE>β metadata file, if necessary. π¦-l,--limited-retryβ sets the limited retry flag. β-f,--force-unit-accessβ sets the force-unit access flag. πͺ-r <NUM>,--ref-tag=<NUM>β optional reftag when used with protection information. π-m <NUM>,--app-tag-mask=<NUM>β optional application tag mask when used with protection information. π-a <NUM>,--app-tag=<NUM>β optional application tag when used with protection information. π-p <NUM>,--prinfo=<NUM>β Protection Information field definition. π§
π GLOBAL OPTIONS π
these are defined at the top-level nvme command, which means they're available to this subcommand too. yes, they're the group-chat lurkers who are technically in every conversation π
--dry-runβ print the command that would be executed, but do not actually execute it. all the flirting, none of the commitment π--no-ioctl-probingβ disable probing for 64-bitIOCTLsupport. π--no-retriesβ disable retry logic on transient errors. one shot, no second chances π-o <fmt>,--output-format=<fmt>β set the reporting format tonormal,tabular,'json, orbinary. only one output format may be used at a time. (that stray quote before json is in the original, i'm just the messenger π«Ά)--output-format-version=<version>β select the output format version. version 1 uses the original field naming, while version 2 (the default) provides more consistent and script-friendly field names. other versions are rejected β so don't try it π₯--quietβ suppress informational messages. errors are still reported, and--quietcancels any--verbosefor the library log level. π€«--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). the way patience is a virtue π-v,--verboseβ increase the level of detail in the output. may be specified multiple times to further increase verbosity. go off, stack them β
heads up bestie: these options can also be set as machine-wide defaults in nvme-cli.conf(5). a command-line flag always overrides the file β CLI stays winning π
π EXAMPLES π
- append the data
"hello world"into 4k worth of blocks into the zone starting at block0for namespace1:
# echo "hello world" | nvme zns zone-append /dev/nvme0 -n 1 -s 0 -z 4k
see? pipe it, point it, zone it, done. iconic. π
π NVME π
part of the nvme-user suite. π
okay that's the whole page, you ate that fr fr π«Ά so anyway β this little masterpiece lives in the NVMe manual, sourced from NVMe, dated 10/30/2026, filed under NVME-ZNS-ZONE-APP(1). go append something beautiful, bestie π β¨
π¦ 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