nvme-copy(1)
============

NAME
----
nvme-copy - Send an NVMe Simple Copy command, provide results

SYNOPSIS
--------
[verse]
'nvme' [<global-options>] 'copy' <device>
			[--namespace-id=<nsid> | -n <nsid>]
			[--sdlba=<sdlba> | -d <sdlba>]
			[--blocks=<nlb-list,> | -b <nlb-list,>]
			[--slbs=<slbas,> | -s <slbas,>]
			[--snsids=<snsids,> | -N <snsids,>]
			[--sopts=<sopts,> | -O <sopts,>]
			[--limited-retry | -l]
			[--force-unit-access | -f]
			[--prinfow=<prinfow> | -p <prinfow>]
			[--prinfor=<prinfor> | -P <prinfor>]
			[--ref-tag=<reftag> | -r <reftag>]
			[--expected-ref-tags=<reftag,> | -R <reftag,>]
			[--app-tag=<apptag> | -a <apptag>]
			[--expected-app-tags=<apptag,> | -A <apptag,>]
			[--app-tag-mask=<appmask> | -m <appmask>]
			[--expected-app-tag-masks=<appmask,> | -M <appmask,>]
			[--dir-type=<type> | -T <type>]
			[--dir-spec=<spec> | -S <spec>]
			[--format=<entry-format> | -F <entry-format>]

DESCRIPTION
-----------
The Copy command is used by the host to copy data from one or more source
logical block ranges to a single consecutive destination logical block range.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, the `'--namespace-id'` option is
mandatory, otherwise it will use the ns-id of the namespace for the block
device you opened. For block devices, the ns-id used can be overridden
with the same option.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Sends the command with the requested nsid. This is required for the
	character devices, or overrides the block nsid if given.
	The broadcast value 0xffffffff can also be given as 'all' or '-1'.

-d <sdlba>::
--sdlba=<sdlba>::
	64-bit addr of first destination logical block

-b <nlb-list,>::
--blocks=<nlb-list,>::
	Comma separated list of the number of blocks in each range

-s <slbas,>::
--slbs=<slbas,>::
	Comma separated list of the starting blocks in each range

--snsids=<snsids,>::
-N <snsids,>::
	Comma separated list of the source namespace identifiers in each range

--sopts=<sopts,>::
-O <sopts,>::
	Comma separated list of the source options in each range

-l::
--limited-retry::
	Sets the limited retry flag.

-f::
--force-unit-access::
	Set the force-unit access flag.

-p <prinfow>::
--prinfow=<prinfow>::
	Protection Information field write definition.

-P <prinfor>::
--prinfor=<prinfor>::
	Protection Information field read definition.

-r <reftag>::
--ref-tag=<reftag>::
	initial lba reference tag.

-R <reftag,>::
--expected-ref-tags=<reftag,>::
	expected lba reference tags (comma-separated list).

-a <apptag>::
--app-tag=<apptag>::
	lba app tag

-A <apptag,>::
--expected-app-tags=<apptag,>::
	expected lba app tags (comma-separated list)

-m <appmask>::
--app-tag-mask=<appmask>::
	lba tag mask

-M <appmask,>::
--expected-app-tag-masks=<appmask,>::
	expected lba tag masks (comma-separated list)

-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.

-F <entry-format>::
--format=<entry-format>::
	source range entry format

include::global-options.txt[]

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
