]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme: Consolidate --force option and udpate documetation
authorDaniel Wagner <dwagner@suse.de>
Wed, 15 Dec 2021 09:32:37 +0000 (10:32 +0100)
committerDaniel Wagner <dwagner@suse.de>
Thu, 23 Dec 2021 10:39:24 +0000 (11:39 +0100)
Refactor the error handling for the --force option.
Drop support for the -f and use --force consistent in all commands.
Also update the documation accordingly.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
30 files changed:
Documentation/nvme-compare.1
Documentation/nvme-compare.html
Documentation/nvme-compare.txt
Documentation/nvme-format.1
Documentation/nvme-format.html
Documentation/nvme-format.txt
Documentation/nvme-id-ns.1
Documentation/nvme-id-ns.html
Documentation/nvme-id-ns.txt
Documentation/nvme-lnvm-id-ns.1
Documentation/nvme-lnvm-id-ns.html
Documentation/nvme-lnvm-id-ns.txt
Documentation/nvme-read.1
Documentation/nvme-read.html
Documentation/nvme-read.txt
Documentation/nvme-sanitize.1
Documentation/nvme-sanitize.html
Documentation/nvme-sanitize.txt
Documentation/nvme-write-uncor.1
Documentation/nvme-write-uncor.html
Documentation/nvme-write-uncor.txt
Documentation/nvme-write-zeroes.1
Documentation/nvme-write-zeroes.html
Documentation/nvme-write-zeroes.txt
Documentation/nvme-write.1
Documentation/nvme-write.html
Documentation/nvme-write.txt
nvme-print.c
nvme-print.h
nvme.c

index ada1790e77b0ff2ed48f0aa58f4586aa81dd2842..272ff789607a7a427144230638b034ee3e8fd11d 100644 (file)
@@ -1,13 +1,13 @@
 '\" t
 .\"     Title: nvme-compare
-.\"    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
+.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\"      Date: 12/15/2021
 .\"    Manual: NVMe Manual
 .\"    Source: NVMe
 .\"  Language: English
 .\"
