nvme-write - Send an NVMe write command, provide results
nvme [<global-options>] write <device>
[--start-block=<slba> | -s <slba>]
[--block-count=<nlb> | -c <nlb>]
[--block-size=<size> | -b <size>]
[--data-size=<size> | -z <size>]
[--metadata-size=<size> | -y <size>]
[--ref-tag=<reftag> | -r <reftag>]
[--data=<data-file> | -d <data-file>]
[--metadata=<metadata-file> | -M <metadata-file>]
[--prinfo=<prinfo> | -p <prinfo>]
[--app-tag-mask=<appmask> | -m <appmask>]
[--app-tag=<apptag> | -a <apptag>]
[--limited-retry | -l] [--force-unit-access | -f]
[--dir-type=<type> | -T <type>]
[--dir-spec=<spec> | -S <spec>] [--dsm=<dsm> | -D <dsm>]
[--show-command | -V] [--dry-run | -w] [--latency | -t]
[--storage-tag<storage-tag> | -g <storage-tag>]
[--storage-tag-check | -C] [--force]
The Write command writes the logical blocks specified by the
command to the medium from the data data buffer provided. Will use stdin by
default if you don’t provide a file.
-s <slba>, --start-block=<slba>
Start block.
-c, --block-count
The number of blocks to transfer. This is a zeroes based
value to align with the kernel’s use of this field. (ie. 0 means
transfer 1 block).
-b <size>, --block-size=<size>
If specified, the logical block size in bytes, with
metasize also describing the metadata size for an individual block. Discovered
by identify namespace otherwise.
-z <size>, --data-size=<size>
Size of data, in bytes.
-y <size>, --metadata-size=<size>
Size of metadata in bytes.
-d <data-file>, --data=<data-file>
Data file. If none provided, contents are sent from
STDIN.
-M <metadata-file>, --metadata=<metadata-file>
Metadata file, if necessary.
-p <prinfo>, --prinfo=<prinfo>
Protection Information field definition.
| Bit |
Description |
| 3 |
PRACT: 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:0 |
PRCHK: Protection Information Check: |
| 2 |
Set to 1 enables checking the guard
tag |
| 1 |
Set to 1 enables checking the application
tag |
| 0 |
Set 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.
-f, --force-unit-access
Set the force-unit access flag.
-T <type>, --dir-type=<type>
Optional directive type. The nvme-cli only enforces the
value be in the defined range for the directive type, though the NVMe
specification (1.3a) defines only one directive, 01h, for write stream
identifiers.
-S <spec>, --dir-spec=<spec>
Optional field for directive specifics. When used with
write streams, this value is defined to be the write stream identifier. The
nvme-cli will not validate the stream requested is within the
controller’s capabilities.
-D <dsm>, --dsm=<dsm>
The optional data set management attributes for this
command. The argument for this is the least significant 8 bits of the DSM
field in a write command; the most significant 16 bits of the field come from
the directive specific field, if used. This may be used to set attributes for
the LBAs being written, like access frequency, type, latency, among other
things, as well as yet to be defined types. Please consult the NVMe
specification for detailed breakdown of how to use this field.
-V, --show-cmd
Print out the command to be sent.
-w, --dry-run
Do not actually send the command. If want to use
--dry-run option, --show-cmd option must be set. Otherwise --dry-run
option will be ignored.
-t, --latency
Print out the latency the IOCTL took (in us).
-g <storage-tag>, --storage-tag=<storage-tag>
Variable Sized Expected Logical Block Storage
Tag(ELBST).
-C, --storage-tag-check
This flag enables Storage Tag field checking as part of
end-to-end data protection processing.
--force
Ignore namespace is currently busy and performed the
operation even though.
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.
Part of the nvme-user suite