Reference

nvme-sanitize(1)

Send NVMe Sanitize Command, return result

NAME

nvme-sanitize - Send NVMe Sanitize Command, return result

SYNOPSIS

nvme [<global-options>] sanitize <device> [--no-dealloc | -d] [--oipbp | -i]
                        [--owpass=<overwrite-pass-count> | -n
                        <overwrite-pass-count>]
                        [--ause | -u] [--sanact=<action> | -a <action>]
                        [--ovrpat=<overwrite-pattern> | -p <overwrite-pattern>]
                        [--emvs | -e] [--preq | -q] [--force] [--wait | -w]
                        [--repeat=<repeat-count> | -r <repeat-count>]

DESCRIPTION

For the NVMe device given, sends a Sanitize command and provides the result.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

On success it returns 0, error code otherwise.

OPTIONS

-d, --no-dealloc

No Deallocate After Sanitize: If set, then the controller shall not deallocate any logical blocks as a result of successfully completing the sanitize operation. If cleared, then the controller should deallocate logical blocks as a result of successfully completing the sanitize operation. This bit shall be ignored if the Sanitize Action field is set to 001b (i.e., Exit Failure Mode).

-i, --oipbp

Overwrite Invert Pattern Between Passes: If set, then the Overwrite Pattern shall be inverted between passes. If cleared, then the overwrite pattern shall not be inverted between passes. This bit shall be ignored unless the Sanitize Action field is set to 011b (i.e., Overwrite).

-n <overwrite-pass-count>, --owpass=<overwrite-pass-count>

Overwrite Pass Count: This field specifies the number of overwrite passes (i.e., how many times the media is to be overwritten) using the data from the Overwrite Pattern field of this command. A value of 0 specifies 16 overwrite passes. This field shall be ignored unless the Sanitize Action field is set to 011b (i.e., Overwrite).

-u, --ause

Allow Unrestricted Sanitize Exit: If set, then the sanitize operation is performed in unrestricted completion mode. If cleared then the sanitize operation is performed in restricted completion mode. This bit shall be ignored if the Sanitize Action field is set to 001b (i.e., Exit Failure Mode).

-a <action>, --sanact=<action>

Sanitize Action:

ValueDefinition
0x00Reserved
0x01 | exit-failureExit Failure Mode
0x02 | start-block-eraseStart a Block Erase sanitize operation
0x03 | start-overwriteStart an Overwrite sanitize operation
0x04 | start-crypto-eraseStart a Crypto Erase sanitize operation
0x05 | exit-media-verificationExit Media Verification State
-p <overwrite-pattern>, --ovrpat=<overwrite-pattern>

Overwrite Pattern: This field is ignored unless the Sanitize Action field in Command Dword 10 is set to 011b (i.e., Overwrite). This field specifies a 32-bit pattern that is used for the Overwrite sanitize operation.

-e, --emvs

Enter Media Verification State: If set, then the Media Verification state shall be entered if sanitize processing completes successfully. If cleared, then this bit shall have no effect. If SANACT field does not specify starting a sanitize operation (i.e., is set to any value other than 010b, 011b, or 100b), then this bit shall be ignored by the controller.

-q, --preq

Purge Required: If set, then the host is requesting that the user data be purged as defined by IEEE Std 2883. If the controller supports Sanitize Purge Request and Reporting (SPRRS in the Identify Controller data structure) and the sanitize operation started by this command does not purge user data, then that sanitize operation shall fail. If cleared, then that sanitize operation is not required to purge user data as a condition for succeeding.

--force

Ignore namespace is currently busy and performed the operation even though.

-w, --wait

Wait for the sanitize to finish

-r <repeat-count>, --repeat=<repeat-count>

Repeat for the multi cycle sanitization

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

• Has the program issue Sanitize Command :

# nvme sanitize /dev/nvme0 -a 0x02
# nvme sanitize /dev/nvme0 --sanact=0x01
# nvme sanitize /dev/nvme0 --sanact=start-overwrite

NVME

Part of the nvme-user suite.

History

--dry-run since Arch Linux 2026-11-01; --emvs since Debian 13 (Trixie); --force since Debian 12 (Bookworm); --no-dealloc since Debian 12 (Bookworm); --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; --preq since Arch Linux 2026-11-01; --quiet since Arch Linux 2026-11-01; --repeat since Arch Linux 2026-11-01; --set-options since Arch Linux 2026-11-01; --timeout since Arch Linux 2026-11-01; --verbose since Debian 13 (Trixie); --wait since Arch Linux 2026-11-01; -e since Debian 13 (Trixie); -o since Debian 13 (Trixie); -q since Arch Linux 2026-11-01; -r since Arch Linux 2026-11-01; -v since Debian 13 (Trixie); -w since Arch Linux 2026-11-01.

--no-delloc until Debian 11 (Bullseye).