nvme-io-passthru − Submit an arbitrary io command, return results
<device> [−−opcode=<opcode> |
[−−flags=<flags> | −f <flags>] [−rsvd=<rsvd> | −R <rsvd>]
[−−namespace−id=<nsid> | −nsid <nsid>]
[−−cdw2=<cdw2>] [−−cdw3=<cdw3>] [−−cdw10=<cdw10>]
[−−cdw11=<cdw11>] [−−cdw12=<cdw12>] [−−cdw13=<cdw13>]
[−−data−len=<data−len> | −l <data−len>]
[−−metadata−len=<len> | −m <len>]
[−−read | −r ] [−−write | −w]
[−−input−file=<file> | −i <file>]
[−−metadata=<file> | −M <file>]
[−−timeout=<to> | −t <to>]
[−−show−command | −s]
[−−dry−run | −d]
[−−raw−binary | −b]
[−−prefill=<prefill> | −p <prefill>]
[−−latency | −T]
Submits an arbitrary NVMe IO command and returns the applicable results. This may be the simply the command’s result and status, or may also include a buffer if the command returns one. This command does no interpretation of the opcodes or options.
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
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.
−o <opcode>, −−opcode=<opcode>
The NVMe opcode to send to the device in the command
−f <flags>, −−flags=<flags>
The NVMe command flags to send to the device in the command
−R <rsvd>, −−rsvd=<rsvd>
The value for the reserved field in the command.
−n <nsid>, −−namespace−id=<nsid>
The value for the ns−id in the command. Defaults to 0.
Specifies the command dword value for that specified entry in the command
−r, −−read, −w, −−write
Used for the data−direction for the command and required for commands sending/receiving data. Don’t use both read and write at the same time.
−i <file>, −−input−file=<file>
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.
−M <file>, −−metadata=<file>
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.
−l <data−len>, −−data−len=<data−len>
The data length for the buffer used for this command.
−m <data−len>, −−metadata−len=<data−len>
The metadata length for the buffer used for this command.
Print out the command to be sent.
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.
Print the raw returned buffer to stdout if the command returns data or a structure.
−p <prefill>, −−prefill <prefill>
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.
Print out the latency the IOCTL took (in us).
nvme io−passthru /dev/nvme0n1 −−opcode=2 −−namespace−id=1 −−data−len=4096 −−read −−cdw10=0 −−cdw11=0 −−cdw12=0x70000 −−raw−binary
Part of the nvme−user suite