Reference

nvme-write-zeroes(1)

Send an NVMe write zeroes command, return results

NAME

nvme-write-zeroes - Send an NVMe write zeroes command, return results

SYNOPSIS

nvme [<global-options>] write-zeroes <device>
                        [--start-block=<slba> | -s <slba>]
                        [--block-count=<nlb> | -c <nlb>]
                        [--ref-tag=<reftag> | -r <reftag>]
                        [--prinfo=<prinfo> | -p <prinfo>]
                        [--app-tag-mask=<appmask> | -m <appmask>]
                        [--app-tag=<apptag> | -a <apptag>] [--deac | -d]
                        [--limited-retry | -l] [--force-unit-access | -f]
                        [--namespace-id=<nsid> | -n <nsid>]
                        [--storage-tag<storage-tag> | -S <storage-tag>]
                        [--storage-tag-check<storage-tag-check> | -C
                        <storage-tag-check>]
                        [--dir-type=<dtype> | -T <dtype>]
                        [--dir-spec=<dspec> | -D <dspec>]
                        [--namespace-zeroes | -Z]

DESCRIPTION

The Write Zeroes command is used to set a range of logical blocks to 0.

OPTIONS

-s <slba>, --start-block=<slba>

Start block.

-c <nlb>, --block-count=<nlb>

Number of logical blocks to write zeroes.

-p <prinfo>, --prinfo=<prinfo>

Protection Information field definition.

BitDescription
3PRACT: Protection Information Action. When set to 1, PI is stripped/inserted on read/write when the block format’s metadata size is 8. When set to 0, metadata is passes.
2:0PRCHK: Protection Information Check:
2Set to 1 enables checking the guard tag
1Set to 1 enables checking the application tag
0Set to 1 enables checking the reference tag
-r <reftag>, --ref-tag=<reftag>

Optional reftag when used with protection information.

-m <appmask>, --app-tag-mask=<appmask>

Optional application tag mask when used with protection information.

-a <apptag>, --app-tag=<apptag>

Optional application tag when used with protection information.

-l, --limited-retry

Sets the limited retry flag.

-d, --deac

Sets the DEAC bit, requesting controller deallocate the logical blocks.

-f, --force-unit-access

Set the force-unit access flag.

-n <nsid>, --namespace-id=<nsid>

Namespace ID use in the command. The broadcast value 0xffffffff can also be given as all or -1.

-S <storage-tag>, --storage-tag=<storage-tag>

Variable Sized Logical Block Storage Tag(LBST).

-C <storage-tag-check>, --storage-tag-check=<storage-tag-check>

This bit specifies the Storage Tag field shall be checked as part of end-to-end data protection processing.

-T <dtype>, --dir-type=<dtype>

Directive type

-D <dspec>, --dir-spec=<dspec>

Directive specific

-Z, --namespace-zeroes

If set, then the controller clear all logical blocks to zero in the entire namespace.

GLOBAL OPTIONS

The following options are defined at the top-level nvme command and are available to this subcommand:

--dry-run

Print the command that would be executed, but do not actually execute it.

--no-ioctl-probing

Disable probing for 64-bit IOCTL support.

--no-retries

Disable retry logic on transient errors.

-o <fmt>, --output-format=<fmt>

Set the reporting format to normal, tabular, 'json, or binary. Only one output format may be used at a time.

--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.

--quiet

Suppress informational messages. Errors are still reported, and --quiet cancels any --verbose for the library log level.

--set-options=<key=value>[,<key=value>...]

Set libnvme library options for this invocation. Supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir.

--timeout=<ms>

Set the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff).

-v, --verbose

Increase the level of detail in the output. May be specified multiple times to further increase verbosity.

These options can also be set as machine-wide defaults in nvme-cli.conf(5). A command-line flag always overrides the file.

EXAMPLES

No examples yet.

NVME

Part of the nvme-user suite

History

--deac since Debian 10 (Buster); --dir-spec since Debian 13 (Trixie); --dir-type since Debian 13 (Trixie); --dry-run since Arch Linux 2026-11-01; --namespace-zeroes since Debian 13 (Trixie); --no-ioctl-probing since Arch Linux 2026-11-01; --no-retries since Arch Linux 2026-11-01; --output-format since Debian 13 (Trixie); --output-format-version since Arch Linux 2026-11-01; --quiet since Arch Linux 2026-11-01; --set-options since Arch Linux 2026-11-01; --storage-tag since Debian 12 (Bookworm); --storage-tag-check since Debian 12 (Bookworm); --timeout since Debian 13 (Trixie); --verbose since Debian 13 (Trixie); -C since Debian 12 (Bookworm); -D since Debian 13 (Trixie); -S since Debian 12 (Bookworm); -T since Debian 13 (Trixie); -Z since Debian 13 (Trixie); -d since Debian 10 (Buster); -o since Debian 13 (Trixie); -v since Debian 13 (Trixie).

--force until Debian 12 (Bookworm); -t until Debian 13 (Trixie).