'\" t
.\" Title: nvme-io-passthru
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 08/05/2024
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: English
.\"
.TH "NVME\-IO\-PASSTHRU" "1" "08/05/2024" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * 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-io-passthru \- Submit an arbitrary io command, return results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-io\-passthru\fR [\-\-opcode= | \-O ]
[\-\-flags= | \-f ] [\-rsvd= | \-R ]
[\-\-namespace\-id= | \-n ] [\-\-cdw2= | \-2 ]
[\-\-cdw3= | \-3 ] [\-\-cdw10= | \-4 ]
[\-\-cdw11= | \-5 ] [\-\-cdw12= | \-6 ]
[\-\-cdw13= | \-7 ] [\-\-cdw14= | \-8 ]
[\-\-cdw15= | \-9 ]
[\-\-data\-len= | \-l ]
[\-\-metadata\-len= | \-m ]
[\-\-read | \-r] [\-\-write | \-w]
[\-\-input\-file= | \-i ]
[\-\-metadata= | \-M ]
[\-\-timeout= | \-t ] [\-\-show\-command | \-s]
[\-\-dry\-run | \-d] [\-\-raw\-binary | \-b]
[\-\-prefill= | \-p ]
[\-\-latency | \-T]
[\-\-output\-format= | \-o ] [\-\-verbose | \-v]
.fi
.SH "DESCRIPTION"
.sp
Submits an arbitrary NVMe IO command and returns the applicable results\&. This may be the simply the command\(cqs result and status, or may also include a buffer if the command returns one\&. This command does no interpretation of the opcodes or options\&.
.sp
The parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned structure (if applicable) may be returned in one of several ways depending on the option flags; the structure may printed by the program as a hex dump, or may be returned as a raw buffer printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-O , \-\-opcode=
.RS 4
The NVMe opcode to send to the device in the command
.RE
.PP
\-f , \-\-flags=
.RS 4
The NVMe command flags to send to the device in the command
.RE
.PP
\-R , \-\-rsvd=
.RS 4
The value for the reserved field in the command\&.
.RE
.PP
\-n , \-\-namespace\-id=
.RS 4
The value for the ns\-id in the command\&. Defaults to
\fI0\fR\&.
.RE
.PP
\-[2\-9] , \-\-cdw[2\-3,10\-15]=
.RS 4
Specifies the command dword value for that specified entry in the command
.RE
.PP
\-r, \-\-read, \-w, \-\-write
.RS 4
Used for the data\-direction for the command and required for commands sending/receiving data\&. Don\(cqt use both read and write at the same time\&.
.RE
.PP
\-i , \-\-input\-file=
.RS 4
If the command is a data\-out (write) command, use this file to fill the buffer sent to the device\&. If no file is given, assumed to use STDIN\&. If the command is a data\-in (read) command, the data returned from the device will be saved here\&.
.RE
.PP
\-M , \-\-metadata=
.RS 4
If the command is a data\-out (write) command, use this file to fill the metadata buffer sent to the device\&. If no file is given, assumed to use STDIN\&. If the command is a data\-in (read) command, the metadata returned from the device will be saved here\&.
.RE
.PP
\-l , \-\-data\-len=
.RS 4
The data length for the buffer used for this command\&.
.RE
.PP
\-m , \-\-metadata\-len=
.RS 4
The metadata length for the buffer used for this command\&.
.RE
.PP
\-s, \-\-show\-cmd
.RS 4
Print out the command to be sent\&.
.RE
.PP
\-d, \-\-dry\-run
.RS 4
Do not actually send the command\&. If want to use \-\-dry\-run option, \-\-show\-cmd option
\fImust\fR
be set\&. Otherwise \-\-dry\-run option will be
\fIignored\fR\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw returned buffer to stdout if the command returns data or a structure\&.
.RE
.PP
\-p , \-\-prefill
.RS 4
Prefill the buffer with a predetermined byte value\&. Defaults to 0\&. This may be useful if the data you are writing is shorter than the required buffer, and you need to pad it with a known value\&. It may also be useful if you need to confirm if a device is overwriting a buffer on a data\-in command\&.
.RE
.PP
\-T, \-\-latency
.RS 4
Print out the latency the IOCTL took (in us)\&.
.RE
.PP
\-o , \-\-output\-format=
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR
or
\fIbinary\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
.PP
\-t , \-\-timeout=
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
nvme io\-passthru /dev/nvme0n1 \-\-opcode=2 \-\-namespace\-id=1 \-\-data\-len=4096 \-\-read \-\-cdw10=0 \-\-cdw11=0 \-\-cdw12=0x70000 \-\-raw\-binary
.SH "NVME"
.sp
Part of the nvme\-user suite