2025-02-16 11:09:01 +01:00
'\" t
. \" Title: nvme-write
2025-02-16 12:13:36 +01:00
. \" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
. \" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
2025-02-16 12:26:41 +01:00
. \" Date: 05/03/2024
2025-02-16 11:09:01 +01:00
. \" Manual: NVMe Manual
. \" Source: NVMe
. \" Language: English
. \"
2025-02-16 12:26:41 +01:00
.TH "NVME\-WRITE" "1" "05/03/2024" "NVMe" "NVMe Manual"
2025-02-16 11:09:01 +01:00
. \" -----------------------------------------------------------------
. \" * Define some portability stuff
. \" -----------------------------------------------------------------
. \" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
. \" http://bugs.debian.org/507673
. \" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
. \" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n (.g .ds Aq \(aq
.el .ds Aq '
. \" -----------------------------------------------------------------
. \" * set default formatting
. \" -----------------------------------------------------------------
. \" disable hyphenation
.nh
. \" disable justification (adjust text to left margin only)
.ad l
. \" -----------------------------------------------------------------
. \" * MAIN CONTENT STARTS HERE *
. \" -----------------------------------------------------------------
.SH "NAME"
nvme-write \- Send an NVMe write command, provide results
.SH "SYNOPSIS"
.sp
.nf
\fI nvme\- write\fR <device> [\- \- start\- block=<slba> | \- s <slba>]
[\- \- block\- count=<nlb> | \- c <nlb>]
[\- \- 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>]
2025-02-16 12:25:25 +01:00
[\- \- limited\- retry | \- l] [\- \- force\- unit\- access | \- f]
2025-02-16 11:09:01 +01:00
[\- \- dir\- type=<type> | \- T <type>]
2025-02-16 12:25:25 +01:00
[\- \- dir\- spec=<spec> | \- S <spec>] [\- \- dsm=<dsm> | \- D <dsm>]
[\- \- show\- command | \- V] [\- \- dry\- run | \- w] [\- \- latency | \- t]
2025-02-16 12:20:36 +01:00
[\- \- storage\- tag<storage\- tag> | \- g <storage\- tag>]
2025-02-16 12:25:25 +01:00
[\- \- storage\- tag\- check | \- C] [\- \- force]
[\- \- output\- format=<fmt> | \- o <fmt>] [\- \- verbose | \- v]
2025-02-16 11:09:01 +01:00
.fi
.SH "DESCRIPTION"
.sp
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\(cq t provide a file\& .
.SH "OPTIONS"
.PP
2025-02-16 12:25:25 +01:00
\- s <slba>, \- \- start\- block=<slba>
2025-02-16 11:09:01 +01:00
.RS 4
Start block\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- c, \- \- block\- count
2025-02-16 11:09:01 +01:00
.RS 4
The number of blocks to transfer\& . This is a zeroes based value to align with the kernel\(cq s use of this field\& . (ie\& . 0 means transfer 1 block)\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- z <size>, \- \- data\- size=<size>
2025-02-16 11:09:01 +01:00
.RS 4
Size of data, in bytes\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- y <size>, \- \- metadata\- size=<size>
2025-02-16 11:09:01 +01:00
.RS 4
Size of metadata in bytes\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- d <data\- file>, \- \- data=<data\- file>
2025-02-16 11:09:01 +01:00
.RS 4
Data file\& . If none provided, contents are sent from STDIN\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- M <metadata\- file>, \- \- metadata=<metadata\- file>
2025-02-16 11:09:01 +01:00
.RS 4
Metadata file, if necessary\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- p <prinfo>, \- \- prinfo=<prinfo>
2025-02-16 11:09:01 +01:00
.RS 4
Protection Information field definition\& .
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Bit
T}:T{
Description
T}
T{
3
T}:T{
PRACT: Protection Information Action\& . When set to 1, PI is stripped/inserted on read/write when the block format\(cq s metadata size is 8\& . When set to 0, metadata is passes\& .
T}
T{
2:0
T}:T{
PRCHK: Protection Information Check:
T}
T{
2
T}:T{
Set to 1 enables checking the guard tag
T}
T{
1
T}:T{
Set to 1 enables checking the application tag
T}
T{
0
T}:T{
Set to 1 enables checking the reference tag
T}
.TE
.sp 1
.RE
.PP
2025-02-16 12:25:25 +01:00
\- r <reftag>, \- \- ref\- tag=<reftag>
2025-02-16 11:09:01 +01:00
.RS 4
Optional reftag when used with protection information\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- m <appmask>, \- \- app\- tag\- mask=<appmask>
2025-02-16 11:09:01 +01:00
.RS 4
Optional application tag mask when used with protection information\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- a <apptag>, \- \- app\- tag=<apptag>
2025-02-16 11:09:01 +01:00
.RS 4
Optional application tag when used with protection information\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- l, \- \- limited\- retry
2025-02-16 11:09:01 +01:00
.RS 4
Sets the limited retry flag\& .
.RE
.PP
2025-02-16 12:25:25 +01:00
\- f, \- \- force\- unit\- access
2025-02-16 11:09:01 +01:00
.RS 4
Set the force\- unit access flag\& .
.RE
.PP
\- T <type>, \- \- dir\- type=<type>
.RS 4
2025-02-16 12:16:06 +01:00
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\& .
2025-02-16 11:09:01 +01:00
.RE
.PP
\- S <spec>, \- \- dir\- spec=<spec>
.RS 4
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\(cq s capabilities\& .
.RE
.PP
\- D <dsm>, \- \- dsm=<dsm>
.RS 4
2025-02-16 12:15:30 +01:00
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\& .
2025-02-16 11:09:01 +01:00
.RE
.PP
2025-02-16 12:25:25 +01:00
\- V, \- \- show\- cmd
2025-02-16 11:09:01 +01:00
.RS 4
Print out the command to be sent\& .
.RE
.PP
\- w, \- \- dry\- run
.RS 4
Do not actually send the command\& . If want to use \- \- dry\- run option, \- \- show\- cmd option
\fI must\fR
be set\& . Otherwise \- \- dry\- run option will be
\fI ignored\fR \& .
.RE
.PP
\- t, \- \- latency
.RS 4
Print out the latency the IOCTL took (in us)\& .
.RE
2025-02-16 12:10:50 +01:00
.PP
2025-02-16 12:23:04 +01:00
\- g <storage\- tag>, \- \- storage\- tag=<storage\- tag>
2025-02-16 12:20:36 +01:00
.RS 4
Variable Sized Expected Logical Block Storage Tag(ELBST)\& .
.RE
.PP
2025-02-16 12:23:04 +01:00
\- C, \- \- storage\- tag\- check
2025-02-16 12:10:50 +01:00
.RS 4
2025-02-16 12:23:04 +01:00
This flag enables Storage Tag field checking as part of end\- to\- end data protection processing\& .
2025-02-16 12:10:50 +01:00
.RE
2025-02-16 12:15:30 +01:00
.PP
\- \- force
.RS 4
2025-02-16 12:16:06 +01:00
Ignore namespace is currently busy and performed the operation even though\& .
2025-02-16 12:15:30 +01:00
.RE
2025-02-16 12:25:25 +01:00
.PP
\- o <fmt>, \- \- output\- format=<fmt>
.RS 4
Set the reporting format to
\fI normal\fR ,
\fI json\fR
or
\fI binary\fR \& . Only one output format can be used at a time\& .
.RE
.PP
\- v, \- \- verbose
.RS 4
Increase the information detail in the output\& .
.RE
2025-02-16 11:09:01 +01:00
.SH "EXAMPLES"
.sp
No examples yet\& .
.SH "NVME"
.sp
Part of the nvme\- user suite