'\" t
.\" Title: nvme-compare
-.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
-.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 10/20/2020
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 07/09/2021
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: English
.\"
-.TH "NVME\-COMPARE" "1" "10/20/2020" "NVMe" "NVMe Manual"
+.TH "NVME\-COMPARE" "1" "07/09/2021" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
[\-\-show\-command | \-v]
[\-\-dry\-run | \-w]
[\-\-latency | \-t]
+ [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
.fi
.SH "DESCRIPTION"
.sp
.RS 4
Print out the latency the IOCTL took (in us)\&.
.RE
+.PP
+\-\-storage\-tag\-check=<storage\-tag\-check>, \-C <storage\-tag\-check>
+.RS 4
+This bit specifies the Storage Tag field shall be checked as part of end\-to\-end data protection processing\&.
+.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
+<?xml version="1.0" encoding="UTF-8"?>\r
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.8" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
<title>nvme-compare(1)</title>\r
<style type="text/css">\r
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
padding: 0;\r
margin: 0;\r
}\r
-\r
+pre {\r
+ white-space: pre-wrap;\r
+}\r
\r
#author {\r
color: #527bbd;\r
}\r
\r
div.imageblock div.content { padding-left: 0; }\r
-span.image img { border-style: none; }\r
+span.image img { border-style: none; vertical-align: text-bottom; }\r
a.image:visited { color: white; }\r
\r
dl {\r
[--dsm=<dsm> | -D <dsm>]\r
[--show-command | -v]\r
[--dry-run | -w]\r
- [--latency | -t]</pre>\r
+ [--latency | -t]\r
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]</pre>\r
<div class="attribution">\r
</div></div>\r
</div>\r
Print out the latency the IOCTL took (in us).\r
</p>\r
</dd>\r
+<dt class="hdlist1">\r
+--storage-tag-check=<storage-tag-check>\r
+</dt>\r
+<dt class="hdlist1">\r
+-C <storage-tag-check>\r
+</dt>\r
+<dd>\r
+<p>\r
+ This bit specifies the Storage Tag field shall be checked as part of end-to-end\r
+ data protection processing.\r
+</p>\r
+</dd>\r
</dl></div>\r
</div>\r
</div>\r
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2018-12-17 13:07:47 MST\r
+Last updated\r
+ 2021-07-09 14:16:50 IST\r
</div>\r
</div>\r
</body>\r
[--show-command | -v]
[--dry-run | -w]
[--latency | -t]
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
DESCRIPTION
-----------
--latency::
Print out the latency the IOCTL took (in us).
+--storage-tag-check=<storage-tag-check>::
+-C <storage-tag-check>::
+ This bit specifies the Storage Tag field shall be checked as part of end-to-end
+ data protection processing.
+
EXAMPLES
--------
No examples yet.
'\" t
.\" Title: nvme-read
-.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
-.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 10/20/2020
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 07/09/2021
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: English
.\"
-.TH "NVME\-READ" "1" "10/20/2020" "NVMe" "NVMe Manual"
+.TH "NVME\-READ" "1" "07/09/2021" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
[\-\-show\-command | \-v]
[\-\-dry\-run | \-w]
[\-\-latency | \-t]
+ [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
.fi
.SH "DESCRIPTION"
.sp
.RS 4
Print out the latency the IOCTL took (in us)\&.
.RE
+.PP
+\-\-storage\-tag\-check=<storage\-tag\-check>, \-C <storage\-tag\-check>
+.RS 4
+This bit specifies the Storage Tag field shall be checked as part of end\-to\-end data protection processing\&.
+.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
[--dsm=<dsm> | -D <dsm>]\r
[--show-command | -v]\r
[--dry-run | -w]\r
- [--latency | -t]</pre>\r
+ [--latency | -t]\r
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]</pre>\r
<div class="attribution">\r
</div></div>\r
</div>\r
Print out the latency the IOCTL took (in us).\r
</p>\r
</dd>\r
+<dt class="hdlist1">\r
+--storage-tag-check=<storage-tag-check>\r
+</dt>\r
+<dt class="hdlist1">\r
+-C <storage-tag-check>\r
+</dt>\r
+<dd>\r
+<p>\r
+ This bit specifies the Storage Tag field shall be checked as part of end-to-end\r
+ data protection processing.\r
+</p>\r
+</dd>\r
</dl></div>\r
</div>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
Last updated\r
- 2019-10-12 00:12:24 JST\r
+ 2021-07-09 14:16:42 IST\r
</div>\r
</div>\r
</body>\r
[--show-command | -v]
[--dry-run | -w]
[--latency | -t]
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
DESCRIPTION
-----------
--latency::
Print out the latency the IOCTL took (in us).
+--storage-tag-check=<storage-tag-check>::
+-C <storage-tag-check>::
+ This bit specifies the Storage Tag field shall be checked as part of end-to-end
+ data protection processing.
+
EXAMPLES
--------
No examples yet.
.\" Title: nvme-verify
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 07/08/2021
+.\" Date: 07/09/2021
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: English
.\"
-.TH "NVME\-VERIFY" "1" "07/08/2021" "NVMe" "NVMe Manual"
+.TH "NVME\-VERIFY" "1" "07/09/2021" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
[\-\-app\-tag\-mask=<appmask> | \-m <appmask>]
[\-\-app\-tag=<apptag> | \-a <apptag>]
[\-\-storage\-tag<storage\-tag> | \-S <storage\-tag>]
+ [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
.fi
.SH "DESCRIPTION"
.sp
.RS 4
Variable Sized Expected Logical Block Storage Tag(ELBST) and Expected Logical Block Reference Tag (ELBRT), CDW2 and CDW3 (00:47) bits\&.
.RE
+.PP
+\-\-storage\-tag\-check=<storage\-tag\-check>, \-C <storage\-tag\-check>
+.RS 4
+This bit specifies the Storage Tag field shall be checked as part of Verify operation\&.
+.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
[--ref-tag=<reftag> | -r <reftag>]\r
[--app-tag-mask=<appmask> | -m <appmask>]\r
[--app-tag=<apptag> | -a <apptag>]\r
- [--storage-tag<storage-tag> | -S <storage-tag>]</pre>\r
+ [--storage-tag<storage-tag> | -S <storage-tag>]\r
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]</pre>\r
<div class="attribution">\r
</div></div>\r
</div>\r
Block Reference Tag (ELBRT), CDW2 and CDW3 (00:47) bits.\r
</p>\r
</dd>\r
+<dt class="hdlist1">\r
+--storage-tag-check=<storage-tag-check>\r
+</dt>\r
+<dt class="hdlist1">\r
+-C <storage-tag-check>\r
+</dt>\r
+<dd>\r
+<p>\r
+ This bit specifies the Storage Tag field shall be checked as part of Verify operation.\r
+</p>\r
+</dd>\r
</dl></div>\r
</div>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
Last updated\r
- 2021-07-07 23:04:31 IST\r
+ 2021-07-09 13:43:04 IST\r
</div>\r
</div>\r
</body>\r
[--app-tag-mask=<appmask> | -m <appmask>]
[--app-tag=<apptag> | -a <apptag>]
[--storage-tag<storage-tag> | -S <storage-tag>]
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
DESCRIPTION
-----------
Variable Sized Expected Logical Block Storage Tag(ELBST) and Expected Logical
Block Reference Tag (ELBRT), CDW2 and CDW3 (00:47) bits.
+--storage-tag-check=<storage-tag-check>::
+-C <storage-tag-check>::
+ This bit specifies the Storage Tag field shall be checked as part of Verify operation.
+
EXAMPLES
--------
No examples yet.
.\" Title: nvme-zeroes
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 07/08/2021
+.\" Date: 07/09/2021
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: English
.\"
-.TH "NVME\-ZEROES" "1" "07/08/2021" "NVMe" "NVMe Manual"
+.TH "NVME\-ZEROES" "1" "07/09/2021" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
[\-\-force\-unit\-access | \-f]
[\-\-namespace\-id=<nsid> | \-n <nsid>]
[\-\-storage\-tag<storage\-tag> | \-S <storage\-tag>]
+ [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
.fi
.SH "DESCRIPTION"
.sp
.RS 4
Variable Sized Expected Logical Block Storage Tag(ELBST) and Expected Logical Block Reference Tag (ELBRT), CDW2 and CDW3 (00:47) bits\&.
.RE
+.PP
+\-\-storage\-tag\-check=<storage\-tag\-check>, \-C <storage\-tag\-check>
+.RS 4
+This bit specifies the Storage Tag field shall be checked as part of end\-to\-end data protection processing\&.
+.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
[--limited-retry | -l]\r
[--force-unit-access | -f]\r
[--namespace-id=<nsid> | -n <nsid>]\r
- [--storage-tag<storage-tag> | -S <storage-tag>]</pre>\r
+ [--storage-tag<storage-tag> | -S <storage-tag>]\r
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]</pre>\r
<div class="attribution">\r
</div></div>\r
</div>\r
Block Reference Tag (ELBRT), CDW2 and CDW3 (00:47) bits.\r
</p>\r
</dd>\r
+<dt class="hdlist1">\r
+--storage-tag-check=<storage-tag-check>\r
+</dt>\r
+<dt class="hdlist1">\r
+-C <storage-tag-check>\r
+</dt>\r
+<dd>\r
+<p>\r
+ This bit specifies the Storage Tag field shall be checked as part of end-to-end\r
+ data protection processing.\r
+</p>\r
+</dd>\r
</dl></div>\r
</div>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
Last updated\r
- 2021-07-07 01:54:21 IST\r
+ 2021-07-09 13:42:09 IST\r
</div>\r
</div>\r
</body>\r
[--force-unit-access | -f]
[--namespace-id=<nsid> | -n <nsid>]
[--storage-tag<storage-tag> | -S <storage-tag>]
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
DESCRIPTION
-----------
Variable Sized Expected Logical Block Storage Tag(ELBST) and Expected Logical
Block Reference Tag (ELBRT), CDW2 and CDW3 (00:47) bits.
+--storage-tag-check=<storage-tag-check>::
+-C <storage-tag-check>::
+ This bit specifies the Storage Tag field shall be checked as part of end-to-end
+ data protection processing.
+
EXAMPLES
--------
No examples yet.
'\" t
.\" Title: nvme-write
-.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
-.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 10/20/2020
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 07/09/2021
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: English
.\"
-.TH "NVME\-WRITE" "1" "10/20/2020" "NVMe" "NVMe Manual"
+.TH "NVME\-WRITE" "1" "07/09/2021" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
[\-\-show\-command | \-v]
[\-\-dry\-run | \-w]
[\-\-latency | \-t]
+ [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
.fi
.SH "DESCRIPTION"
.sp
.RS 4
Print out the latency the IOCTL took (in us)\&.
.RE
+.PP
+\-\-storage\-tag\-check=<storage\-tag\-check>, \-C <storage\-tag\-check>
+.RS 4
+This bit specifies the Storage Tag field shall be checked as part of end\-to\-end data protection processing\&.
+.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
[--dsm=<dsm> | -D <dsm>]\r
[--show-command | -v]\r
[--dry-run | -w]\r
- [--latency | -t]</pre>\r
+ [--latency | -t]\r
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]</pre>\r
<div class="attribution">\r
</div></div>\r
</div>\r
Print out the latency the IOCTL took (in us).\r
</p>\r
</dd>\r
+<dt class="hdlist1">\r
+--storage-tag-check=<storage-tag-check>\r
+</dt>\r
+<dt class="hdlist1">\r
+-C <storage-tag-check>\r
+</dt>\r
+<dd>\r
+<p>\r
+ This bit specifies the Storage Tag field shall be checked as part of end-to-end\r
+ data protection processing.\r
+</p>\r
+</dd>\r
</dl></div>\r
</div>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
Last updated\r
- 2018-11-29 13:31:13 GMT\r
+ 2021-07-09 14:16:34 IST\r
</div>\r
</div>\r
</body>\r
[--show-command | -v]
[--dry-run | -w]
[--latency | -t]
+ [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
DESCRIPTION
-----------
--latency::
Print out the latency the IOCTL took (in us).
+--storage-tag-check=<storage-tag-check>::
+-C <storage-tag-check>::
+ This bit specifies the Storage Tag field shall be checked as part of end-to-end
+ data protection processing.
+
EXAMPLES
--------
No examples yet.
const char *storage_tag = "storage tag, CDW2 and CDW3 (00:47) bits "\
"(for end to end PI)";
const char *deac = "Set DEAC bit, requesting controller to deallocate specified logical blocks";
+ const char *storage_tag_check = "This bit specifies the Storage Tag field shall be checked as "\
+ "part of end-to-end data protection processing";
struct config {
__u64 start_block;
int deac;
int limited_retry;
int force_unit_access;
+ int storage_tag_check;
};
struct config cfg = {
- .start_block = 0,
- .block_count = 0,
- .prinfo = 0,
- .ref_tag = 0,
- .app_tag_mask = 0,
- .app_tag = 0,
- .storage_tag = 0,
+ .start_block = 0,
+ .block_count = 0,
+ .prinfo = 0,
+ .ref_tag = 0,
+ .app_tag_mask = 0,
+ .app_tag = 0,
+ .storage_tag = 0,
+ .storage_tag_check = 0,
};
OPT_ARGS(opts) = {
OPT_SHRT("app-tag-mask", 'm', &cfg.app_tag_mask, app_tag_mask),
OPT_SHRT("app-tag", 'a', &cfg.app_tag, app_tag),
OPT_SUFFIX("storage-tag", 'S', &cfg.storage_tag, storage_tag),
+ OPT_FLAG("storage-tag-check", 'C', &cfg.storage_tag_check, storage_tag_check),
OPT_END()
};
control |= NVME_IO_FUA;
if (cfg.deac)
control |= NVME_IO_DEAC;
+ if (cfg.storage_tag_check)
+ control |= NVME_SC_STORAGE_TAG_CHECK;
if (!cfg.namespace_id) {
err = nvme_get_nsid(fd, &cfg.namespace_id);
if (err < 0) {
const char *dtype = "directive type (for write-only)";
const char *dspec = "directive specific (for write-only)";
const char *dsm = "dataset management attributes (lower 16 bits)";
+ const char *storage_tag_check = "This bit specifies the Storage Tag field shall be " \
+ "checked as part of end-to-end data protection processing";
struct config {
__u32 namespace_id;
__u16 app_tag;
int limited_retry;
int force_unit_access;
+ int storage_tag_check;
int show;
int dry_run;
int latency;
};
struct config cfg = {
- .start_block = 0,
- .block_count = 0,
- .data_size = 0,
- .metadata_size = 0,
- .ref_tag = 0,
- .data = "",
- .metadata = "",
- .prinfo = 0,
- .app_tag_mask = 0,
- .app_tag = 0,
+ .start_block = 0,
+ .block_count = 0,
+ .data_size = 0,
+ .metadata_size = 0,
+ .ref_tag = 0,
+ .data = "",
+ .metadata = "",
+ .prinfo = 0,
+ .app_tag_mask = 0,
+ .app_tag = 0,
+ .storage_tag_check = 0,
};
OPT_ARGS(opts) = {
OPT_SHRT("app-tag", 'a', &cfg.app_tag, app_tag),
OPT_FLAG("limited-retry", 'l', &cfg.limited_retry, limited_retry),
OPT_FLAG("force-unit-access", 'f', &cfg.force_unit_access, force),
+ OPT_FLAG("storage-tag-check", 'C', &cfg.storage_tag_check, storage_tag_check),
OPT_BYTE("dir-type", 'T', &cfg.dtype, dtype),
OPT_SHRT("dir-spec", 'S', &cfg.dspec, dspec),
OPT_SHRT("dsm", 'D', &cfg.dsmgmt, dsm),
control |= NVME_IO_LR;
if (cfg.force_unit_access)
control |= NVME_IO_FUA;
+ if (cfg.storage_tag_check)
+ control |= NVME_SC_STORAGE_TAG_CHECK;
if (cfg.dtype) {
if (cfg.dtype > 0xf) {
fprintf(stderr, "Invalid directive type, %x\n",
const char *app_tag = "app tag (for end to end PI)";
const char *storage_tag = "storage tag, CDW2 and CDW3 (00:47) bits "\
"(for end to end PI)";
+ const char *storage_tag_check = "This bit specifies the Storage Tag field shall "\
+ "be checked as part of Verify operation";
struct config {
__u64 start_block;
__u16 block_count;
__u8 prinfo;
__u64 storage_tag;
+ int storage_tag_check;
int limited_retry;
int force_unit_access;
};
.limited_retry = 0,
.force_unit_access = 0,
.storage_tag = 0,
+ .storage_tag_check = 0,
};
OPT_ARGS(opts) = {
OPT_SHRT("app-tag", 'a', &cfg.app_tag, app_tag),
OPT_SHRT("app-tag-mask", 'm', &cfg.app_tag_mask, app_tag_mask),
OPT_SUFFIX("storage-tag", 'S', &cfg.storage_tag, storage_tag),
+ OPT_FLAG("storage-tag-check", 'C', &cfg.storage_tag_check, storage_tag_check),
OPT_END()
};
control |= NVME_IO_LR;
if (cfg.force_unit_access)
control |= NVME_IO_FUA;
+ if (cfg.storage_tag_check)
+ control |= NVME_SC_STORAGE_TAG_CHECK;
if (!cfg.namespace_id) {
err = nvme_get_nsid(fd, &cfg.namespace_id);