]> www.infradead.org Git - users/hch/nvme-cli.git/commitdiff
Merge branch 'master' of github.com:linux-nvme/nvme-cli into dera-plugin
authorwudequan <wudequan@derastorage.com>
Tue, 26 Nov 2019 02:31:31 +0000 (10:31 +0800)
committerwudequan <wudequan@derastorage.com>
Tue, 26 Nov 2019 08:19:19 +0000 (16:19 +0800)
1  2 
Documentation/nvme-dera-stat.1
Documentation/nvme-dera-stat.html
Makefile

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ca77efe77e1ac604bce210b8845b515c2b4a3431
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++'\" t
++.\"     Title: nvme-dera-stat
++.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
++.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
++.\"      Date: 11/26/2019
++.\"    Manual: NVMe Manual
++.\"    Source: NVMe
++.\"  Language: English
++.\"
++.TH "NVME\-DERA\-STAT" "1" "11/26/2019" "NVMe" "NVMe Manual"
++.\" -----------------------------------------------------------------
++.\" * Define some portability stuff
++.\" -----------------------------------------------------------------
++.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++.\" http://bugs.debian.org/507673
++.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
++.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++.ie \n(.g .ds Aq \(aq
++.el       .ds Aq '
++.\" -----------------------------------------------------------------
++.\" * set default formatting
++.\" -----------------------------------------------------------------
++.\" disable hyphenation
++.nh
++.\" disable justification (adjust text to left margin only)
++.ad l
++.\" -----------------------------------------------------------------
++.\" * MAIN CONTENT STARTS HERE *
++.\" -----------------------------------------------------------------
++.SH "NAME"
++nvme-dera-stat \- Send NVMe Dera Device status and Additional SMART log page request, returns result and log
++.SH "SYNOPSIS"
++.sp
++.nf
++\fInvme dera stat\fR <device>
++.fi
++.SH "DESCRIPTION"
++.sp
++Retrieves the NVMe Dera Device status and Additional SMART log page from the device and provides the returned structure\&.
++.sp
++The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
++.sp
++On success, the returned status and smart log structure are printed in a readable format\&.
++.SH "OPTIONS"
++.sp
++none
++.SH "EXAMPLES"
++.sp
++.RS 4
++.ie n \{\
++\h'-04'\(bu\h'+03'\c
++.\}
++.el \{\
++.sp -1
++.IP \(bu 2.3
++.\}
++Print the Dera Device status and Additional SMART log page in a human readable format:
++.sp
++.if n \{\
++.RS 4
++.\}
++.nf
++# nvme dera stat /dev/nvme0
++.fi
++.if n \{\
++.RE
++.\}
++.RE
++.SH "NVME"
++.sp
++Part of the nvme\-user suite
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..49f8d39c452b492ad8d2e4f9219ff87f72b596ed
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,798 @@@
++<!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
++<title>nvme-dera-stat(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
++\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; }\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 overriden 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="article">\r
++<div id="header">\r
++<h1>nvme-dera-stat(1)</h1>\r
++</div>\r
++<div id="content">\r
++<div class="sect1">\r
++<h2 id="_name">NAME</h2>\r
++<div class="sectionbody">\r
++<div class="paragraph"><p>nvme-dera-stat - Send NVMe Dera Device status and Additional SMART log page request, returns result and log</p></div>\r
++</div>\r
++</div>\r
++<div class="sect1">\r
++<h2 id="_synopsis">SYNOPSIS</h2>\r
++<div class="sectionbody">\r
++<div class="verseblock">\r
++<pre class="content"><em>nvme dera stat</em> &lt;device&gt;</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>Retrieves the NVMe Dera Device status and Additional SMART log page from the device and\r
++provides the returned structure.</p></div>\r
++<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character\r
++device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>\r
++<div class="paragraph"><p>On success, the returned status and smart log structure are printed in a readable format.</p></div>\r
++</div>\r
++</div>\r
++<div class="sect1">\r
++<h2 id="_options">OPTIONS</h2>\r
++<div class="sectionbody">\r
++<div class="paragraph"><p>none</p></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
++Print the Dera Device status and Additional SMART log page in a human readable format:\r
++</p>\r
++<div class="listingblock">\r
++<div class="content">\r
++<pre><code># nvme dera stat /dev/nvme0</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 2019-11-26 13:57:30 CST\r
++</div>\r
++</div>\r
++</body>\r
++</html>\r
diff --cc Makefile
Simple merge