-.TH "NVME\-COMPARE" "1" "07/09/2021" "NVMe" "NVMe Manual"
+.TH "NVME\-COMPARE" "1" "12/15/2021" "NVMe" "NVMe Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -51,6 +51,7 @@ nvme-compare \- Send an NVMe Compare command, provide results
                         [\-\-dry\-run | \-w]
                         [\-\-latency | \-t]
                         [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
+                        [\-\-force]
 .fi
 .SH "DESCRIPTION"
 .sp
@@ -208,6 +209,11 @@ Print out the latency the IOCTL took (in us)\&.
 .RS 4
 This bit specifies the Storage Tag field shall be checked as part of end\-to\-end data protection processing\&.
 .RE
+.PP
+\-\-force
+.RS 4
+Ignore namespace is currently busy and perfome the operation even though\&.
+.RE
 .SH "EXAMPLES"
 .sp
 No examples yet\&.
index 0c13e3261ed27cc7730ec5ee2adc633e99de8f18..4f1e5d69e16c60008c5694d7471694ea6ac41063 100644 (file)
@@ -4,7 +4,7 @@
 <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.10" />\r
+<meta name="generator" content="AsciiDoc" />\r
 <title>nvme-compare(1)</title>\r
 <style type="text/css">\r
 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
@@ -436,7 +436,7 @@ thead, p.table.header {
 p.table {\r
   margin-top: 0;\r
 }\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+/* Because the table frame attribute is overridden by CSS in most browsers. */\r
 div.tableblock > table[frame="void"] {\r
   border-style: none;\r
 }\r
@@ -767,7 +767,8 @@ nvme-compare(1) Manual Page
                         [--show-command | -v]\r
                         [--dry-run | -w]\r
                         [--latency | -t]\r
-                        [--storage-tag-check&lt;storage-tag-check&gt; | -C &lt;storage-tag-check&gt;]</pre>\r
+                        [--storage-tag-check&lt;storage-tag-check&gt; | -C &lt;storage-tag-check&gt;]\r
+                        [--force]</pre>\r
 <div class="attribution">\r
 </div></div>\r
 </div>\r
@@ -1053,6 +1054,15 @@ metadata is passes.</p></td>
         data protection processing.\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+--force\r
+</dt>\r
+<dd>\r
+<p>\r
+    Ignore namespace is currently busy and perfome the operation\r
+    even though.\r
+</p>\r
+</dd>\r
 </dl></div>\r
 </div>\r
 </div>\r
@@ -1073,7 +1083,7 @@ metadata is passes.</p></td>
 <div id="footer">\r
 <div id="footer-text">\r
 Last updated\r
- 2021-07-09 14:16:50 IST\r
+ 2021-12-15 10:28:49 CET\r
 </div>\r
 </div>\r
 </body>\r
index b6f88637c3d10a15f9bf06c00b1b3fa123a08408..4f651627754136291b8ea0cee66fbb2a18c1f92b 100644 (file)
@@ -27,6 +27,7 @@ SYNOPSIS
                        [--dry-run | -w]
                        [--latency | -t]
                        [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
+                       [--force]
 
 DESCRIPTION
 -----------
@@ -145,6 +146,10 @@ metadata is passes.
        This bit specifies the Storage Tag field shall be checked as part of end-to-end
        data protection processing.
 
+--force::
+    Ignore namespace is currently busy and perfome the operation
+    even though.
+
 EXAMPLES
 --------
 No examples yet.
index dad63a68c68013aff71af30e1380f6e5e5731dfc..b9bb9c0cd0f918d2a4281b5f7c721fc88e68b1ea 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: nvme-format
 .\"    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
+.\"      Date: 12/15/2021
 .\"    Manual: NVMe Manual
 .\"    Source: NVMe
 .\"  Language: English
 .\"
-.TH "NVME\-FORMAT" "1" "10/20/2020" "NVMe" "NVMe Manual"
+.TH "NVME\-FORMAT" "1" "12/15/2021" "NVMe" "NVMe Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -40,7 +40,7 @@ nvme-format \- Format an NVMe device
                     [\-\-pi=<pi> | \-i <pi>]
                     [\-\-ms=<ms> | \-m <ms>]
                     [\-\-reset | \-r ]
-                    [\-\-force | \-f ]
+                    [\-\-force ]
                     [\-\-timeout=<timeout> | \-t <timeout> ]
 .fi
 .SH "DESCRIPTION"
@@ -168,7 +168,7 @@ Metadata Settings: This field is set to \(oq1\(cq if the metadata is transferred
 Issue a reset after successful format\&. Must use the character device for this\&.
 .RE
 .PP
-\-f, \-\-force
+\-\-force
 .RS 4
 Just send the command immediately without warning of the implications\&.
 .RE
index 032a870bb8b8211bcf658a540a3474565f9310a4..17967b9e6919f409001d99803d6eb66fd1590eaf 100644 (file)
@@ -4,7 +4,7 @@
 <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.10" />\r
+<meta name="generator" content="AsciiDoc" />\r
 <title>nvme-format(1)</title>\r
 <style type="text/css">\r
 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
@@ -436,7 +436,7 @@ thead, p.table.header {
 p.table {\r
   margin-top: 0;\r
 }\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+/* Because the table frame attribute is overridden by CSS in most browsers. */\r
 div.tableblock > table[frame="void"] {\r
   border-style: none;\r
 }\r
@@ -757,7 +757,7 @@ nvme-format(1) Manual Page
                     [--pi=&lt;pi&gt; | -i &lt;pi&gt;]\r
                     [--ms=&lt;ms&gt; | -m &lt;ms&gt;]\r
                     [--reset | -r ]\r
-                    [--force | -f ]\r
+                    [--force ]\r
                     [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt; ]</pre>\r
 <div class="attribution">\r
 </div></div>\r
@@ -977,9 +977,6 @@ cellspacing="0" cellpadding="4">
 </p>\r
 </dd>\r
 <dt class="hdlist1">\r
--f\r
-</dt>\r
-<dt class="hdlist1">\r
 --force\r
 </dt>\r
 <dd>\r
@@ -1038,7 +1035,7 @@ information:
 <div id="footer">\r
 <div id="footer-text">\r
 Last updated\r
- 2019-09-18 00:00:58 JST\r
+ 2021-12-15 10:13:26 CET\r
 </div>\r
 </div>\r
 </body>\r
index 9ef788ae0c7a98117dcc8a7dd98a471b0a0e8a65..cbadd1d62dbe879ff4ace7b0eae37e9ade3d3fdc 100644 (file)
@@ -16,7 +16,7 @@ SYNOPSIS
                    [--pi=<pi> | -i <pi>]
                    [--ms=<ms> | -m <ms>]
                    [--reset | -r ]
-                   [--force | -f ]
+                   [--force ]
                    [--timeout=<timeout> | -t <timeout> ]
 
 DESCRIPTION
@@ -128,7 +128,6 @@ cryptographically. This is accomplished by deleting the encryption key.
        Issue a reset after successful format. Must use the character
        device for this.
 
--f::
 --force::
        Just send the command immediately without warning of the implications.
 
index de73c08a50d8c2fc6d3846d3044dd771161265a7..93846be50cc20992ade59d5e42763cd7b232f679 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: nvme-id-ns
 .\"    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
+.\"      Date: 12/15/2021
 .\"    Manual: NVMe Manual
 .\"    Source: NVMe
 .\"  Language: English
 .\"
-.TH "NVME\-ID\-NS" "1" "10/20/2020" "NVMe" "NVMe Manual"
+.TH "NVME\-ID\-NS" "1" "12/15/2021" "NVMe" "NVMe Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -33,7 +33,7 @@ nvme-id-ns \- Send NVMe Identify Namespace, return result and structure
 .sp
 .nf
 \fInvme id\-ns\fR <device> [\-v | \-\-vendor\-specific] [\-b | \-\-raw\-binary]
-                    [\-\-namespace\-id=<nsid> | \-n <nsid>] [\-f | \-\-force]
+                    [\-\-namespace\-id=<nsid> | \-n <nsid>] [\-\-force]
                     [\-\-human\-readable | \-H]
                     [\-\-output\-format=<fmt> | \-o <fmt>]
 .fi
@@ -51,7 +51,7 @@ On success, the structure may be returned in one of several ways depending on th
 Retrieve the identify namespace structure for the given nsid\&. This is required for the character devices, or overrides the block nsid if given\&.
 .RE
 .PP
-\-f, \-\-force
+\-\-force
 .RS 4
 Request controller return the identify namespace structure even if the namespace is not attached to the controller\&. This is valid only for controllers at or newer than revision 1\&.2\&. Controllers at revision lower than this may interpret the command incorrectly\&.
 .RE
index 283fc338f2ede0faa74a241d4625293db4ea3cc9..dc397041c12204d13fc3f1bab90e56e38f2deb32 100644 (file)
@@ -4,7 +4,7 @@
 <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.10" />\r
+<meta name="generator" content="AsciiDoc" />\r
 <title>nvme-id-ns(1)</title>\r
 <style type="text/css">\r
 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
@@ -436,7 +436,7 @@ thead, p.table.header {
 p.table {\r
   margin-top: 0;\r
 }\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+/* Because the table frame attribute is overridden by CSS in most browsers. */\r
 div.tableblock > table[frame="void"] {\r
   border-style: none;\r
 }\r
@@ -750,7 +750,7 @@ nvme-id-ns(1) Manual Page
 <div class="sectionbody">\r
 <div class="verseblock">\r
 <pre class="content"><em>nvme id-ns</em> &lt;device&gt; [-v | --vendor-specific] [-b | --raw-binary]\r
-                    [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;] [-f | --force]\r
+                    [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;] [--force]\r
                     [--human-readable | -H]\r
                     [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>\r
 <div class="attribution">\r
@@ -791,9 +791,6 @@ raw buffer may be printed to stdout.</p></div>
 </p>\r
 </dd>\r
 <dt class="hdlist1">\r
--f\r
-</dt>\r
-<dt class="hdlist1">\r
 --force\r
 </dt>\r
 <dd>\r
@@ -955,7 +952,7 @@ int main(int argc, char **argv)
 <div id="footer">\r
 <div id="footer-text">\r
 Last updated\r
- 2018-11-29 13:36:39 GMT\r
+ 2021-12-15 10:13:40 CET\r
 </div>\r
 </div>\r
 </body>\r
index 4b3c258f6436175f1b4d6e8a2cc209306ec1b39b..d12b1576da7a90aa8f8c4d44f1d470dd13ed90df 100644 (file)
@@ -9,7 +9,7 @@ SYNOPSIS
 --------
 [verse]
 'nvme id-ns' <device> [-v | --vendor-specific] [-b | --raw-binary]
-                   [--namespace-id=<nsid> | -n <nsid>] [-f | --force]
+                   [--namespace-id=<nsid> | -n <nsid>] [--force]
                    [--human-readable | -H]
                    [--output-format=<fmt> | -o <fmt>]
 
@@ -37,7 +37,6 @@ OPTIONS
        is required for the character devices, or overrides the block nsid
        if given.
 
--f::
 --force::
        Request controller return the identify namespace structure even
        if the namespace is not attached to the controller. This is valid
index 4156729e73d02d078a02ca6625376e98ee9314dc..8ceb34e60b1e6a25fe185ba8eceb70e384e29355 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: nvme-lnvm-id-ns
 .\"    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
+.\"      Date: 12/15/2021
 .\"    Manual: NVMe Manual
 .\"    Source: NVMe
 .\"  Language: English
 .\"
-.TH "NVME\-LNVM\-ID\-NS" "1" "10/20/2020" "NVMe" "NVMe Manual"
+.TH "NVME\-LNVM\-ID\-NS" "1" "12/15/2021" "NVMe" "NVMe Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -33,7 +33,7 @@ nvme-lnvm-id-ns \- Identify Geometry for LightNVM NVMe device
 .sp
 .nf
 \fInvme lnvm\-id\-ns\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
-                        [\-\-force | \-f]
+                        [\-\-force ]
                         [\-\-raw\-binary | \-b]
                         [\-\-human\-readable | \-H]
 .fi
@@ -47,7 +47,7 @@ Send an Identify Geometry command to the given LightNVM device, returns properti
 Retrieve the geometry from the selected namespace\&.
 .RE
 .PP
-\-\-force, \-f
+\-\-force
 .RS 4
 Try to read the data and assume it is a LightNVM device
 .RE
index a3bc88895985fc8d66530b79523020658d6ce3b9..2f353290f1feb126149056886a8b8227e99e7cd7 100644 (file)
@@ -4,7 +4,7 @@
 <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.10" />\r
+<meta name="generator" content="AsciiDoc" />\r
 <title>nvme-lnvm-id-ns(1)</title>\r
 <style type="text/css">\r
 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
@@ -436,7 +436,7 @@ thead, p.table.header {
 p.table {\r
   margin-top: 0;\r
 }\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+/* Because the table frame attribute is overridden by CSS in most browsers. */\r
 div.tableblock > table[frame="void"] {\r
   border-style: none;\r
 }\r
@@ -750,7 +750,7 @@ nvme-lnvm-id-ns(1) Manual Page
 <div class="sectionbody">\r
 <div class="verseblock">\r
 <pre class="content"><em>nvme lnvm-id-ns</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]\r
-                        [--force | -f]\r
+                        [--force ]\r
                         [--raw-binary | -b]\r
                         [--human-readable | -H]</pre>\r
 <div class="attribution">\r
@@ -783,9 +783,6 @@ format.</p></div>
 <dt class="hdlist1">\r
 --force\r
 </dt>\r
-<dt class="hdlist1">\r
--f\r
-</dt>\r
 <dd>\r
 <p>\r
         Try to read the data and assume it is a LightNVM device\r
@@ -843,7 +840,7 @@ Retrieve the geometry from nvme0
 <div id="footer">\r
 <div id="footer-text">\r
 Last updated\r
- 2019-10-12 00:12:24 JST\r
+ 2021-12-15 10:13:53 CET\r
 </div>\r
 </div>\r
 </body>\r
index 1a3565fbc6f5d668446a3f654e6750bb1a2534da..7b58f29ed5667da0fc6945aebb4e417451be3a8f 100644 (file)
@@ -9,7 +9,7 @@ SYNOPSIS
 --------
 [verse]
 'nvme lnvm-id-ns' <device> [--namespace-id=<nsid> | -n <nsid>]
-                       [--force | -f]
+                       [--force ]
                        [--raw-binary | -b]
                        [--human-readable | -H]
 
@@ -26,7 +26,6 @@ OPTIONS
        Retrieve the geometry from the selected namespace.
 
 --force::
--f::
        Try to read the data and assume it is a LightNVM device
 
 --raw-binary::
index 303fc05aff76b4b98987d63f1b8855454ea864d2..31af8bf701364f8a0a67a87dc0ac8bf44f3235ab 100644 (file)
@@ -1,13 +1,13 @@
 '\" t
 .\"     Title: nvme-read
-.\"    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
+.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\"      Date: 12/15/2021
 .\"    Manual: NVMe Manual
 .\"    Source: NVMe
 .\"  Language: English
 .\"
-.TH "NVME\-READ" "1" "07/09/2021" "NVMe" "NVMe Manual"
+.TH "NVME\-READ" "1" "12/15/2021" "NVMe" "NVMe Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -51,6 +51,7 @@ nvme-read \- Send an NVMe Read command, provide results
                         [\-\-dry\-run | \-w]
                         [\-\-latency | \-t]
                         [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
+                        [\-\-force]
 .fi
 .SH "DESCRIPTION"
 .sp
@@ -184,6 +185,11 @@ Print out the latency the IOCTL took (in us)\&.
 .RS 4
 This bit specifies the Storage Tag field shall be checked as part of end\-to\-end data protection processing\&.
 .RE
+.PP
+\-\-force
+.RS 4
+Ignore namespace is currently busy and perfome the operation even though\&.
+.RE
 .SH "EXAMPLES"
 .sp
 No examples yet\&.
index d61580c46cf1de00ccb52695ff6d71b6d4f217da..5fe71cc972a2813b20e80e40e6d953a6c629b3fc 100644 (file)
@@ -4,7 +4,7 @@
 <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.10" />\r
+<meta name="generator" content="AsciiDoc" />\r
 <title>nvme-read(1)</title>\r
 <style type="text/css">\r
 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
@@ -436,7 +436,7 @@ thead, p.table.header {
 p.table {\r
   margin-top: 0;\r
 }\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+/* Because the table frame attribute is overridden by CSS in most browsers. */\r
 div.tableblock > table[frame="void"] {\r
   border-style: none;\r
 }\r
@@ -767,7 +767,8 @@ nvme-read(1) Manual Page
                         [--show-command | -v]\r
                         [--dry-run | -w]\r
                         [--latency | -t]\r
-                        [--storage-tag-check&lt;storage-tag-check&gt; | -C &lt;storage-tag-check&gt;]</pre>\r
+                        [--storage-tag-check&lt;storage-tag-check&gt; | -C &lt;storage-tag-check&gt;]\r
+                        [--force]</pre>\r
 <div class="attribution">\r
 </div></div>\r
 </div>\r
@@ -1026,6 +1027,15 @@ metadata is passes.</p></td>
         data protection processing.\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+--force\r
+</dt>\r
+<dd>\r
+<p>\r
+    Ignore namespace is currently busy and perfome the operation\r
+    even though.\r
+</p>\r
+</dd>\r
 </dl></div>\r
 </div>\r
 </div>\r
@@ -1046,7 +1056,7 @@ metadata is passes.</p></td>
 <div id="footer">\r
 <div id="footer-text">\r
 Last updated\r
- 2021-07-09 14:16:42 IST\r
+ 2021-12-15 10:28:16 CET\r
 </div>\r
 </div>\r
 </body>\r
index 58902e7116d9510d88fbcc7d04247f8f096015fd..2d641371138c6e5b24862c2555df0a624ef3c280 100644 (file)
@@ -27,6 +27,7 @@ SYNOPSIS
                        [--dry-run | -w]
                        [--latency | -t]
                        [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
+                       [--force]
 
 DESCRIPTION
 -----------
@@ -134,6 +135,10 @@ metadata is passes.
        This bit specifies the Storage Tag field shall be checked as part of end-to-end
        data protection processing.
 
+--force::
+    Ignore namespace is currently busy and perfome the operation
+    even though.
+
 EXAMPLES
 --------
 No examples yet.
index 709992e42419e0a2a5b9f6a95ed44bd58f319789..5e4ed67a09b2f6509e8f6c011438726e85ce42ef 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: nvme-sanitize
 .\"    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
+.\"      Date: 12/15/2021
 .\"    Manual: NVMe Manual
 .\"    Source: NVMe
 .\"  Language: English
 .\"
-.TH "NVME\-SANITIZE" "1" "10/20/2020" "NVMe" "NVMe Manual"
+.TH "NVME\-SANITIZE" "1" "12/15/2021" "NVMe" "NVMe Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -38,6 +38,7 @@ nvme-sanitize \- Send NVMe Sanitize Command, return result
               [\-\-ause | \-u]
               [\-\-sanact=<action> | \-a <action>]
               [\-\-ovrpat=<overwrite\-pattern> | \-p <overwrite\-pattern>]
+              [\-\-force]
 .fi
 .SH "DESCRIPTION"
 .sp
@@ -77,6 +78,11 @@ Sanitize Action: 000b \- Reserved 001b \- Exit Failure Mode 010b \- Start a Bloc
 .RS 4
 Overwrite Pattern: This field is ignored unless the Sanitize Action field in Command Dword 10 is set to 011b (i\&.e\&., Overwrite)\&. This field specifies a 32\-bit pattern that is used for the Overwrite sanitize operation\&.
 .RE
+.PP
+\-\-force
+.RS 4
+Ignore namespace is currently busy and perfome the operation even though\&.
+.RE
 .SH "EXAMPLES"
 .sp
 .RS 4
index 9870cbc6bcd738b56186bd4af9d28f6bd90f46c1..ae77811fcb367649a157eb3eba4167ad6f12c96e 100644 (file)
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
-<meta name="generator" content="AsciiDoc 8.6.9" />
-<title>nvme-sanitize(1)</title>
-<style type="text/css">
-/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
-
-/* Default font. */
-body {
-  font-family: Georgia,serif;
-}
-
-/* Title font. */
-h1, h2, h3, h4, h5, h6,
-div.title, caption.title,
-thead, p.table.header,
-#toctitle,
-#author, #revnumber, #revdate, #revremark,
-#footer {
-  font-family: Arial,Helvetica,sans-serif;
-}
-
-body {
-  margin: 1em 5% 1em 5%;
-}
-
-a {
-  color: blue;
-  text-decoration: underline;
-}
-a:visited {
-  color: fuchsia;
-}
-
-em {
-  font-style: italic;
-  color: navy;
-}
-
-strong {
-  font-weight: bold;
-  color: #083194;
-}
-
-h1, h2, h3, h4, h5, h6 {
-  color: #527bbd;
-  margin-top: 1.2em;
-  margin-bottom: 0.5em;
-  line-height: 1.3;
-}
-
-h1, h2, h3 {
-  border-bottom: 2px solid silver;
-}
-h2 {
-  padding-top: 0.5em;
-}
-h3 {
-  float: left;
-}
-h3 + * {
-  clear: left;
-}
-h5 {
-  font-size: 1.0em;
-}
-
-div.sectionbody {
-  margin-left: 0;
-}
-
-hr {
-  border: 1px solid silver;
-}
-
-p {
-  margin-top: 0.5em;
-  margin-bottom: 0.5em;
-}
-
-ul, ol, li > p {
-  margin-top: 0;
-}
-ul > li     { color: #aaa; }
-ul > li > * { color: black; }
-
-.monospaced, code, pre {
-  font-family: "Courier New", Courier, monospace;
-  font-size: inherit;
-  color: navy;
-  padding: 0;
-  margin: 0;
-}
-pre {
-  white-space: pre-wrap;
-}
-
-#author {
-  color: #527bbd;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-#email {
-}
-#revnumber, #revdate, #revremark {
-}
-
-#footer {
-  font-size: small;
-  border-top: 2px solid silver;
-  padding-top: 0.5em;
-  margin-top: 4.0em;
-}
-#footer-text {
-  float: left;
-  padding-bottom: 0.5em;
-}
-#footer-badges {
-  float: right;
-  padding-bottom: 0.5em;
-}
-
-#preamble {
-  margin-top: 1.5em;
-  margin-bottom: 1.5em;
-}
-div.imageblock, div.exampleblock, div.verseblock,
-div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
-div.admonitionblock {
-  margin-top: 1.0em;
-  margin-bottom: 1.5em;
-}
-div.admonitionblock {
-  margin-top: 2.0em;
-  margin-bottom: 2.0em;
-  margin-right: 10%;
-  color: #606060;
-}
-
-div.content { /* Block element content. */
-  padding: 0;
-}
-
-/* Block element titles. */
-div.title, caption.title {
-  color: #527bbd;
-  font-weight: bold;
-  text-align: left;
-  margin-top: 1.0em;
-  margin-bottom: 0.5em;
-}
-div.title + * {
-  margin-top: 0;
-}
-
-td div.title:first-child {
-  margin-top: 0.0em;
-}
-div.content div.title:first-child {
-  margin-top: 0.0em;
-}
-div.content + div.title {
-  margin-top: 0.0em;
-}
-
-div.sidebarblock > div.content {
-  background: #ffffee;
-  border: 1px solid #dddddd;
-  border-left: 4px solid #f0f0f0;
-  padding: 0.5em;
-}
-
-div.listingblock > div.content {
-  border: 1px solid #dddddd;
-  border-left: 5px solid #f0f0f0;
-  background: #f8f8f8;
-  padding: 0.5em;
-}
-
-div.quoteblock, div.verseblock {
-  padding-left: 1.0em;
-  margin-left: 1.0em;
-  margin-right: 10%;
-  border-left: 5px solid #f0f0f0;
-  color: #888;
-}
-
-div.quoteblock > div.attribution {
-  padding-top: 0.5em;
-  text-align: right;
-}
-
-div.verseblock > pre.content {
-  font-family: inherit;
-  font-size: inherit;
-}
-div.verseblock > div.attribution {
-  padding-top: 0.75em;
-  text-align: left;
-}
-/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
-div.verseblock + div.attribution {
-  text-align: left;
-}
-
-div.admonitionblock .icon {
-  vertical-align: top;
-  font-size: 1.1em;
-  font-weight: bold;
-  text-decoration: underline;
-  color: #527bbd;
-  padding-right: 0.5em;
-}
-div.admonitionblock td.content {
-  padding-left: 0.5em;
-  border-left: 3px solid #dddddd;
-}
-
-div.exampleblock > div.content {
-  border-left: 3px solid #dddddd;
-  padding-left: 0.5em;
-}
-
-div.imageblock div.content { padding-left: 0; }
-span.image img { border-style: none; vertical-align: text-bottom; }
-a.image:visited { color: white; }
-
-dl {
-  margin-top: 0.8em;
-  margin-bottom: 0.8em;
-}
-dt {
-  margin-top: 0.5em;
-  margin-bottom: 0;
-  font-style: normal;
-  color: navy;
-}
-dd > *:first-child {
-  margin-top: 0.1em;
-}
-
-ul, ol {
-    list-style-position: outside;
-}
-ol.arabic {
-  list-style-type: decimal;
-}
-ol.loweralpha {
-  list-style-type: lower-alpha;
-}
-ol.upperalpha {
-  list-style-type: upper-alpha;
-}
-ol.lowerroman {
-  list-style-type: lower-roman;
-}
-ol.upperroman {
-  list-style-type: upper-roman;
-}
-
-div.compact ul, div.compact ol,
-div.compact p, div.compact p,
-div.compact div, div.compact div {
-  margin-top: 0.1em;
-  margin-bottom: 0.1em;
-}
-
-tfoot {
-  font-weight: bold;
-}
-td > div.verse {
-  white-space: pre;
-}
-
-div.hdlist {
-  margin-top: 0.8em;
-  margin-bottom: 0.8em;
-}
-div.hdlist tr {
-  padding-bottom: 15px;
-}
-dt.hdlist1.strong, td.hdlist1.strong {
-  font-weight: bold;
-}
-td.hdlist1 {
-  vertical-align: top;
-  font-style: normal;
-  padding-right: 0.8em;
-  color: navy;
-}
-td.hdlist2 {
-  vertical-align: top;
-}
-div.hdlist.compact tr {
-  margin: 0;
-  padding-bottom: 0;
-}
-
-.comment {
-  background: yellow;
-}
-
-.footnote, .footnoteref {
-  font-size: 0.8em;
-}
-
-span.footnote, span.footnoteref {
-  vertical-align: super;
-}
-
-#footnotes {
-  margin: 20px 0 20px 0;
-  padding: 7px 0 0 0;
-}
-
-#footnotes div.footnote {
-  margin: 0 0 5px 0;
-}
-
-#footnotes hr {
-  border: none;
-  border-top: 1px solid silver;
-  height: 1px;
-  text-align: left;
-  margin-left: 0;
-  width: 20%;
-  min-width: 100px;
-}
-
-div.colist td {
-  padding-right: 0.5em;
-  padding-bottom: 0.3em;
-  vertical-align: top;
-}
-div.colist td img {
-  margin-top: 0.3em;
-}
-
-@media print {
-  #footer-badges { display: none; }
-}
-
-#toc {
-  margin-bottom: 2.5em;
-}
-
-#toctitle {
-  color: #527bbd;
-  font-size: 1.1em;
-  font-weight: bold;
-  margin-top: 1.0em;
-  margin-bottom: 0.1em;
-}
-
-div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
-  margin-top: 0;
-  margin-bottom: 0;
-}
-div.toclevel2 {
-  margin-left: 2em;
-  font-size: 0.9em;
-}
-div.toclevel3 {
-  margin-left: 4em;
-  font-size: 0.9em;
-}
-div.toclevel4 {
-  margin-left: 6em;
-  font-size: 0.9em;
-}
-
-span.aqua { color: aqua; }
-span.black { color: black; }
-span.blue { color: blue; }
-span.fuchsia { color: fuchsia; }
-span.gray { color: gray; }
-span.green { color: green; }
-span.lime { color: lime; }
-span.maroon { color: maroon; }
-span.navy { color: navy; }
-span.olive { color: olive; }
-span.purple { color: purple; }
-span.red { color: red; }
-span.silver { color: silver; }
-span.teal { color: teal; }
-span.white { color: white; }
-span.yellow { color: yellow; }
-
-span.aqua-background { background: aqua; }
-span.black-background { background: black; }
-span.blue-background { background: blue; }
-span.fuchsia-background { background: fuchsia; }
-span.gray-background { background: gray; }
-span.green-background { background: green; }
-span.lime-background { background: lime; }
-span.maroon-background { background: maroon; }
-span.navy-background { background: navy; }
-span.olive-background { background: olive; }
-span.purple-background { background: purple; }
-span.red-background { background: red; }
-span.silver-background { background: silver; }
-span.teal-background { background: teal; }
-span.white-background { background: white; }
-span.yellow-background { background: yellow; }
-
-span.big { font-size: 2em; }
-span.small { font-size: 0.6em; }
-
-span.underline { text-decoration: underline; }
-span.overline { text-decoration: overline; }
-span.line-through { text-decoration: line-through; }
-
-div.unbreakable { page-break-inside: avoid; }
-
-
-/*
- * xhtml11 specific
- *
- * */
-
-div.tableblock {
-  margin-top: 1.0em;
-  margin-bottom: 1.5em;
-}
-div.tableblock > table {
-  border: 3px solid #527bbd;
-}
-thead, p.table.header {
-  font-weight: bold;
-  color: #527bbd;
-}
-p.table {
-  margin-top: 0;
-}
-/* Because the table frame attribute is overridden by CSS in most browsers. */
-div.tableblock > table[frame="void"] {
-  border-style: none;
-}
-div.tableblock > table[frame="hsides"] {
-  border-left-style: none;
-  border-right-style: none;
-}
-div.tableblock > table[frame="vsides"] {
-  border-top-style: none;
-  border-bottom-style: none;
-}
-
-
-/*
- * html5 specific
- *
- * */
-
-table.tableblock {
-  margin-top: 1.0em;
-  margin-bottom: 1.5em;
-}
-thead, p.tableblock.header {
-  font-weight: bold;
-  color: #527bbd;
-}
-p.tableblock {
-  margin-top: 0;
-}
-table.tableblock {
-  border-width: 3px;
-  border-spacing: 0px;
-  border-style: solid;
-  border-color: #527bbd;
-  border-collapse: collapse;
-}
-th.tableblock, td.tableblock {
-  border-width: 1px;
-  padding: 4px;
-  border-style: solid;
-  border-color: #527bbd;
-}
-
-table.tableblock.frame-topbot {
-  border-left-style: hidden;
-  border-right-style: hidden;
-}
-table.tableblock.frame-sides {
-  border-top-style: hidden;
-  border-bottom-style: hidden;
-}
-table.tableblock.frame-none {
-  border-style: hidden;
-}
-
-th.tableblock.halign-left, td.tableblock.halign-left {
-  text-align: left;
-}
-th.tableblock.halign-center, td.tableblock.halign-center {
-  text-align: center;
-}
-th.tableblock.halign-right, td.tableblock.halign-right {
-  text-align: right;
-}
-
-th.tableblock.valign-top, td.tableblock.valign-top {
-  vertical-align: top;
-}
-th.tableblock.valign-middle, td.tableblock.valign-middle {
-  vertical-align: middle;
-}
-th.tableblock.valign-bottom, td.tableblock.valign-bottom {
-  vertical-align: bottom;
-}
-
-
-/*
- * manpage specific
- *
- * */
-
-body.manpage h1 {
-  padding-top: 0.5em;
-  padding-bottom: 0.5em;
-  border-top: 2px solid silver;
-  border-bottom: 2px solid silver;
-}
-body.manpage h2 {
-  border-style: none;
-}
-body.manpage div.sectionbody {
-  margin-left: 3em;
-}
-
-@media print {
-  body.manpage div#toc { display: none; }
-}
-
-
-</style>
-<script type="text/javascript">
-/*<![CDATA[*/
-var asciidoc = {  // Namespace.
-
-/////////////////////////////////////////////////////////////////////
-// Table Of Contents generator
-/////////////////////////////////////////////////////////////////////
-
-/* Author: Mihai Bazon, September 2002
- * http://students.infoiasi.ro/~mishoo
- *
- * Table Of Content generator
- * Version: 0.4
- *
- * Feel free to use this script under the terms of the GNU General Public
- * License, as long as you do not remove or alter this notice.
- */
-
- /* modified by Troy D. Hanson, September 2006. License: GPL */
- /* modified by Stuart Rackham, 2006, 2009. License: GPL */
-
-// toclevels = 1..4.
-toc: function (toclevels) {
-
-  function getText(el) {
-    var text = "";
-    for (var i = el.firstChild; i != null; i = i.nextSibling) {
-      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
-        text += i.data;
-      else if (i.firstChild != null)
-        text += getText(i);
-    }
-    return text;
-  }
-
-  function TocEntry(el, text, toclevel) {
-    this.element = el;
-    this.text = text;
-    this.toclevel = toclevel;
-  }
-
-  function tocEntries(el, toclevels) {
-    var result = new Array;
-    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
-    // Function that scans the DOM tree for header elements (the DOM2
-    // nodeIterator API would be a better technique but not supported by all
-    // browsers).
-    var iterate = function (el) {
-      for (var i = el.firstChild; i != null; i = i.nextSibling) {
-        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
-          var mo = re.exec(i.tagName);
-          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
-            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
-          }
-          iterate(i);
-        }
-      }
-    }
-    iterate(el);
-    return result;
-  }
-
-  var toc = document.getElementById("toc");
-  if (!toc) {
-    return;
-  }
-
-  // Delete existing TOC entries in case we're reloading the TOC.
-  var tocEntriesToRemove = [];
-  var i;
-  for (i = 0; i < toc.childNodes.length; i++) {
-    var entry = toc.childNodes[i];
-    if (entry.nodeName.toLowerCase() == 'div'
-     && entry.getAttribute("class")
-     && entry.getAttribute("class").match(/^toclevel/))
-      tocEntriesToRemove.push(entry);
-  }
-  for (i = 0; i < tocEntriesToRemove.length; i++) {
-    toc.removeChild(tocEntriesToRemove[i]);
-  }
-
-  // Rebuild TOC entries.
-  var entries = tocEntries(document.getElementById("content"), toclevels);
-  for (var i = 0; i < entries.length; ++i) {
-    var entry = entries[i];
-    if (entry.element.id == "")
-      entry.element.id = "_toc_" + i;
-    var a = document.createElement("a");
-    a.href = "#" + entry.element.id;
-    a.appendChild(document.createTextNode(entry.text));
-    var div = document.createElement("div");
-    div.appendChild(a);
-    div.className = "toclevel" + entry.toclevel;
-    toc.appendChild(div);
-  }
-  if (entries.length == 0)
-    toc.parentNode.removeChild(toc);
-},
-
-
-/////////////////////////////////////////////////////////////////////
-// Footnotes generator
-/////////////////////////////////////////////////////////////////////
-
-/* Based on footnote generation code from:
- * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
- */
-
-footnotes: function () {
-  // Delete existing footnote entries in case we're reloading the footnodes.
-  var i;
-  var noteholder = document.getElementById("footnotes");
-  if (!noteholder) {
-    return;
-  }
-  var entriesToRemove = [];
-  for (i = 0; i < noteholder.childNodes.length; i++) {
-    var entry = noteholder.childNodes[i];
-    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
-      entriesToRemove.push(entry);
-  }
-  for (i = 0; i < entriesToRemove.length; i++) {
-    noteholder.removeChild(entriesToRemove[i]);
-  }
-
-  // Rebuild footnote entries.
-  var cont = document.getElementById("content");
-  var spans = cont.getElementsByTagName("span");
-  var refs = {};
-  var n = 0;
-  for (i=0; i<spans.length; i++) {
-    if (spans[i].className == "footnote") {
-      n++;
-      var note = spans[i].getAttribute("data-note");
-      if (!note) {
-        // Use [\s\S] in place of . so multi-line matches work.
-        // Because JavaScript has no s (dotall) regex flag.
-        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
-        spans[i].innerHTML =
-          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
-          "' title='View footnote' class='footnote'>" + n + "</a>]";
-        spans[i].setAttribute("data-note", note);
-      }
-      noteholder.innerHTML +=
-        "<div class='footnote' id='_footnote_" + n + "'>" +
-        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
-        n + "</a>. " + note + "</div>";
-      var id =spans[i].getAttribute("id");
-      if (id != null) refs["#"+id] = n;
-    }
-  }
-  if (n == 0)
-    noteholder.parentNode.removeChild(noteholder);
-  else {
-    // Process footnoterefs.
-    for (i=0; i<spans.length; i++) {
-      if (spans[i].className == "footnoteref") {
-        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
-        href = href.match(/#.*/)[0];  // Because IE return full URL.
-        n = refs[href];
-        spans[i].innerHTML =
-          "[<a href='#_footnote_" + n +
-          "' title='View footnote' class='footnote'>" + n + "</a>]";
-      }
-    }
-  }
-},
-
-install: function(toclevels) {
-  var timerId;
-
-  function reinstall() {
-    asciidoc.footnotes();
-    if (toclevels) {
-      asciidoc.toc(toclevels);
-    }
-  }
-
-  function reinstallAndRemoveTimer() {
-    clearInterval(timerId);
-    reinstall();
-  }
-
-  timerId = setInterval(reinstall, 500);
-  if (document.addEventListener)
-    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
-  else
-    window.onload = reinstallAndRemoveTimer;
-}
-
-}
-asciidoc.install();
-/*]]>*/
-</script>
-</head>
-<body class="manpage">
-<div id="header">
-<h1>
-nvme-sanitize(1) Manual Page
-</h1>
-<h2>NAME</h2>
-<div class="sectionbody">
-<p>nvme-sanitize -
-   Send NVMe Sanitize Command, return result
-</p>
-</div>
-</div>
-<div id="content">
-<div class="sect1">
-<h2 id="_synopsis">SYNOPSIS</h2>
-<div class="sectionbody">
-<div class="verseblock">
-<pre class="content"><em>nvme sanitize</em> &lt;device&gt; [--no-dealloc | -d]
-              [--oipbp | -i]
-              [--owpass=&lt;overwrite-pass-count&gt; | -n &lt;overwrite-pass-count&gt;]
-              [--ause | -u]
-              [--sanact=&lt;action&gt; | -a &lt;action&gt;]
-              [--ovrpat=&lt;overwrite-pattern&gt; | -p &lt;overwrite-pattern&gt;]</pre>
-<div class="attribution">
-</div></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_description">DESCRIPTION</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>For the NVMe device given, sends a Sanitize command and
-provides the result.</p></div>
-<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
-<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_options">OPTIONS</h2>
-<div class="sectionbody">
-<div class="dlist"><dl>
-<dt class="hdlist1">
--d
-</dt>
-<dt class="hdlist1">
---no-delloc
-</dt>
-<dd>
-<p>
-    No Deallocate After Sanitize:
-    If set, then the controller shall not deallocate any logical
-    blocks as a result of successfully completing the sanitize
-    operation. If cleared, then the controller should deallocate
-    logical blocks as a result of successfully completing the
-    sanitize operation.  This bit shall be ignored if the Sanitize
-    Action field is set to 001b (i.e., Exit Failure Mode).
-</p>
-</dd>
-<dt class="hdlist1">
--i
-</dt>
-<dt class="hdlist1">
---oipbp
-</dt>
-<dd>
-<p>
-    Overwrite Invert Pattern Between Passes:
-    If set, then the Overwrite Pattern shall be inverted between
-    passes. If cleared, then the overwrite pattern shall not be
-    inverted between passes. This bit shall be ignored unless the
-    Sanitize Action field is set to 011b (i.e., Overwrite).
-</p>
-</dd>
-<dt class="hdlist1">
--n &lt;overwrite-pass-count&gt;
-</dt>
-<dt class="hdlist1">
---owpass=&lt;overwrite-pass-count&gt;
-</dt>
-<dd>
-<p>
-    Overwrite Pass Count:
-    This field specifies the number of overwrite passes (i.e.,
-    how many times the media is to be overwritten) using the data
-    from the Overwrite Pattern field of this command. A value of 0
-    specifies 16 overwrite passes. This field shall be ignored
-    unless the Sanitize Action field is set to 011b (i.e., Overwrite).
-</p>
-</dd>
-<dt class="hdlist1">
--u
-</dt>
-<dt class="hdlist1">
---ause
-</dt>
-<dd>
-<p>
-    Allow Unrestricted Sanitize Exit:
-    If set, then the sanitize operation is performed in unrestricted
-    completion mode. If cleared then the sanitize operation is
-    performed in restricted completion mode. This bit shall be ignored
-    if the Sanitize Action field is set to 001b (i.e., Exit Failure Mode).
-</p>
-</dd>
-<dt class="hdlist1">
--a &lt;action&gt;
-</dt>
-<dt class="hdlist1">
---sanact=&lt;action&gt;
-</dt>
-<dd>
-<p>
-    Sanitize Action:
-    000b - Reserved
-    001b - Exit Failure Mode
-    010b - Start a Block Erase sanitize operation
-    011b - Start an Overwrite sanitize operation
-    100b - Start a Crypto Erase sanitize operation
-</p>
-</dd>
-<dt class="hdlist1">
--p &lt;overwrite-pattern&gt;
-</dt>
-<dt class="hdlist1">
---ovrpat=&lt;overwrite-pattern&gt;
-</dt>
-<dd>
-<p>
-    Overwrite Pattern:
-    This field is ignored unless the Sanitize Action field in
-    Command Dword 10 is set to 011b (i.e., Overwrite). This field
-    specifies a 32-bit pattern that is used for the Overwrite
-    sanitize operation.
-</p>
-</dd>
-</dl></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_examples">EXAMPLES</h2>
-<div class="sectionbody">
-<div class="ulist"><ul>
-<li>
-<p>
-Has the program issue Sanitize Command :
-</p>
-<div class="listingblock">
-<div class="content">
-<pre><code># nvme sanitize /dev/nvme0n1 -a 0x02
-# nvme sanitize /dev/nvme0n1 --sanact=0x01</code></pre>
-</div></div>
-</li>
-</ul></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_nvme">NVME</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
-</div>
-</div>
-</div>
-<div id="footnotes"><hr /></div>
-<div id="footer">
-<div id="footer-text">
-Last updated
- 2017-06-28 18:52:37 PDT
-</div>
-</div>
-</body>
-</html>
+<?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" />\r
+<title>nvme-sanitize(1)</title>\r
+<style type="text/css">\r
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
+\r
+/* Default font. */\r
+body {\r
+  font-family: Georgia,serif;\r
+}\r
+\r
+/* Title font. */\r
+h1, h2, h3, h4, h5, h6,\r
+div.title, caption.title,\r
+thead, p.table.header,\r
+#toctitle,\r
+#author, #revnumber, #revdate, #revremark,\r
+#footer {\r
+  font-family: Arial,Helvetica,sans-serif;\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a {\r
+  color: blue;\r
+  text-decoration: underline;\r
+}\r
+a:visited {\r
+  color: fuchsia;\r
+}\r
+\r
+em {\r
+  font-style: italic;\r
+  color: navy;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+  color: #083194;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1, h2, h3 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  padding-top: 0.5em;\r
+}\r
+h3 {\r
+  float: left;\r
+}\r
+h3 + * {\r
+  clear: left;\r
+}\r
+h5 {\r
+  font-size: 1.0em;\r
+}\r
+\r
+div.sectionbody {\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+ul, ol, li > p {\r
+  margin-top: 0;\r
+}\r
+ul > li     { color: #aaa; }\r
+ul > li > * { color: black; }\r
+\r
+.monospaced, code, pre {\r
+  font-family: "Courier New", Courier, monospace;\r
+  font-size: inherit;\r
+  color: navy;\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+pre {\r
+  white-space: pre-wrap;\r
+}\r
+\r
+#author {\r
+  color: #527bbd;\r
+  font-weight: bold;\r
+  font-size: 1.1em;\r
+}\r
+#email {\r
+}\r
+#revnumber, #revdate, #revremark {\r
+}\r
+\r
+#footer {\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+#preamble {\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-top: 1.0em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.0em;\r
+  margin-bottom: 2.0em;\r
+  margin-right: 10%;\r
+  color: #606060;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  color: #527bbd;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid #dddddd;\r
+  border-left: 4px solid #f0f0f0;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid #dddddd;\r
+  border-left: 5px solid #f0f0f0;\r
+  background: #f8f8f8;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock, div.verseblock {\r
+  padding-left: 1.0em;\r
+  margin-left: 1.0em;\r
+  margin-right: 10%;\r
+  border-left: 5px solid #f0f0f0;\r
+  color: #888;\r
+}\r
+\r
+div.quoteblock > div.attribution {\r
+  padding-top: 0.5em;\r
+  text-align: right;\r
+}\r
+\r
+div.verseblock > pre.content {\r
+  font-family: inherit;\r
+  font-size: inherit;\r
+}\r
+div.verseblock > div.attribution {\r
+  padding-top: 0.75em;\r
+  text-align: left;\r
+}\r
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */\r
+div.verseblock + div.attribution {\r
+  text-align: left;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 3px solid #dddddd;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 3px solid #dddddd;\r
+  padding-left: 0.5em;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+span.image img { border-style: none; vertical-align: text-bottom; }\r
+a.image:visited { color: white; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: normal;\r
+  color: navy;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0.1em;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.arabic {\r
+  list-style-type: decimal;\r
+}\r
+ol.loweralpha {\r
+  list-style-type: lower-alpha;\r
+}\r
+ol.upperalpha {\r
+  list-style-type: upper-alpha;\r
+}\r
+ol.lowerroman {\r
+  list-style-type: lower-roman;\r
+}\r
+ol.upperroman {\r
+  list-style-type: upper-roman;\r
+}\r
+\r
+div.compact ul, div.compact ol,\r
+div.compact p, div.compact p,\r
+div.compact div, div.compact div {\r
+  margin-top: 0.1em;\r
+  margin-bottom: 0.1em;\r
+}\r
+\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+td > div.verse {\r
+  white-space: pre;\r
+}\r
+\r
+div.hdlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+div.hdlist tr {\r
+  padding-bottom: 15px;\r
+}\r
+dt.hdlist1.strong, td.hdlist1.strong {\r
+  font-weight: bold;\r
+}\r
+td.hdlist1 {\r
+  vertical-align: top;\r
+  font-style: normal;\r
+  padding-right: 0.8em;\r
+  color: navy;\r
+}\r
+td.hdlist2 {\r
+  vertical-align: top;\r
+}\r
+div.hdlist.compact tr {\r
+  margin: 0;\r
+  padding-bottom: 0;\r
+}\r
+\r
+.comment {\r
+  background: yellow;\r
+}\r
+\r
+.footnote, .footnoteref {\r
+  font-size: 0.8em;\r
+}\r
+\r
+span.footnote, span.footnoteref {\r
+  vertical-align: super;\r
+}\r
+\r
+#footnotes {\r
+  margin: 20px 0 20px 0;\r
+  padding: 7px 0 0 0;\r
+}\r
+\r
+#footnotes div.footnote {\r
+  margin: 0 0 5px 0;\r
+}\r
+\r
+#footnotes hr {\r
+  border: none;\r
+  border-top: 1px solid silver;\r
+  height: 1px;\r
+  text-align: left;\r
+  margin-left: 0;\r
+  width: 20%;\r
+  min-width: 100px;\r
+}\r
+\r
+div.colist td {\r
+  padding-right: 0.5em;\r
+  padding-bottom: 0.3em;\r
+  vertical-align: top;\r
+}\r
+div.colist td img {\r
+  margin-top: 0.3em;\r
+}\r
+\r
+@media print {\r
+  #footer-badges { display: none; }\r
+}\r
+\r
+#toc {\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+#toctitle {\r
+  color: #527bbd;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.1em;\r
+}\r
+\r
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
+  margin-top: 0;\r
+  margin-bottom: 0;\r
+}\r
+div.toclevel2 {\r
+  margin-left: 2em;\r
+  font-size: 0.9em;\r
+}\r
+div.toclevel3 {\r
+  margin-left: 4em;\r
+  font-size: 0.9em;\r
+}\r
+div.toclevel4 {\r
+  margin-left: 6em;\r
+  font-size: 0.9em;\r
+}\r
+\r
+span.aqua { color: aqua; }\r
+span.black { color: black; }\r
+span.blue { color: blue; }\r
+span.fuchsia { color: fuchsia; }\r
+span.gray { color: gray; }\r
+span.green { color: green; }\r
+span.lime { color: lime; }\r
+span.maroon { color: maroon; }\r
+span.navy { color: navy; }\r
+span.olive { color: olive; }\r
+span.purple { color: purple; }\r
+span.red { color: red; }\r
+span.silver { color: silver; }\r
+span.teal { color: teal; }\r
+span.white { color: white; }\r
+span.yellow { color: yellow; }\r
+\r
+span.aqua-background { background: aqua; }\r
+span.black-background { background: black; }\r
+span.blue-background { background: blue; }\r
+span.fuchsia-background { background: fuchsia; }\r
+span.gray-background { background: gray; }\r
+span.green-background { background: green; }\r
+span.lime-background { background: lime; }\r
+span.maroon-background { background: maroon; }\r
+span.navy-background { background: navy; }\r
+span.olive-background { background: olive; }\r
+span.purple-background { background: purple; }\r
+span.red-background { background: red; }\r
+span.silver-background { background: silver; }\r
+span.teal-background { background: teal; }\r
+span.white-background { background: white; }\r
+span.yellow-background { background: yellow; }\r
+\r
+span.big { font-size: 2em; }\r
+span.small { font-size: 0.6em; }\r
+\r
+span.underline { text-decoration: underline; }\r
+span.overline { text-decoration: overline; }\r
+span.line-through { text-decoration: line-through; }\r
+\r
+div.unbreakable { page-break-inside: avoid; }\r
+\r
+\r
+/*\r
+ * xhtml11 specific\r
+ *\r
+ * */\r
+\r
+div.tableblock {\r
+  margin-top: 1.0em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.tableblock > table {\r
+  border: 3px solid #527bbd;\r
+}\r
+thead, p.table.header {\r
+  font-weight: bold;\r
+  color: #527bbd;\r
+}\r
+p.table {\r
+  margin-top: 0;\r
+}\r
+/* Because the table frame attribute is overridden by CSS in most browsers. */\r
+div.tableblock > table[frame="void"] {\r
+  border-style: none;\r
+}\r
+div.tableblock > table[frame="hsides"] {\r
+  border-left-style: none;\r
+  border-right-style: none;\r
+}\r
+div.tableblock > table[frame="vsides"] {\r
+  border-top-style: none;\r
+  border-bottom-style: none;\r
+}\r
+\r
+\r
+/*\r
+ * html5 specific\r
+ *\r
+ * */\r
+\r
+table.tableblock {\r
+  margin-top: 1.0em;\r
+  margin-bottom: 1.5em;\r
+}\r
+thead, p.tableblock.header {\r
+  font-weight: bold;\r
+  color: #527bbd;\r
+}\r
+p.tableblock {\r
+  margin-top: 0;\r
+}\r
+table.tableblock {\r
+  border-width: 3px;\r
+  border-spacing: 0px;\r
+  border-style: solid;\r
+  border-color: #527bbd;\r
+  border-collapse: collapse;\r
+}\r
+th.tableblock, td.tableblock {\r
+  border-width: 1px;\r
+  padding: 4px;\r
+  border-style: solid;\r
+  border-color: #527bbd;\r
+}\r
+\r
+table.tableblock.frame-topbot {\r
+  border-left-style: hidden;\r
+  border-right-style: hidden;\r
+}\r
+table.tableblock.frame-sides {\r
+  border-top-style: hidden;\r
+  border-bottom-style: hidden;\r
+}\r
+table.tableblock.frame-none {\r
+  border-style: hidden;\r
+}\r
+\r
+th.tableblock.halign-left, td.tableblock.halign-left {\r
+  text-align: left;\r
+}\r
+th.tableblock.halign-center, td.tableblock.halign-center {\r
+  text-align: center;\r
+}\r
+th.tableblock.halign-right, td.tableblock.halign-right {\r
+  text-align: right;\r
+}\r
+\r
+th.tableblock.valign-top, td.tableblock.valign-top {\r
+  vertical-align: top;\r
+}\r
+th.tableblock.valign-middle, td.tableblock.valign-middle {\r
+  vertical-align: middle;\r
+}\r
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
+  vertical-align: bottom;\r
+}\r
+\r
+\r
+/*\r
+ * manpage specific\r
+ *\r
+ * */\r
+\r
+body.manpage h1 {\r
+  padding-top: 0.5em;\r
+  padding-bottom: 0.5em;\r
+  border-top: 2px solid silver;\r
+  border-bottom: 2px solid silver;\r
+}\r
+body.manpage h2 {\r
+  border-style: none;\r
+}\r
+body.manpage div.sectionbody {\r
+  margin-left: 3em;\r
+}\r
+\r
+@media print {\r
+  body.manpage div#toc { display: none; }\r
+}\r
+\r
+\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+var asciidoc = {  // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+  function getText(el) {\r
+    var text = "";\r
+    for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+        text += i.data;\r
+      else if (i.firstChild != null)\r
+        text += getText(i);\r
+    }\r
+    return text;\r
+  }\r
+\r
+  function TocEntry(el, text, toclevel) {\r
+    this.element = el;\r
+    this.text = text;\r
+    this.toclevel = toclevel;\r
+  }\r
+\r
+  function tocEntries(el, toclevels) {\r
+    var result = new Array;\r
+    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
+    // Function that scans the DOM tree for header elements (the DOM2\r
+    // nodeIterator API would be a better technique but not supported by all\r
+    // browsers).\r
+    var iterate = function (el) {\r
+      for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+          var mo = re.exec(i.tagName);\r
+          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+          }\r
+          iterate(i);\r
+        }\r
+      }\r
+    }\r
+    iterate(el);\r
+    return result;\r
+  }\r
+\r
+  var toc = document.getElementById("toc");\r
+  if (!toc) {\r
+    return;\r
+  }\r
+\r
+  // Delete existing TOC entries in case we're reloading the TOC.\r
+  var tocEntriesToRemove = [];\r
+  var i;\r
+  for (i = 0; i < toc.childNodes.length; i++) {\r
+    var entry = toc.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div'\r
+     && entry.getAttribute("class")\r
+     && entry.getAttribute("class").match(/^toclevel/))\r
+      tocEntriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+    toc.removeChild(tocEntriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild TOC entries.\r
+  var entries = tocEntries(document.getElementById("content"), toclevels);\r
+  for (var i = 0; i < entries.length; ++i) {\r
+    var entry = entries[i];\r
+    if (entry.element.id == "")\r
+      entry.element.id = "_toc_" + i;\r
+    var a = document.createElement("a");\r
+    a.href = "#" + entry.element.id;\r
+    a.appendChild(document.createTextNode(entry.text));\r
+    var div = document.createElement("div");\r
+    div.appendChild(a);\r
+    div.className = "toclevel" + entry.toclevel;\r
+    toc.appendChild(div);\r
+  }\r
+  if (entries.length == 0)\r
+    toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+  // Delete existing footnote entries in case we're reloading the footnodes.\r
+  var i;\r
+  var noteholder = document.getElementById("footnotes");\r
+  if (!noteholder) {\r
+    return;\r
+  }\r
+  var entriesToRemove = [];\r
+  for (i = 0; i < noteholder.childNodes.length; i++) {\r
+    var entry = noteholder.childNodes[i];\r
+    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+      entriesToRemove.push(entry);\r
+  }\r
+  for (i = 0; i < entriesToRemove.length; i++) {\r
+    noteholder.removeChild(entriesToRemove[i]);\r
+  }\r
+\r
+  // Rebuild footnote entries.\r
+  var cont = document.getElementById("content");\r
+  var spans = cont.getElementsByTagName("span");\r
+  var refs = {};\r
+  var n = 0;\r
+  for (i=0; i<spans.length; i++) {\r
+    if (spans[i].className == "footnote") {\r
+      n++;\r
+      var note = spans[i].getAttribute("data-note");\r
+      if (!note) {\r
+        // Use [\s\S] in place of . so multi-line matches work.\r
+        // Because JavaScript has no s (dotall) regex flag.\r
+        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+        spans[i].innerHTML =\r
+          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+        spans[i].setAttribute("data-note", note);\r
+      }\r
+      noteholder.innerHTML +=\r
+        "<div class='footnote' id='_footnote_" + n + "'>" +\r
+        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+        n + "</a>. " + note + "</div>";\r
+      var id =spans[i].getAttribute("id");\r
+      if (id != null) refs["#"+id] = n;\r
+    }\r
+  }\r
+  if (n == 0)\r
+    noteholder.parentNode.removeChild(noteholder);\r
+  else {\r
+    // Process footnoterefs.\r
+    for (i=0; i<spans.length; i++) {\r
+      if (spans[i].className == "footnoteref") {\r
+        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+        href = href.match(/#.*/)[0];  // Because IE return full URL.\r
+        n = refs[href];\r
+        spans[i].innerHTML =\r
+          "[<a href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+      }\r
+    }\r
+  }\r
+},\r
+\r
+install: function(toclevels) {\r
+  var timerId;\r
+\r
+  function reinstall() {\r
+    asciidoc.footnotes();\r
+    if (toclevels) {\r
+      asciidoc.toc(toclevels);\r
+    }\r
+  }\r
+\r
+  function reinstallAndRemoveTimer() {\r
+    clearInterval(timerId);\r
+    reinstall();\r
+  }\r
+\r
+  timerId = setInterval(reinstall, 500);\r
+  if (document.addEventListener)\r
+    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+  else\r
+    window.onload = reinstallAndRemoveTimer;\r
+}\r
+\r
+}\r
+asciidoc.install();\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="manpage">\r
+<div id="header">\r
+<h1>\r
+nvme-sanitize(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>nvme-sanitize -\r
+   Send NVMe Sanitize Command, return result\r
+</p>\r
+</div>\r
+</div>\r
+<div id="content">\r
+<div class="sect1">\r
+<h2 id="_synopsis">SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<div class="verseblock">\r
+<pre class="content"><em>nvme sanitize</em> &lt;device&gt; [--no-dealloc | -d]\r
+              [--oipbp | -i]\r
+              [--owpass=&lt;overwrite-pass-count&gt; | -n &lt;overwrite-pass-count&gt;]\r
+              [--ause | -u]\r
+              [--sanact=&lt;action&gt; | -a &lt;action&gt;]\r
+              [--ovrpat=&lt;overwrite-pattern&gt; | -p &lt;overwrite-pattern&gt;]\r
+              [--force]</pre>\r
+<div class="attribution">\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_description">DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For the NVMe device given, sends a Sanitize command and\r
+provides the result.</p></div>\r
+<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>\r
+<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_options">OPTIONS</h2>\r
+<div class="sectionbody">\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+-d\r
+</dt>\r
+<dt class="hdlist1">\r
+--no-delloc\r
+</dt>\r
+<dd>\r
+<p>\r
+    No Deallocate After Sanitize:\r
+    If set, then the controller shall not deallocate any logical\r
+    blocks as a result of successfully completing the sanitize\r
+    operation. If cleared, then the controller should deallocate\r
+    logical blocks as a result of successfully completing the\r
+    sanitize operation.  This bit shall be ignored if the Sanitize\r
+    Action field is set to 001b (i.e., Exit Failure Mode).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-i\r
+</dt>\r
+<dt class="hdlist1">\r
+--oipbp\r
+</dt>\r
+<dd>\r
+<p>\r
+    Overwrite Invert Pattern Between Passes:\r
+    If set, then the Overwrite Pattern shall be inverted between\r
+    passes. If cleared, then the overwrite pattern shall not be\r
+    inverted between passes. This bit shall be ignored unless the\r
+    Sanitize Action field is set to 011b (i.e., Overwrite).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-n &lt;overwrite-pass-count&gt;\r
+</dt>\r
+<dt class="hdlist1">\r
+--owpass=&lt;overwrite-pass-count&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+    Overwrite Pass Count:\r
+    This field specifies the number of overwrite passes (i.e.,\r
+    how many times the media is to be overwritten) using the data\r
+    from the Overwrite Pattern field of this command. A value of 0\r
+    specifies 16 overwrite passes. This field shall be ignored\r
+    unless the Sanitize Action field is set to 011b (i.e., Overwrite).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-u\r
+</dt>\r
+<dt class="hdlist1">\r
+--ause\r
+</dt>\r
+<dd>\r
+<p>\r
+    Allow Unrestricted Sanitize Exit:\r
+    If set, then the sanitize operation is performed in unrestricted\r
+    completion mode. If cleared then the sanitize operation is\r
+    performed in restricted completion mode. This bit shall be ignored\r
+    if the Sanitize Action field is set to 001b (i.e., Exit Failure Mode).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-a &lt;action&gt;\r
+</dt>\r
+<dt class="hdlist1">\r
+--sanact=&lt;action&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+    Sanitize Action:\r
+    000b - Reserved\r
+    001b - Exit Failure Mode\r
+    010b - Start a Block Erase sanitize operation\r
+    011b - Start an Overwrite sanitize operation\r
+    100b - Start a Crypto Erase sanitize operation\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+-p &lt;overwrite-pattern&gt;\r
+</dt>\r
+<dt class="hdlist1">\r
+--ovrpat=&lt;overwrite-pattern&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+    Overwrite Pattern:\r
+    This field is ignored unless the Sanitize Action field in\r
+    Command Dword 10 is set to 011b (i.e., Overwrite). This field\r
+    specifies a 32-bit pattern that is used for the Overwrite\r
+    sanitize operation.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+--force\r
+</dt>\r
+<dd>\r
+<p>\r
+    Ignore namespace is currently busy and perfome the operation\r
+    even though.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_examples">EXAMPLES</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Has the program issue Sanitize Command :\r
+</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><code># nvme sanitize /dev/nvme0n1 -a 0x02\r
+# nvme sanitize /dev/nvme0n1 --sanact=0x01</code></pre>\r
+</div></div>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_nvme">NVME</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Part of the nvme-user suite.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated\r
+ 2021-12-15 10:25:04 CET\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
index b1d9a0ebb49fb439e97e5b0f9448a04eb4d9bc64..be489d3f6137aed65932e7c75bd6d0a387714834 100644 (file)
@@ -14,6 +14,7 @@ SYNOPSIS
               [--ause | -u]
               [--sanact=<action> | -a <action>]
               [--ovrpat=<overwrite-pattern> | -p <overwrite-pattern>]
+             [--force]
 
 DESCRIPTION
 -----------
@@ -78,6 +79,10 @@ OPTIONS
     specifies a 32-bit pattern that is used for the Overwrite
     sanitize operation.
 
+--force::
+    Ignore namespace is currently busy and perfome the operation
+    even though.
+
 EXAMPLES
 --------
 * Has the program issue Sanitize Command :
index 93e75111c299b40c2751405d3114d799f8dbbbed..e9723dbdfde8415911a418a99ca11e8fd8328636 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: nvme-uncor
 .\"    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
+.\"      Date: 12/15/2021
 .\"    Manual: NVMe Manual
 .\"    Source: NVMe
 .\"  Language: English
 .\"
-.TH "NVME\-UNCOR" "1" "10/20/2020" "NVMe" "NVMe Manual"
+.TH "NVME\-UNCOR" "1" "12/15/2021" "NVMe" "NVMe Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -35,6 +35,7 @@ nvme-write-uncor \- Send an NVMe write uncorrectable command, return results
 \fInvme\-write\-uncorr\fR <device> [\-\-start\-block=<slba> | \-s <slba>]
                         [\-\-block\-count=<nlb> | \-c <nlb>]
                         [\-\-namespace\-id=<nsid> | \-n <nsid>]
+                        [\-\-force]
 .fi
 .SH "DESCRIPTION"
 .sp
@@ -55,6 +56,11 @@ Number of logical blocks to write uncorrectable\&.
 .RS 4
 Namespace ID use in the command\&.
 .RE
+.PP
+\-\-force
+.RS 4
+Ignore namespace is currently busy and perfome the operation even though\&.
+.RE
 .SH "EXAMPLES"
 .sp
 No examples yet\&.
index 7df26b2d86c54f68c0c2a693283d084ddf8c8439..a691f7c48a1c5a8007cf5c0f3a18d97f5eaa7ddf 100644 (file)
@@ -1,9 +1,10 @@
+<?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" />\r
 <title>nvme-uncor(1)</title>\r
 <style type="text/css">\r
 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
@@ -94,7 +95,9 @@ ul > li > * { color: black; }
   padding: 0;\r
   margin: 0;\r
 }\r
-\r
+pre {\r
+  white-space: pre-wrap;\r
+}\r
 \r
 #author {\r
   color: #527bbd;\r
@@ -223,7 +226,7 @@ div.exampleblock > div.content {
 }\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
@@ -748,7 +751,8 @@ nvme-uncor(1) Manual Page
 <div class="verseblock">\r
 <pre class="content"><em>nvme-write-uncorr</em> &lt;device&gt; [--start-block=&lt;slba&gt; | -s &lt;slba&gt;]\r
                         [--block-count=&lt;nlb&gt; | -c &lt;nlb&gt;]\r
-                        [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]</pre>\r
+                        [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]\r
+                        [--force]</pre>\r
 <div class="attribution">\r
 </div></div>\r
 </div>\r
@@ -797,6 +801,15 @@ blocks.</p></div>
         Namespace ID use in the command.\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+--force\r
+</dt>\r
+<dd>\r
+<p>\r
+    Ignore namespace is currently busy and perfome the operation\r
+    even though.\r
+</p>\r
+</dd>\r
 </dl></div>\r
 </div>\r
 </div>\r
@@ -816,7 +829,8 @@ blocks.</p></div>
 <div id="footnotes"><hr /></div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 2017-02-27 10:11:58 EST\r
+Last updated\r
+ 2021-12-15 10:26:18 CET\r
 </div>\r
 </div>\r
 </body>\r
index 0d824d7c6dbf58fc176148881096921dcd1926e3..41a1d874016e637b0931cf9de97819c12ce573c2 100644 (file)
@@ -11,6 +11,7 @@ SYNOPSIS
 'nvme-write-uncorr' <device> [--start-block=<slba> | -s <slba>]
                        [--block-count=<nlb> | -c <nlb>]
                        [--namespace-id=<nsid> | -n <nsid>]
+                       [--force]
 
 DESCRIPTION
 -----------
@@ -31,6 +32,10 @@ OPTIONS
 -n <nsid>::
        Namespace ID use in the command.
 
+--force::
+    Ignore namespace is currently busy and perfome the operation
+    even though.
+
 EXAMPLES
 --------
 No examples yet.
index d7f06bb26ef4bbcfee8d53417f18b44183c55231..c137e1fd0d3e8b34fd4bb2a4e85e58a088903c95 100644 (file)
@@ -1,13 +1,13 @@
 '\" t
 .\"     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/09/2021
+.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\"      Date: 12/15/2021
 .\"    Manual: NVMe Manual
 .\"    Source: NVMe
 .\"  Language: English
 .\"
-.TH "NVME\-ZEROES" "1" "07/09/2021" "NVMe" "NVMe Manual"
+.TH "NVME\-ZEROES" "1" "12/15/2021" "NVMe" "NVMe Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -44,6 +44,7 @@ nvme-write-zeroes \- Send an NVMe write zeroes command, return results
                         [\-\-namespace\-id=<nsid> | \-n <nsid>]
                         [\-\-storage\-tag<storage\-tag> | \-S <storage\-tag>]
                         [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
+                        [\-\-force]
 .fi
 .SH "DESCRIPTION"
 .sp
@@ -149,6 +150,11 @@ Variable Sized Expected Logical Block Storage Tag(ELBST) and Expected Logical Bl
 .RS 4
 This bit specifies the Storage Tag field shall be checked as part of end\-to\-end data protection processing\&.
 .RE
+.PP
+\-\-force
+.RS 4
+Ignore namespace is currently busy and perfome the operation even though\&.
+.RE
 .SH "EXAMPLES"
 .sp
 No examples yet\&.
index 0912800495af91f54376605755d87ad3e2ba14ed..a66f6db517dc0e99b72c420f7992ace46b7b6bef 100644 (file)
@@ -4,7 +4,7 @@
 <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.10" />\r
+<meta name="generator" content="AsciiDoc" />\r
 <title>nvme-zeroes(1)</title>\r
 <style type="text/css">\r
 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
@@ -436,7 +436,7 @@ thead, p.table.header {
 p.table {\r
   margin-top: 0;\r
 }\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+/* Because the table frame attribute is overridden by CSS in most browsers. */\r
 div.tableblock > table[frame="void"] {\r
   border-style: none;\r
 }\r
@@ -760,7 +760,8 @@ nvme-zeroes(1) Manual Page
                         [--force-unit-access | -f]\r
                         [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]\r
                         [--storage-tag&lt;storage-tag&gt; | -S &lt;storage-tag&gt;]\r
-                        [--storage-tag-check&lt;storage-tag-check&gt; | -C &lt;storage-tag-check&gt;]</pre>\r
+                        [--storage-tag-check&lt;storage-tag-check&gt; | -C &lt;storage-tag-check&gt;]\r
+                        [--force]</pre>\r
 <div class="attribution">\r
 </div></div>\r
 </div>\r
@@ -946,6 +947,15 @@ metadata is passes.</p></td>
         data protection processing.\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+--force\r
+</dt>\r
+<dd>\r
+<p>\r
+    Ignore namespace is currently busy and perfome the operation\r
+    even though.\r
+</p>\r
+</dd>\r
 </dl></div>\r
 </div>\r
 </div>\r
@@ -966,7 +976,7 @@ metadata is passes.</p></td>
 <div id="footer">\r
 <div id="footer-text">\r
 Last updated\r
- 2021-07-09 13:42:09 IST\r
+ 2021-12-15 10:26:48 CET\r
 </div>\r
 </div>\r
 </body>\r
index 34fec9de8b5b8a1635c7ddf787c409da35d845f9..a644ac76d1a7d4eae0c86e327763ab956f4adba2 100644 (file)
@@ -20,6 +20,7 @@ SYNOPSIS
                        [--namespace-id=<nsid> | -n <nsid>]
                        [--storage-tag<storage-tag> | -S <storage-tag>]
                        [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
+                       [--force]
 
 DESCRIPTION
 -----------
@@ -89,6 +90,10 @@ metadata is passes.
        This bit specifies the Storage Tag field shall be checked as part of end-to-end
        data protection processing.
 
+--force::
+    Ignore namespace is currently busy and perfome the operation
+    even though.
+
 EXAMPLES
 --------
 No examples yet.
index b8e49e5543a7453f0ad43ffe0bfd338b25640cfe..f9a9af5d8c200464fc942a829b38a9a5f994d43d 100644 (file)
@@ -1,13 +1,13 @@
 '\" t
 .\"     Title: nvme-write
-.\"    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
+.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\"      Date: 12/15/2021
 .\"    Manual: NVMe Manual
 .\"    Source: NVMe
 .\"  Language: English
 .\"
-.TH "NVME\-WRITE" "1" "07/09/2021" "NVMe" "NVMe Manual"
+.TH "NVME\-WRITE" "1" "12/15/2021" "NVMe" "NVMe Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -51,6 +51,7 @@ nvme-write \- Send an NVMe write command, provide results
                         [\-\-dry\-run | \-w]
                         [\-\-latency | \-t]
                         [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
+                        [\-\-force]
 .fi
 .SH "DESCRIPTION"
 .sp
@@ -194,6 +195,11 @@ Print out the latency the IOCTL took (in us)\&.
 .RS 4
 This bit specifies the Storage Tag field shall be checked as part of end\-to\-end data protection processing\&.
 .RE
+.PP
+\-\-force
+.RS 4
+Ignore namespace is currently busy and perfome the operation even though\&.
+.RE
 .SH "EXAMPLES"
 .sp
 No examples yet\&.
index 57dccc3ec21e0132e2d65f2974c744f19cc05eb2..9726f14956351648a6354e17ba7cb824528e5ced 100644 (file)
@@ -4,7 +4,7 @@
 <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.10" />\r
+<meta name="generator" content="AsciiDoc" />\r
 <title>nvme-write(1)</title>\r
 <style type="text/css">\r
 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
@@ -436,7 +436,7 @@ thead, p.table.header {
 p.table {\r
   margin-top: 0;\r
 }\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+/* Because the table frame attribute is overridden by CSS in most browsers. */\r
 div.tableblock > table[frame="void"] {\r
   border-style: none;\r
 }\r
@@ -767,7 +767,8 @@ nvme-write(1) Manual Page
                         [--show-command | -v]\r
                         [--dry-run | -w]\r
                         [--latency | -t]\r
-                        [--storage-tag-check&lt;storage-tag-check&gt; | -C &lt;storage-tag-check&gt;]</pre>\r
+                        [--storage-tag-check&lt;storage-tag-check&gt; | -C &lt;storage-tag-check&gt;]\r
+                        [--force]</pre>\r
 <div class="attribution">\r
 </div></div>\r
 </div>\r
@@ -1048,6 +1049,15 @@ metadata is passes.</p></td>
         data protection processing.\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+--force\r
+</dt>\r
+<dd>\r
+<p>\r
+    Ignore namespace is currently busy and perfome the operation\r
+    even though.\r
+</p>\r
+</dd>\r
 </dl></div>\r
 </div>\r
 </div>\r
@@ -1068,7 +1078,7 @@ metadata is passes.</p></td>
 <div id="footer">\r
 <div id="footer-text">\r
 Last updated\r
- 2021-07-09 14:16:34 IST\r
+ 2021-12-15 10:28:34 CET\r
 </div>\r
 </div>\r
 </body>\r
index c48e6ae1d91ef8520b647025a062eff2458a3048..c730c92b84b480a593dc67d26c96dd994896703e 100644 (file)
@@ -27,6 +27,7 @@ SYNOPSIS
                        [--dry-run | -w]
                        [--latency | -t]
                        [--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
+                       [--force]
 
 DESCRIPTION
 -----------
@@ -142,6 +143,10 @@ metadata is passes.
        This bit specifies the Storage Tag field shall be checked as part of end-to-end
        data protection processing.
 
+--force::
+    Ignore namespace is currently busy and perfome the operation
+    even though.
+
 EXAMPLES
 --------
 No examples yet.
index 433723e130b90b9230e63230de1cf205bbff7f82..894d25711ede52c55f72df7630eb46248d317b92 100644 (file)
@@ -6909,10 +6909,3 @@ void nvme_show_list_items(nvme_root_t r, enum nvme_print_flags flags)
        else
                nvme_show_simple_list(r);
 }
-
-void nvme_show_busy_namespace(char *namespace) {
-       fprintf(stderr, "Failed to open %s.\n"\
-               "Namespace is currently busy.\n"\
-               "Use the force [--force] option to ignore that.\n",
-               namespace);
-}
index 6bf37d9224745a4b74efa005669cac3be5094cf4..92cb7f20897ef93536ac7a0e161ddd6991583398 100644 (file)
@@ -120,7 +120,6 @@ void nvme_show_zns_report_zones(void *report, __u32 descs,
 void json_nvme_finish_zone_list(__u64 nr_zones, 
        struct json_object *zone_list);
 void nvme_show_list_item(nvme_ns_t n);
-void nvme_show_busy_namespace(char *namespace);
 
 const char *nvme_cmd_to_string(int admin, __u8 opcode);
 const char *nvme_select_to_string(int sel);
diff --git a/nvme.c b/nvme.c
index c6233025f5a77eab9fc23280e9a10ba081937ea4..9ab50d82faa29511fdb61151c7c4f1d8f1b5f5f3 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -250,9 +250,9 @@ int parse_and_open(int argc, char **argv, const char *desc,
        if (ret)
                return ret;
 
-       for (s = opts; (s->option != NULL) && (s != NULL); s++) {
+       for (s = opts; s && s->option; s++) {
                if (!strcmp(s->option, "force")) {
-                       if (! *(int *) s->default_value)
+                       if (! *(int *)s->default_value)
                                flags |= O_EXCL;
                        break;
                }
@@ -260,9 +260,12 @@ int parse_and_open(int argc, char **argv, const char *desc,
 
        ret = get_dev(argc, argv, flags);
        if (ret < 0) {
-               if (errno == EBUSY)
-                       nvme_show_busy_namespace(basename(argv[optind]));
-               else
+               if (errno == EBUSY) {
+                       fprintf(stderr, "Failed to open %s.\n" \
+                               "Namespace is currently busy.\n" \
+                               "Use the force [--force] option to ignore that.\n",
+                               basename(argv[optind]));
+               } else
                        argconfig_print_help(desc, opts);
        }
        return ret;
@@ -2544,7 +2547,7 @@ static int id_ns(int argc, char **argv, struct command *cmd, struct plugin *plug
 
        OPT_ARGS(opts) = {
                OPT_UINT("namespace-id",    'n', &cfg.namespace_id,    namespace_id),
-               OPT_FLAG("force",           'f', &cfg.force,           force),
+               OPT_FLAG("force",             0, &cfg.force,           force),
                OPT_FLAG("vendor-specific", 'v', &cfg.vendor_specific, vendor_specific),
                OPT_FLAG("raw-binary",      'b', &cfg.raw_binary,      raw),
                OPT_FMT("output-format",    'o', &cfg.output_format,   output_format),
@@ -3750,7 +3753,7 @@ static int sanitize(int argc, char **argv, struct command *cmd, struct plugin *p
                OPT_FLAG("ause",       'u', &cfg.ause,       ause_desc),
                OPT_BYTE("sanact",     'a', &cfg.sanact,     sanact_desc),
                OPT_UINT("ovrpat",     'p', &cfg.ovrpat,     ovrpat_desc),
-               OPT_FLAG("force",      'f', &cfg.force,      force_desc),
+               OPT_FLAG("force",        0, &cfg.force,      force_desc),
                OPT_END()
        };
 
@@ -4109,7 +4112,7 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu
                OPT_BYTE("pil",          'p', &cfg.pil,          pil),
                OPT_BYTE("ms",           'm', &cfg.ms,           ms),
                OPT_FLAG("reset",        'r', &cfg.reset,        reset),
-               OPT_FLAG("force",        'f', &cfg.force,        force),
+               OPT_FLAG("force",          0, &cfg.force,        force),
                OPT_SUFFIX("block-size", 'b', &cfg.bs,           bs),
                OPT_END()
        };
@@ -4747,7 +4750,7 @@ static int write_uncor(int argc, char **argv, struct command *cmd, struct plugin
                OPT_UINT("namespace-id",  'n', &cfg.namespace_id, namespace_id),
                OPT_SUFFIX("start-block", 's', &cfg.start_block,  start_block),
                OPT_SHRT("block-count",   'c', &cfg.block_count,  block_count),
-               OPT_FLAG("force",         'f', &cfg.force,        force_desc),
+               OPT_FLAG("force",           0, &cfg.force,        force_desc),
                OPT_END()
        };