diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml deleted file mode 100644 index 03471d7..0000000 --- a/.github/workflows/c-cpp.yml +++ /dev/null @@ -1,18 +0,0 @@ -gname: C/C++ CI - -on: - push: - branches: [ master nvme-cli-monolithic ] - pull_request: - branches: [ master nvme-cli-monolithic ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: make - run: sudo apt-get install gcc-10-powerpc* && make clean && make && make clean && make LD=powerpc64le-linux-gnu-ld CC=powerpc64le-linux-gnu-gcc-10 CFLAGS='-O2 -g -Wall -Wformat-security -Werror -m64 -mcpu=power8 -mtune=power8 -I -I/usr/powerpc64-linux-gnu/include/' - diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml new file mode 100644 index 0000000..0d6350f --- /dev/null +++ b/.github/workflows/meson.yml @@ -0,0 +1,27 @@ +name: nvme-cli meson CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + + workflow_dispatch: + +jobs: + meson-build: + runs-on: ubuntu-latest + + steps: + - name: install libraries + run: sudo apt-get install libjson-c-dev libhugetlbfs-dev + - uses: actions/checkout@v2 + - uses: actions/setup-python@v1 + # - name: install python dependencies + # run: | + # python -m pip install --upgrade pip + # pip install nose nose2 + - uses: BSFishy/meson-build@v1.0.3 + with: + setup-options: --werror + action: build diff --git a/.gitignore b/.gitignore index 8e5ae00..0745eff 100644 --- a/.gitignore +++ b/.gitignore @@ -4,18 +4,15 @@ a.out *.o *~ *.swp -NVME-VERSION-FILE -nvme.spec nvme-*.tar.gz -version + +subprojects/* +!subprojects/*.wrap cscope.* -/debian/files -/debian/nvme-cli.debhelper.log -/debian/nvme-cli.substvars -/debian/nvme-cli - tests/__pycache__ tests/nvmetests tests/*.pyc + +.build \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e69de29 diff --git a/Documentation/Makefile b/Documentation/Makefile deleted file mode 100644 index 9edae99..0000000 --- a/Documentation/Makefile +++ /dev/null @@ -1,265 +0,0 @@ -# Guard against environment variables -MAN1_TXT = -TECH_DOCS = -ARTICLES = -SP_ARTICLES = - -MAN1_TXT += $(filter-out \ - $(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \ - $(wildcard nvme-*.txt)) -MAN1_TXT += nvme.txt -MAN_TXT = $(MAN1_TXT) -MAN_XML = $(patsubst %.txt,%.xml,$(MAN_TXT)) -MAN_HTML = $(patsubst %.txt,%.html,$(MAN_TXT)) - -DOC_HTML = $(MAN_HTML) $(OBSOLETE_HTML) - -API_DOCS = -SP_ARTICLES += $(API_DOCS) -SP_ARTICLES += $(TECH_DOCS) - -ifneq ($(findstring $(MAKEFLAGS),s),s) -ifndef V - QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@; - QUIET_XMLTO = @echo ' ' XMLTO $@; - QUIET_DB2TEXI = @echo ' ' DB2TEXI $@; - QUIET_MAKEINFO = @echo ' ' MAKEINFO $@; - QUIET_DBLATEX = @echo ' ' DBLATEX $@; - QUIET_XSLTPROC = @echo ' ' XSLTPROC $@; - QUIET_GEN = @echo ' ' GEN $@; - QUIET_LINT = @echo ' ' LINT $@; - QUIET_STDERR = 2> /dev/null - QUIET_SUBDIR0 = +@subdir= - QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ - $(MAKE) $(PRINT_DIR) -C $$subdir - export V -endif -endif - -DOC_MAN1 = $(patsubst %.txt,%.1,$(MAN1_TXT)) - -ASCIIDOC = asciidoc -ASCIIDOC_EXTRA = -ASCIIDOC_DOCBOOK = docbook -ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) -TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK) -MANPAGE_XSL = manpage-normal.xsl -XMLTO = xmlto -XMLTO_EXTRA = --skip-validation -INSTALL ?= install -RM ?= rm -f -MAN_REPO = ../../nvme-manpages - -ASCIIDOC_HTML = xhtml11 -ASCIIDOC_CONF = -f asciidoc.conf - -ifdef USE_ASCIIDOCTOR -ASCIIDOC = asciidoctor -ASCIIDOC_CONF = -ASCIIDOC_HTML = xhtml5 -ASCIIDOC_DOCBOOK = docbook5 -ASCIIDOC_EXTRA += -acompat-mode -ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions -ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;' -ASCIIDOC_EXTRA += -amansource='NVMe' -ASCIIDOC_EXTRA += -amanmanual='NVMe Manual' -endif - -ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) -TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML) - -MAKEINFO = makeinfo -INSTALL_INFO = install-info -DOCBOOK2X_TEXI = docbook2x-texi -DBLATEX = dblatex -ASCIIDOC_DBLATEX_DIR = /etc/asciidoc/dblatex -ifndef PERL_PATH - PERL_PATH = /usr/bin/perl -endif - -ifdef DOCBOOK_XSL_172 -MANPAGE_XSL = manpage-1.72.xsl -else - ifndef ASCIIDOC_ROFF - endif -endif -ifdef MAN_BOLD_LITERAL -XMLTO_EXTRA += -m manpage-bold-literal.xsl -endif -ifdef DOCBOOK_SUPPRESS_SP -XMLTO_EXTRA += -m manpage-suppress-sp.xsl -endif - -ifndef MAN_BASE_URL -MAN_BASE_URL = file://$(htmldir)/ -endif -XMLTO_EXTRA += - -ifdef GNU_ROFF -XMLTO_EXTRA += -endif - -SHELL_PATH ?= $(SHELL) -# Shell quote; -SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) - -ifdef DEFAULT_PAGER -DEFAULT_PAGER_SQ = $(subst ','\'',$(DEFAULT_PAGER)) -endif - -ifdef DEFAULT_EDITOR -DEFAULT_EDITOR_SQ = $(subst ','\'',$(DEFAULT_EDITOR)) -endif - -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir -QUIET_SUBDIR1 = - -ifneq ($(findstring $(MAKEFLAGS),w),w) -PRINT_DIR = --no-print-directory -else # "make -w" -NO_SUBDIR = : -endif - -DESTDIR = -PREFIX ?= /usr/local - -all: man html - -html: $(DOC_HTML) - -man: man1 -man1: $(DOC_MAN1) - -install-no-build: - $(INSTALL) -d -m 755 $(DESTDIR)$(PREFIX)/share/man/man1 - $(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(PREFIX)/share/man/man1 - -install: install-man - -install-man: man - $(INSTALL) -d -m 755 $(DESTDIR)$(PREFIX)/share/man/man1 - $(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(PREFIX)/share/man/man1 - -docdep_prereqs = \ - cmd-list.made $(cmds_txt) - -doc.dep : $(docdep_prereqs) $(wildcard *.txt) build-docdep.perl - $(QUIET_GEN)$(RM) $@+ $@ && \ - $(PERL_PATH) ./build-docdep.perl >$@+ $(QUIET_STDERR) && \ - mv $@+ $@ - --include doc.dep - -cmds_txt = cmds-ancillaryinterrogators.txt \ - cmds-ancillarymanipulators.txt \ - cmds-mainporcelain.txt \ - cmds-plumbinginterrogators.txt \ - cmds-plumbingmanipulators.txt \ - cmds-synchingrepositories.txt \ - cmds-synchelpers.txt \ - cmds-purehelpers.txt \ - cmds-foreignscminterface.txt - -$(cmds_txt): cmd-list.made - -cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT) - $(QUIET_GEN)$(RM) $@ && \ - $(PERL_PATH) ./cmd-list.perl ../command-list.txt $(QUIET_STDERR) && \ - date >$@ - -clean: - $(RM) *.xml *.xml+ *.html+ - $(RM) *.texi *.texi+ *.texi++ nvme.info nvmeman.info - $(RM) *.pdf - $(RM) howto-index.txt howto/*.html doc.dep - $(RM) technical/*.html technical/api-index.txt - $(RM) $(cmds_txt) *.made - $(RM) manpage-base-url.xsl - $(RM) *~ - -clobber: clean - $(RM) *.html *.1 - -%.1 : %.xml - $(QUIET_XMLTO)$(RM) $@ && \ - $(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< - -%.xml : %.txt - $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ - $(TXT_TO_XML) -d manpage -o $@+ $< && \ - mv $@+ $@ - -user-manual.xml: user-manual.txt user-manual.conf - $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ - $(TXT_TO_XML) -d article -o $@+ $< && \ - mv $@+ $@ - -technical/api-index.txt: technical/api-index-skel.txt \ - technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS)) - $(QUIET_GEN)cd technical && '$(SHELL_PATH_SQ)' ./api-index.sh - -XSLT = docbook.xsl -XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css - -nvme.info: user-manual.texi - $(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi - -user-manual.texi: user-manual.xml - $(QUIET_DB2TEXI)$(RM) $@+ $@ && \ - $(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@++ && \ - $(PERL_PATH) fix-texi.perl <$@++ >$@+ && \ - rm $@++ && \ - mv $@+ $@ - -user-manual.pdf: user-manual.xml - $(QUIET_DBLATEX)$(RM) $@+ $@ && \ - $(DBLATEX) -o $@+ -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty $< && \ - mv $@+ $@ - -nvmeman.texi: $(MAN_XML) cat-texi.perl - $(QUIET_DB2TEXI)$(RM) $@+ $@ && \ - ($(foreach xml,$(MAN_XML),$(DOCBOOK2X_TEXI) --encoding=UTF-8 \ - --to-stdout $(xml) &&) true) > $@++ && \ - $(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \ - rm $@++ && \ - mv $@+ $@ - -nvmeman.info: nvmeman.texi - $(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $*.texi - -$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml - $(QUIET_DB2TEXI)$(RM) $@+ $@ && \ - $(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@+ && \ - mv $@+ $@ - -howto-index.txt: howto-index.sh $(wildcard howto/*.txt) - $(QUIET_GEN)$(RM) $@+ $@ && \ - '$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(wildcard howto/*.txt)) >$@+ && \ - mv $@+ $@ - -WEBDOC_DEST = /pub/software/scm/nvme/docs - -$(MAN_HTML): %.html : %.txt - $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ - $(TXT_TO_HTML) -d manpage -o $@+ $< && \ - mv $@+ $@ - -quick-install: quick-install-man - -$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt - $(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt - -install-webdoc : html - '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST) - -require-manrepo:: - @if test ! -d $(MAN_REPO); \ - then echo "nvme-manpages repository must exist at $(MAN_REPO)"; exit 1; fi - -quick-install-man: require-manrepo - '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir) - -print-man1: - @for i in $(MAN1_TXT); do echo $$i; done - -.PHONY: FORCE diff --git a/Documentation/cmd-plugins.txt b/Documentation/cmd-plugins.txt new file mode 100644 index 0000000..4e66cf1 --- /dev/null +++ b/Documentation/cmd-plugins.txt @@ -0,0 +1,200 @@ +linknvme:nvme-intel-id-ctrl[1]:: + Intel - NVMe Identify Controller + +linknvme:nvme-intel-internal-log[1]:: + Retrieve Intel device's internal log and save to file + +linknvme:nvme-intel-lat-stats[1]:: + Retrieve NVMe Identify Controller, return result and structure + +linknvme:nvme-intel-market-name[1]:: + Intel vendor specific marketing name log page + +linknvme:nvme-intel-smart-log-add[1]:: + NVMe Intel Additional SMART log page + +linknvme:nvme-intel-temp-stats[1]:: + NVMe Intel Additional SMART log page for temp stats + +linknvme:nvme-huawei-id-ctrl[1]:: + NVMe huawei Identify Controller + +linknvme:nvme-huawei-list[1]:: + List all recognized Huawei NVMe devices + +linknvme:nvme-dera-stat[1]:: + NVMe Dera Device status and Additional SMART log page request + +linknvme:nvme-micron-clear-pcie-errors[1]:: + Clears correctable PCIe correctable errors of given Micron device + +linknvme:nvme-micron-internal-log[1]:: + Retrieve Micron device's internal logs and save to given zip file + +linknvme:nvme-micron-nand-stats[1]:: + Retrieves NAND statistics of given micron device + +linknvme:nvme-micron-pcie-stats[1]:: + Retrieves pcie error statistics for given micron device + +linknvme:nvme-micron-selective-download[1]:: + Performs selective firmware download + +linknvme:nvme-micron-smart-add-log[1]:: + Retrieves NAND statistics + +linknvme:nvme-micron-temperature-stats[1]:: + Retrieves temperature information of given micron device + +linknvme:nvme-netapp-ontapdevices[1]:: + Display information about ONTAP devices + +linknvme:nvme-netapp-smdevices[1]:: + Display information for each NVMe path to an E-Series volume + +linknvme:nvme-toshiba-clear-pcie-correctable-errors[1]:: + Reset the PCIe correctable errors count to zero + +linknvme:nvme-toshiba-vs-internal-log[1]:: + Retrieve a Toshiba device's vendor specific internal log + +linknvme:nvme-toshiba-vs-smart-add-log[1]:: + Retrieve a Toshiba device's vendor specific extended SMART log page + +linknvme:nvme-transcend-badblock[1]:: + Retrieve Transcend NVMe device's bad blocks + +linknvme:nvme-transcend-healthvalue[1]:: + Use NVMe SMART table to analyse the health value of Transcend device + +linknvme:nvme-virtium-show-identify[1]:: + Show a complete detail of identify device information in json format + +linknvme:nvme-virtium-save-smart-to-vtview-log[1]:: + Periodically save smart attributes into a log file + +linknvme:nvme-wdc-cap-diag[1]:: + Retrieve WDC device's diagnostic log and save to file + +linknvme:nvme-wdc-capabilities[1]:: + Display WDC plugin command capabilities + +linknvme:nvme-wdc-clear-assert-dump[1]:: + Clears the assert dump (if present) + +linknvme:nvme-wdc-clear-fw-activate-history[1]:: + Clears the firmware activate history table + +linknvme:nvme-wdc-clear-pcie-corr[1]:: + Clears the pcie correctable errors field + +linknvme:nvme-wdc-clear-pcie-correctable-errors[1]:: + Clears the pcie correctable errors returned in the smart-log-add command + +linknvme:nvme-wdc-cloud-SSD-plugin-version[1]:: + Display WDC plugin Cloud SSD Plugin Version + +linknvme:nvme-wdc-drive-essentials[1]:: + Retrieve WDC device's drive essentials bin files + +linknvme:nvme-wdc-drive-log[1]:: + Retrieve WDC device's drive log and save to file + +linknvme:nvme-wdc-drive-resize[1]:: + Send NVMe WDC Resize Vendor Unique Command + +linknvme:nvme-wdc-enc-get-log[1]:: + Send NVMe WDC enc-get-log Vendor Unique Command + +linknvme:nvme-wdc-get-crash-dump[1]:: + Retrieve WDC device's crash dump + +linknvme:nvme-wdc-get-drive-status[1]:: + Send the NVMe WDC get-drive-status command + +linknvme:nvme-wdc-get-latency-monitor-log[1]:: + Display latency monitor log page data in human readable format + +linknvme:nvme-wdc-get-pfail-dump[1]:: + Retrieve WDC device's pfail crash dump + +linknvme:nvme-wdc-id-ctrl[1]:: + Send NVMe Identify Controller, return result and structure + +linknvme:nvme-wdc-log-page-directory[1]:: + Retrieves the list of Log IDs supported by the drive + +linknvme:nvme-wdc-namespace-resize[1]:: + Resizes the device's namespace + +linknvme:nvme-wdc-purge-monitor[1]:: + Send NVMe WDC Purge-Monitor Vendor Unique Command + +linknvme:nvme-wdc-purge[1]:: + Send NVMe WDC Purge Vendor Unique Command + +linknvme:nvme-wdc-smart-add-log[1]:: + Send NVMe WDC smart add log Vendor Unique Command + +linknvme:nvme-wdc-vs-drive-info[1]:: + Send the NVMe WDC vs-drive-info command + +linknvme:nvme-wdc-vs-error-reason-identifier[1]:: + Retrieve WDC device's telemetry log error reason identifier field + +linknvme:nvme-wdc-vs-fw-activate-history[1]:: + Execute NVMe WDC vs-fw-activate-history Vendor Unique Command + +linknvme:nvme-wdc-vs-internal-log[1]:: + Retrieve WDC device's internal firmware log and save to file + +linknvme:nvme-wdc-vs-nand-stats[1]:: + Send NVMe WDC vs-nand-stats Vendor Unique Command + +linknvme:nvme-wdc-vs-telemetry-controller-option[1]:: + Disable/Enable the controller initiated option of the telemetry log page + +linknvme:nvme-wdc-vs-temperature-stats[1]:: + Display temperature-related statistics + +linknvme:nvme-zns-changed-zone-list[1]:: + Retrieve Changed Zone log for the given device + +linknvme:nvme-zns-close-zone[1]:: + Closes one or all zones + +linknvme:nvme-zns-finish-zone[1]:: + Finishes one or all zones + +linknvme:nvme-zns-id-ctrl[1]:: + Send NVMe Zoned Command Set Identify Controller + +linknvme:nvme-zns-id-ns[1]:: + Send NVMe Zoned Command Set Identify Namespace + +linknvme:nvme-zns-offline-zone[1]:: + Offlines one or all zones + +linknvme:nvme-zns-open-zone[1]:: + Opens one or all zones + +linknvme:nvme-zns-report-zones[1]:: + Retrieve and display the Report Zones data structure + +linknvme:nvme-zns-reset-zone[1]:: + Resets one or all zones + +linknvme:nvme-zns-set-zone-desc[1]:: + Set extended descriptor data for a zone + +linknvme:nvme-zns-zone-append[1]:: + Send an NVMe write command, provide results + +linknvme:nvme-zns-zone-mgmt-recv[1]:: + Zone Management Receive command + +linknvme:nvme-zns-zone-mgmt-send[1]:: + Zone Management Send command + +linknvme:nvme-zns-zrwa-flush-zone[1]:: + Flush LBAs associated with a ZRWA to a zone diff --git a/Documentation/cmds-main.txt b/Documentation/cmds-main.txt index 46df03d..ab8ee3b 100644 --- a/Documentation/cmds-main.txt +++ b/Documentation/cmds-main.txt @@ -10,7 +10,7 @@ linknvme:nvme-error-log[1]:: linknvme:nvme-flush[1]:: Submit flush -linknvme:nvme-dms[1]:: +linknvme:nvme-dsm[1]:: Submit Data Set Management linknvme:nvme-format[1]:: @@ -160,6 +160,9 @@ linknvme:nvme-connect-all[1]:: linknvme:nvme-connect[1]:: Connect to an NVMe-over-Fabrics subsystem +linknvme:nvme-dim[1]:: + Send Discovery Information Management command to a Discovery Controller + linknvme:nvme-disconnect[1]:: Disconnect from an NVMe-over-Fabrics subsystem @@ -168,3 +171,102 @@ linknvme:nvme-disconnect-all[1]:: linknvme:nvme-get-property[1]:: Reads and shows NVMe-over-Fabrics controller property + +linknvme:nvme-media-unit-stat-log[1]:: + Retrieve and show the configuration and wear of media units + +linknvme:nvme-supported-cap-config-log[1]:: + Retrieve and show the list of Supported Capacity Configuration Descriptors + +linknvme:nvme-boot-part-log[1]:: + Retrieve Boot Partition Log + +linknvme:nvme-capacity-mgmt[1]:: + Capacity Management Command + +linknvme:nvme-check-dhchap-key[1]:: + Generate NVMeoF DH-HMAC-CHAP host key + +linknvme:nvme-check-tls-key[1]:: + Validate NVMeoF TLS PSK + +linknvme:nvme-cmdset-ind-id-ns[1]:: + I/O Command Set Independent Identify Namespace + +linknvme:nvme-endurance-event-agg-log[1]:: + Retrieve Endurance Group Event Aggregate Log + +linknvme:nvme-fid-support-effects-log[1]:: + Retrieve FID Support and Effects log + +linknvme:nvme-gen-dhchap-key[1]:: + Generate NVMeoF DH-HMAC-CHAP host key + +linknvme:nvme-gen-hostnqn[1]:: + Generate NVMeoF host NQN + +linknvme:nvme-gen-tls-key[1]:: + Generate NVMeoF TLS PSK + +linknvme:nvme-get-lba-status[1]:: + Get LBA Status command + +linknvme:nvme-id-domain[1]:: + NVMe Identify Domain List + +linknvme:nvme-id-ns-lba-format[1]:: + NVMe Identify Namespace for the specified LBA Format index + +linknvme:nvme-lba-status-log[1]:: + Retrieve LBA Status Information Log + +linknvme:nvme-list-endgrp[1]:: + NVMe Identify Endurance Group List + +linknvme:nvme-ns-rescan[1]:: + Rescans the NVME namespaces + +linknvme:nvme-nvm-id-ctrl[1]:: + NVMe Identify Controller NVM Command Set + +linknvme:nvme-nvm-id-ns[1]:: + NVMe Identify Namespace NVM Command Set + +linknvme:nvme-nvm-id-ns-lba-format[1]:: + NVMe Identify Namespace NVM Command Set for the specified LBA Format index + +linknvme:nvme-persistent-event-log[1]:: + Retrieve Presistent Event Log + +linknvme:nvme-predictable-lat-log[1]:: + Retrieve Predictable Latency per Nvmset Log + +linknvme:nvme-pred-lat-event-agg-log[1]:: + Retrieve Predictable Latency Event Aggregate Log + +linknvme:nvme-primary-ctrl-caps[1]:: + NVMe Identify Primary Controller Capabilities + +linknvme:nvme-reset[1]:: + Resets the controller + +linknvme:nvme-rpmb[1]:: + Replay Protection Memory Block commands + +linknvme:nvme-sanitize-log[1]:: + Retrieve sanitize log + +linknvme:nvme-set-property[1]:: + Set a property and show the resulting value + +linknvme:nvme-show-hostnqn[1]:: + Show NVMeoF host NQN + +linknvme:nvme-subsystem-reset[1]:: + Resets the subsystem + +linknvme:nvme-supported-log-pages[1]:: + Retrieve the Supported Log pages details + +linknvme:nvme-verify[1]:: + verify command diff --git a/Documentation/meson.build b/Documentation/meson.build new file mode 100644 index 0000000..a12eec4 --- /dev/null +++ b/Documentation/meson.build @@ -0,0 +1,257 @@ +adoc_sources = [ + 'nvme', + 'nvme-admin-passthru', + 'nvme-ana-log', + 'nvme-attach-ns', + 'nvme-boot-part-log', + 'nvme-capacity-mgmt', + 'nvme-changed-ns-list-log', + 'nvme-cmdset-ind-id-ns', + 'nvme-compare', + 'nvme-connect', + 'nvme-connect-all', + 'nvme-copy', + 'nvme-create-ns', + 'nvme-delete-ns', + 'nvme-dera-stat', + 'nvme-detach-ns', + 'nvme-device-self-test', + 'nvme-dim', + 'nvme-dir-receive', + 'nvme-dir-send', + 'nvme-disconnect', + 'nvme-disconnect-all', + 'nvme-discover', + 'nvme-dsm', + 'nvme-effects-log', + 'nvme-endurance-event-agg-log', + 'nvme-endurance-log', + 'nvme-error-log', + 'nvme-fid-support-effects-log', + 'nvme-mi-cmd-support-effects-log', + 'nvme-flush', + 'nvme-format', + 'nvme-fw-commit', + 'nvme-fw-download', + 'nvme-fw-log', + 'nvme-gen-hostnqn', + 'nvme-get-feature', + 'nvme-get-lba-status', + 'nvme-get-log', + 'nvme-get-ns-id', + 'nvme-get-property', + 'nvme-help', + 'nvme-huawei-id-ctrl', + 'nvme-huawei-list', + 'nvme-id-ctrl', + 'nvme-id-domain', + 'nvme-id-iocs', + 'nvme-id-ns', + 'nvme-id-nvmset', + 'nvme-intel-id-ctrl', + 'nvme-intel-internal-log', + 'nvme-intel-lat-stats', + 'nvme-intel-market-name', + 'nvme-intel-smart-log-add', + 'nvme-intel-temp-stats', + 'nvme-io-passthru', + 'nvme-lba-status-log', + 'nvme-list', + 'nvme-list-ctrl', + 'nvme-list-endgrp', + 'nvme-list-ns', + 'nvme-list-subsys', + 'nvme-lockdown', + 'nvme-micron-clear-pcie-errors', + 'nvme-micron-internal-log', + 'nvme-micron-nand-stats', + 'nvme-micron-pcie-stats', + 'nvme-micron-selective-download', + 'nvme-micron-smart-add-log', + 'nvme-micron-temperature-stats', + 'nvme-netapp-ontapdevices', + 'nvme-netapp-smdevices', + 'nvme-ns-descs', + 'nvme-ns-rescan', + 'nvme-nvm-id-ctrl', + 'nvme-ocp-latency-monitor-log', + 'nvme-ocp-smart-add-log', + 'nvme-persistent-event-log', + 'nvme-pred-lat-event-agg-log', + 'nvme-predictable-lat-log', + 'nvme-primary-ctrl-caps', + 'nvme-read', + 'nvme-reset', + 'nvme-resv-acquire', + 'nvme-resv-notif-log', + 'nvme-resv-register', + 'nvme-resv-release', + 'nvme-resv-report', + 'nvme-rpmb', + 'nvme-sanitize', + 'nvme-sanitize-log', + 'nvme-security-recv', + 'nvme-security-send', + 'nvme-self-test-log', + 'nvme-set-feature', + 'nvme-set-property', + 'nvme-show-hostnqn', + 'nvme-show-regs', + 'nvme-smart-log', + 'nvme-subsystem-reset', + 'nvme-supported-log-pages', + 'nvme-telemetry-log', + 'nvme-toshiba-clear-pcie-correctable-errors', + 'nvme-toshiba-vs-internal-log', + 'nvme-toshiba-vs-smart-add-log', + 'nvme-transcend-badblock', + 'nvme-transcend-healthvalue', + 'nvme-verify', + 'nvme-virtium-save-smart-to-vtview-log', + 'nvme-virtium-show-identify', + 'nvme-wdc-cap-diag', + 'nvme-wdc-capabilities', + 'nvme-wdc-clear-assert-dump', + 'nvme-wdc-clear-fw-activate-history', + 'nvme-wdc-clear-pcie-correctable-errors', + 'nvme-wdc-cloud-SSD-plugin-version', + 'nvme-wdc-drive-essentials', + 'nvme-wdc-drive-log', + 'nvme-wdc-drive-resize', + 'nvme-wdc-enc-get-log', + 'nvme-wdc-get-crash-dump', + 'nvme-wdc-get-dev-capabilities-log', + 'nvme-wdc-get-drive-status', + 'nvme-wdc-get-error-recovery-log', + 'nvme-wdc-get-latency-monitor-log', + 'nvme-wdc-get-pfail-dump', + 'nvme-wdc-get-unsupported-reqs-log', + 'nvme-wdc-id-ctrl', + 'nvme-wdc-log-page-directory', + 'nvme-wdc-namespace-resize', + 'nvme-wdc-purge', + 'nvme-wdc-purge-monitor', + 'nvme-wdc-vs-drive-info', + 'nvme-wdc-vs-error-reason-identifier', + 'nvme-wdc-vs-fw-activate-history', + 'nvme-wdc-vs-internal-log', + 'nvme-wdc-vs-nand-stats', + 'nvme-wdc-vs-smart-add-log', + 'nvme-wdc-vs-telemetry-controller-option', + 'nvme-wdc-vs-temperature-stats', + 'nvme-write', + 'nvme-write-uncor', + 'nvme-write-zeroes', + 'nvme-zns-changed-zone-list', + 'nvme-zns-close-zone', + 'nvme-zns-finish-zone', + 'nvme-zns-id-ctrl', + 'nvme-zns-id-ns', + 'nvme-zns-offline-zone', + 'nvme-zns-open-zone', + 'nvme-zns-report-zones', + 'nvme-zns-reset-zone', + 'nvme-zns-set-zone-desc', + 'nvme-zns-zone-append', + 'nvme-zns-zone-mgmt-recv', + 'nvme-zns-zone-mgmt-send', +] + +adoc_includes = [ + 'cmd-plugins.txt', + 'cmds-main.txt', +] + +want_docs = get_option('docs') +want_docs_build = get_option('docs-build') +if want_docs != 'false' + mandir = join_paths(get_option('mandir'), 'man1') + htmldir = join_paths(get_option('htmldir'), 'nvme') + + asciidoctor = find_program('asciidoc', required : false) + if want_docs_build and asciidoctor.found() + # Build documentation before installing + + foreach file : adoc_includes + configure_file( + input: file, + output: file, + copy: true) + endforeach + + # man pages + if want_docs == 'all' or want_docs == 'man' + xmlto = find_program('xmlto', required: false) + if xmlto.found() + foreach adoc : adoc_sources + input = adoc + '.txt' + subst = configure_file( + input: adoc + '.txt', + output: adoc + '.msubst', + configuration: substs) + xml = custom_target( + adoc.underscorify() + '_xml', + input: subst, + output: '@BASENAME@.xml', + command: [asciidoctor, + '-f', files('asciidoc.conf'), + '-b', 'docbook', + '-d', 'manpage', + '-o', '@OUTPUT@', + '@INPUT@'], + ) + custom_target( + adoc.underscorify() + '_man', + input: xml, + output: '@BASENAME@.1', + command: [xmlto, + '-m', files('manpage-normal.xsl'), + '-o', '@OUTDIR@', + '--skip-validation', + 'man', + '@INPUT@'], + install: true, + install_dir: mandir) + endforeach + endif + endif + + # html + if want_docs == 'all' or want_docs == 'html' + foreach adoc : adoc_sources + input = adoc + '.txt' + subst = configure_file( + input: adoc + '.txt', + output: adoc + '.hsubst', + configuration: substs) + custom_target( + adoc.underscorify() + '_html', + input: subst, + output: '@BASENAME@.html', + command: [asciidoctor, + '-f', files('asciidoc.conf'), + '-b', 'xhtml11', + '-d', 'manpage', + '-o', '@OUTPUT@', + '@INPUT@'], + install: true, + install_dir: htmldir) + endforeach + endif + + else + # asciidoctor not found, install pre compiled documetationx + + foreach adoc : adoc_sources + if want_docs == 'all' or want_docs == 'man' + man = files(adoc + '.1') + install_data(man, install_dir: mandir) + endif + if want_docs == 'all' or want_docs == 'html' + html = files(adoc + '.html') + install_data(html, install_dir: htmldir) + endif + endforeach + + endif +endif diff --git a/Documentation/nvme-admin-passthru.1 b/Documentation/nvme-admin-passthru.1 index fecabb4..1beb822 100644 --- a/Documentation/nvme-admin-passthru.1 +++ b/Documentation/nvme-admin-passthru.1 @@ -2,12 +2,12 @@ .\" Title: nvme-admin-passthru .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-ADMIN\-PASSTHR" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-ADMIN\-PASSTHR" "1" "04/08/2022" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Documentation/nvme-admin-passthru.html b/Documentation/nvme-admin-passthru.html index 064f852..b6b7675 100644 --- a/Documentation/nvme-admin-passthru.html +++ b/Documentation/nvme-admin-passthru.html @@ -4,7 +4,7 @@ - + nvme-admin-passthru(1) + + + + +
+
+

SYNOPSIS

+
+
+
nvme gen-dhchap-key [--hmac=<hmac-id> | -h <hmac-id>]
+                      [--secret=<secret> | -s <secret> ]
+                      [--key-length=<len> | -l <len> ]
+                      [--nqn=<host-nqn> | -n <host-nqn> ]
+
+
+
+
+
+

DESCRIPTION

+
+

Generate a base64-encoded DH-HMAC-CHAP host key in the form: +DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n: +and prints it to stdout.

+
+
+
+

OPTIONS

+
+
+
+-h <hmac-id> +
+
+--hmac=<hmac-id> +
+
+

+ Select a HMAC algorithm to use. Possible values are: + 0 - No HMAC algorithm + 1 - SHA-256 + 2 - SHA-384 + 3 - SHA-512 +

+
+
+-s <secret> +
+
+--secret=<secret> +
+
+

+ Secret value (in hexadecimal) to be used for the key. If none are + provided a random value is used. +

+
+
+-l <len> +
+
+--key-length=<len> +
+
+

+ Length of the resulting key. Possible values are 32, 48, or 64. +

+
+
+-n <hostnqn> +
+
+--nqn=<hostnqn> +
+
+

+ Host-NQN to be used for the transformation. This parameter is only + valid if a non-zero HMAC function has been specified. +

+
+
+
+
+
+

EXAMPLES

+
+

No Examples

+
+
+
+

NVME

+
+

Part of the nvme-user suite

+
+
+
+

+ + + diff --git a/Documentation/nvme-gen-dhchap-key.txt b/Documentation/nvme-gen-dhchap-key.txt new file mode 100644 index 0000000..79e8ed5 --- /dev/null +++ b/Documentation/nvme-gen-dhchap-key.txt @@ -0,0 +1,52 @@ +nvme-gen-dhchap-key(1) +====================== + +NAME +---- +nvme-gen-dhchap-key - Generate a host DH-HMAC-CHAP key + +SYNOPSIS +-------- +[verse] +'nvme gen-dhchap-key' [--hmac= | -h ] + [--secret= | -s ] + [--key-length= | -l ] + [--nqn= | -n ] + +DESCRIPTION +----------- +Generate a base64-encoded DH-HMAC-CHAP host key in the form: +DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n: +and prints it to stdout. + +OPTIONS +------- +-h :: +--hmac=:: + Select a HMAC algorithm to use. Possible values are: + 0 - No HMAC algorithm + 1 - SHA-256 + 2 - SHA-384 + 3 - SHA-512 + +-s :: +--secret=:: + Secret value (in hexadecimal) to be used for the key. If none are + provided a random value is used. + +-l :: +--key-length=:: + Length of the resulting key. Possible values are 32, 48, or 64. + +-n :: +--nqn=:: + Host-NQN to be used for the transformation. This parameter is only + valid if a non-zero HMAC function has been specified. + +EXAMPLES +-------- +No Examples + +NVME +---- +Part of the nvme-user suite diff --git a/Documentation/nvme-gen-hostnqn.1 b/Documentation/nvme-gen-hostnqn.1 index 9aee601..79a586f 100644 --- a/Documentation/nvme-gen-hostnqn.1 +++ b/Documentation/nvme-gen-hostnqn.1 @@ -2,12 +2,12 @@ .\" Title: nvme-gen-hostnqn .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-GEN\-HOSTNQN" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-GEN\-HOSTNQN" "1" "04/08/2022" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Documentation/nvme-gen-hostnqn.html b/Documentation/nvme-gen-hostnqn.html index 2b43185..1e06595 100644 --- a/Documentation/nvme-gen-hostnqn.html +++ b/Documentation/nvme-gen-hostnqn.html @@ -4,7 +4,7 @@ - + nvme-gen-hostnqn(1) + + + + +
+
+

SYNOPSIS

+
+
+
nvme id-ns <device> [--uuid-index=<uuid-index> | -U <uuid_index>]
+                    [--lba-format-index=<lba_format_index> | -i <lba_format_index>]
+                        [-v | --verbose]
+                        [--output-format=<fmt> | -o <fmt>]
+
+
+
+
+
+

DESCRIPTION

+
+

For the NVMe device given, sends an identify namespace for +the specified LBA Format index command and provides the result +that is include capability field only and returned structure.

+

The <device> parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

+

On success, the structure may be returned in one of several ways depending +on the option flags; the structure may be parsed by the program or the +raw buffer may be printed to stdout.

+
+
+
+

OPTIONS

+
+
+
+-U <uuid-index> +
+
+--uuid-index=<uuid-index> +
+
+

+ UUID Index of the feature +

+
+
+-i <lba_format_index> +
+
+--lba-format-index=<lba_format_index> +
+
+

+ This field specifies the index into the LBA Format list identifying + the LBA Format capabilities that are to be returned +

+
+
+-v +
+
+--verbose +
+
+

+ Increase the information detail in the output. +

+
+
+-o <format> +
+
+--output-format=<format> +
+
+

+ Set the reporting format to normal, json, or + binary. Only one output format can be used at a time. +

+
+
+
+
+
+

EXAMPLES

+
+
    +
  • +

    +Has the program interpret the returned buffer and display the known +fields in a human readable format: +

    +
    +
    +
    # nvme id-ns-lba-format /dev/nvme0n1 -i 0
    +
    +
  • +
  • +

    +Have the program return the raw structure in binary: +

    +
    +
    +
    # nvme id-ns-lba-format /dev/nvme0n1 -i 0 -o binary > id_ns.raw
    +# nvme id-ns-lba-format /dev/nvme0n1 -i 0 --output-format=binary > id_ns.raw
    +
    +

    It is probably a bad idea to not redirect stdout when using this mode.

    +
  • +
  • +

    +Alternatively you may want to send the data to another program that +can parse the raw buffer. +

    +
    +
    +
    # nvme id-ns-lba-format /dev/nvme0n1 -i 0 --raw-binary | nvme_parse_id_ns
    +
    +

    The parse program in the above example can be a program that shows the +structure in a way you like. The following program is such an example +that will parse it and can accept the output through a pipe, '|', +as shown in the above example, or you can 'cat' a saved output buffer +to it.

    +
  • +
+
+
+
/* File: nvme_parse_id_ns_lba_format.c */
+
+#include <linux/nvme.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int main(int argc, char **argv)
+{
+        unsigned char buf[sizeof(struct nvme_id_ns)];
+        struct nvme_id_ns *ns = (struct nvme_id_ns *)buf;
+
+        if (read(STDIN_FILENO, buf, sizeof(buf)))
+                return 1;
+
+        printf("nsze : %#llx\n", ns->nlbaf);
+        printf("ncap : %#llx\n", ns->mc);
+        return 0;
+}
+
+
+
+
+

NVME

+
+

Part of the nvme-user suite

+
+
+
+

+ + + diff --git a/Documentation/nvme-id-ns-lba-format.txt b/Documentation/nvme-id-ns-lba-format.txt new file mode 100644 index 0000000..32df2f6 --- /dev/null +++ b/Documentation/nvme-id-ns-lba-format.txt @@ -0,0 +1,102 @@ +nvme-id-ns-lba-format(1) +======================== + +NAME +---- +nvme-id-ns-lba-format - Send NVMe Identify Namespace for the specified LBA Format index, display structure + +SYNOPSIS +-------- +[verse] +'nvme id-ns' [--uuid-index= | -U ] + [--lba-format-index= | -i ] + [-v | --verbose] + [--output-format= | -o ] + +DESCRIPTION +----------- +For the NVMe device given, sends an identify namespace for +the specified LBA Format index command and provides the result +that is include capability field only and returned structure. + +The parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1). + +On success, the structure may be returned in one of several ways depending +on the option flags; the structure may be parsed by the program or the +raw buffer may be printed to stdout. + +OPTIONS +------- +-U :: +--uuid-index=:: + UUID Index of the feature + +-i :: +--lba-format-index=:: + This field specifies the index into the LBA Format list identifying + the LBA Format capabilities that are to be returned + +-v:: +--verbose:: + Increase the information detail in the output. + +-o :: +--output-format=:: + Set the reporting format to 'normal', 'json', or + 'binary'. Only one output format can be used at a time. + +EXAMPLES +-------- +* Has the program interpret the returned buffer and display the known +fields in a human readable format: ++ +------------ +# nvme id-ns-lba-format /dev/nvme0n1 -i 0 +------------ ++ +* Have the program return the raw structure in binary: ++ +------------ +# nvme id-ns-lba-format /dev/nvme0n1 -i 0 -o binary > id_ns.raw +# nvme id-ns-lba-format /dev/nvme0n1 -i 0 --output-format=binary > id_ns.raw +------------ ++ +It is probably a bad idea to not redirect stdout when using this mode. + +* Alternatively you may want to send the data to another program that +can parse the raw buffer. ++ +------------ +# nvme id-ns-lba-format /dev/nvme0n1 -i 0 --raw-binary | nvme_parse_id_ns +------------ ++ +The parse program in the above example can be a program that shows the +structure in a way you like. The following program is such an example +that will parse it and can accept the output through a pipe, `'|'`, +as shown in the above example, or you can `'cat'` a saved output buffer +to it. +------------ +/* File: nvme_parse_id_ns_lba_format.c */ + +#include +#include +#include + +int main(int argc, char **argv) +{ + unsigned char buf[sizeof(struct nvme_id_ns)]; + struct nvme_id_ns *ns = (struct nvme_id_ns *)buf; + + if (read(STDIN_FILENO, buf, sizeof(buf))) + return 1; + + printf("nsze : %#llx\n", ns->nlbaf); + printf("ncap : %#llx\n", ns->mc); + return 0; +} +------------ + +NVME +---- +Part of the nvme-user suite diff --git a/Documentation/nvme-id-ns.1 b/Documentation/nvme-id-ns.1 index 3104be3..97e8962 100644 --- a/Documentation/nvme-id-ns.1 +++ b/Documentation/nvme-id-ns.1 @@ -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 -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-ID\-NS" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-ID\-NS" "1" "04/08/2022" "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 [\-v | \-\-vendor\-specific] [\-b | \-\-raw\-binary] - [\-\-namespace\-id= | \-n ] [\-f | \-\-force] + [\-\-namespace\-id= | \-n ] [\-\-force] [\-\-human\-readable | \-H] [\-\-output\-format= | \-o ] .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 diff --git a/Documentation/nvme-id-ns.html b/Documentation/nvme-id-ns.html index 8213e5e..55ce45a 100644 --- a/Documentation/nvme-id-ns.html +++ b/Documentation/nvme-id-ns.html @@ -4,7 +4,7 @@ - + nvme-id-ns(1) - - - - -
-
-

SYNOPSIS

-
-
-
nvme lnvm-remove [--target-name=<TARGET> | -n <TARGET>]
-
-
-
-
-
-

DESCRIPTION

-
-

Remove an initialized target.

-

The target name is the name of which the media is exposed as in -/dev/<TARGET>

-
-
-
-

OPTIONS

-
-
-
---target-name=<TARGET> -
-
--n <TARGET> -
-
-

- Target name of the device to initialize. For example: target0. -

-
-
-
-
-
-

EXAMPLES

-
-

None yet

-
-
-
-

NVME

-
-

Part of the nvme-user suite

-
-
-
-

- - - + + + + + + +nvme-media-unit-stat-log(1) + + + + + +
+
+

SYNOPSIS

+
+
+
nvme supported-log-pages <device> [--output-format=<fmt> | -o <fmt>]
+                            [-b | --raw-binary]
+
+
+
+
+
+

DESCRIPTION

+
+

Retrieves the NVMe supportd log pages details from an NVMe device and provides +the returned structure.

+

The <device> parameter is mandatory and should be the NVMe character +device (ex: /dev/nvme0).

+

On success, the returned supportd log pages log structure will be printed +for each command that is supported.

+
+
+
+

OPTIONS

+
+
+
+-o <format> +
+
+--output-format=<format> +
+
+

+ This option will set the reporting format to normal, json, or binary. + Only one output format can be used at a time. +

+
+
+ -b +
+
+ --raw-binary +
+
+

+ This option will get the data in raw binary format. +

+
+
+ -d +
+
+ --dom-id +
+
+

+ This option is to get the domain ID. +

+
+
+
+
+
+

EXAMPLES

+
+

No examples provided yet.

+
+
+
+

NVME

+
+

Part of the nvme-user suite

+
+
+
+

+ + + \ No newline at end of file diff --git a/Documentation/nvme-media-unit-stat-log.txt b/Documentation/nvme-media-unit-stat-log.txt new file mode 100644 index 0000000..427b77c --- /dev/null +++ b/Documentation/nvme-media-unit-stat-log.txt @@ -0,0 +1,47 @@ +nvme-media-unit-stat-log(1) +=========================== + +NAME +---- +nvme-media-unit-stat-log - Send NVMe Media unit status Log pages +request, returns result and log. + +SYNOPSIS +-------- +[verse] +'nvme media-unit-stat-log' [--dom-id | -d ] + [--output-format= | -o ] + [--raw-binary | -b] + +DESCRIPTION +----------- +Retrieves the NVMe Media unit status log pages details from +an NVMe device and provides the returned structure. + +The parameter is mandatory and should be the NVMe character +device (ex: /dev/nvme0). + +On success, the returned Media unit status log pages log structure will be printed. + +OPTIONS +------- + +-o :: +--output-format=:: + This option will set the reporting format to normal, json, or binary. + Only one output format can be used at a time. + +-d:: +--dom-id:: + To get the domain ID. +-b:: +--raw-binary:: + To show raw binary data. + +EXAMPLES +-------- +No examples provided yet. + +NVME +---- +Part of the nvme-user suite \ No newline at end of file diff --git a/Documentation/nvme-lnvm-remove.1 b/Documentation/nvme-mi-cmd-support-effects-log.1 similarity index 51% rename from Documentation/nvme-lnvm-remove.1 rename to Documentation/nvme-mi-cmd-support-effects-log.1 index 8b6bb76..c15184d 100644 --- a/Documentation/nvme-lnvm-remove.1 +++ b/Documentation/nvme-mi-cmd-support-effects-log.1 @@ -1,13 +1,13 @@ '\" t -.\" Title: nvme-lnvm-remove +.\" Title: nvme-mi-cmd-support-effects-log .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-LNVM\-REMOVE" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-MI\-CMD\-SUPPO" "1" "04/08/2022" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,26 +28,37 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -nvme-lnvm-remove \- Remove an initialized LightNVM target\&. +nvme-mi-cmd-support-effects-log \- Send NVMe MI Command Support and Effects log, returns results and structure .SH "SYNOPSIS" .sp .nf -\fInvme lnvm\-remove\fR [\-\-target\-name= | \-n ] +\fInvme\-mi\-cmd\-support\-effects\-log\fR [\-o | \-\-output\-format=] + [\-H | \-\-human\-readable] .fi .SH "DESCRIPTION" .sp -Remove an initialized target\&. +For the NVMe device given, sends an MI Command Support and Effects log (id 13h) and provides the result and returned log structure\&. .sp -The target name is the name of which the media is exposed as in /dev/ +The 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 structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&. .SH "OPTIONS" .PP -\-\-target\-name=, \-n +\-o , \-\-output\-format= .RS 4 -Target name of the device to initialize\&. For example: target0\&. +Set the reporting format to +\fInormal\fR, +\fIjson\fR, or +\fIbinary\fR\&. Only one output format can be used at a time\&. +.RE +.PP +\-H, \-\-human\-readable +.RS 4 +This option will parse and format many of the bit fields into human\-readable formats\&. .RE .SH "EXAMPLES" .sp -None yet +nvme mi\-cmd\-support\-effects\-log /dev/nvme0 \-H .SH "NVME" .sp Part of the nvme\-user suite diff --git a/Documentation/nvme-mi-cmd-support-effects-log.html b/Documentation/nvme-mi-cmd-support-effects-log.html new file mode 100644 index 0000000..1afb0c0 --- /dev/null +++ b/Documentation/nvme-mi-cmd-support-effects-log.html @@ -0,0 +1,822 @@ + + + + + + +nvme-mi-cmd-support-effects-log(1) + + + + + +
+
+

SYNOPSIS

+
+
+
nvme-mi-cmd-support-effects-log <device> [-o <fmt> | --output-format=<fmt>]
+                                        [-H | --human-readable]
+
+
+
+
+
+

DESCRIPTION

+
+

For the NVMe device given, sends an MI Command Support and Effects log (id 13h) +and provides the result and returned log structure.

+

The <device> parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

+

On success, the structure may be returned in one of several ways depending +on the option flags; the structure may be parsed by the program or the +raw buffer may be printed to stdout.

+
+
+
+

OPTIONS

+
+
+
+-o <format> +
+
+--output-format=<format> +
+
+

+ Set the reporting format to normal, json, or + binary. Only one output format can be used at a time. +

+
+
+-H +
+
+--human-readable +
+
+

+ This option will parse and format many of the bit fields + into human-readable formats. +

+
+
+
+
+
+

EXAMPLES

+
+

nvme mi-cmd-support-effects-log /dev/nvme0 -H

+
+
+
+

NVME

+
+

Part of the nvme-user suite

+
+
+
+

+ + + diff --git a/Documentation/nvme-mi-cmd-support-effects-log.txt b/Documentation/nvme-mi-cmd-support-effects-log.txt new file mode 100644 index 0000000..67b8355 --- /dev/null +++ b/Documentation/nvme-mi-cmd-support-effects-log.txt @@ -0,0 +1,45 @@ +nvme-mi-cmd-support-effects-log(1) +================================== + +NAME +---- +nvme-mi-cmd-support-effects-log - Send NVMe MI Command Support and Effects log, + returns results and structure + +SYNOPSIS +-------- +[verse] +'nvme-mi-cmd-support-effects-log' [-o | --output-format=] + [-H | --human-readable] + +DESCRIPTION +----------- +For the NVMe device given, sends an MI Command Support and Effects log (id 13h) +and provides the result and returned log structure. + +The parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1). + +On success, the structure may be returned in one of several ways depending +on the option flags; the structure may be parsed by the program or the +raw buffer may be printed to stdout. + +OPTIONS +------- +-o :: +--output-format=:: + Set the reporting format to 'normal', 'json', or + 'binary'. Only one output format can be used at a time. + +-H:: +--human-readable:: + This option will parse and format many of the bit fields + into human-readable formats. + +EXAMPLES +-------- +nvme mi-cmd-support-effects-log /dev/nvme0 -H + +NVME +---- +Part of the nvme-user suite diff --git a/Documentation/nvme-micron-clear-pcie-errors.1 b/Documentation/nvme-micron-clear-pcie-errors.1 index 7da8234..b99290e 100644 --- a/Documentation/nvme-micron-clear-pcie-errors.1 +++ b/Documentation/nvme-micron-clear-pcie-errors.1 @@ -2,12 +2,12 @@ .\" Title: nvme-micron-clear-pcie-errors .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-MICRON\-CLEAR\" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-MICRON\-CLEAR\" "1" "04/08/2022" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Documentation/nvme-micron-clear-pcie-errors.html b/Documentation/nvme-micron-clear-pcie-errors.html index 3f958f4..be146ad 100644 --- a/Documentation/nvme-micron-clear-pcie-errors.html +++ b/Documentation/nvme-micron-clear-pcie-errors.html @@ -4,7 +4,7 @@ - + nvme-micron-clear-pcie-errors(1) - - - - -
-
-

SYNOPSIS

-
-
-
nvme lnvm-list
-
-
-
-
-
-

DESCRIPTION

-
-

List all registered LightNVM devices.

-
-
-
-

OPTIONS

-
-

No options yet.

-
-
-
-

EXAMPLES

-
-

No examples yet.

-
-
-
-

NVME

-
-

Part of the nvme-user suite

-
-
-
-

- - - + + + + + + +nvme-wdc-clear-pcie-corr(1) + + + + + +
+
+

SYNOPSIS

+
+
+
nvme wdc clear-pcie-corr <device>
+
+
+
+
+
+

DESCRIPTION

+
+

For the NVMe device given, sends the wdc vendor unique clear pcie +correctable errors command.

+

The <device> parameter is mandatory and may be either the NVMe +character device (ex: /dev/nvme0), or a namespace block device (ex: +/dev/nvme0n1).

+

This will only work on WDC devices supporting this feature. +Results for any other device are undefined.

+
+
+
+

OPTIONS

+
+

None

+
+
+
+

EXAMPLES

+
+
    +
  • +

    +Clears the PCIe Correctable Error Count field returned in the smart-log-add command: +

    +
    +
    +
    # nvme wdc clear-pcie-corr /dev/nvme0
    +
    +
  • +
+
+
+
+

NVME

+
+

Part of the nvme-user suite

+
+
+
+

+ + + diff --git a/Documentation/nvme-wdc-clear-pcie-correctable-errors.1 b/Documentation/nvme-wdc-clear-pcie-correctable-errors.1 index 7d3e090..50225e9 100644 --- a/Documentation/nvme-wdc-clear-pcie-correctable-errors.1 +++ b/Documentation/nvme-wdc-clear-pcie-correctable-errors.1 @@ -2,12 +2,12 @@ .\" Title: nvme-wdc-clear-pcie-correctable-errors .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-WDC\-CLEAR\-PC" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-WDC\-CLEAR\-PC" "1" "04/08/2022" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Documentation/nvme-wdc-clear-pcie-correctable-errors.html b/Documentation/nvme-wdc-clear-pcie-correctable-errors.html index 2b4b49c..4aa66ab 100644 --- a/Documentation/nvme-wdc-clear-pcie-correctable-errors.html +++ b/Documentation/nvme-wdc-clear-pcie-correctable-errors.html @@ -4,7 +4,7 @@ - + nvme-wdc-clear-pcie-correctable-errors(1) + + + + +
+
+

SYNOPSIS

+
+
+
nvme wdc get-dev-capabilities-log <device> [--output-format=<normal|json>
+-o <normal|json>]
+
+
+
+
+
+

DESCRIPTION

+
+

For the NVMe device given, send a WDC plugin get-dev-capabilities-log command +and output the device capabilities log data. The --output-format option will +format the output as specified.

+

The <device> parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0).

+

This will only work on WDC devices supporting this log page. +Results for any other device are undefined.

+

On success it returns the parsed device capabilities log page data, error +code otherwise.

+
+
+
+

OPTIONS

+
+
+
+-o <format> +
+
+--output-format=<format> +
+
+

+ Set the reporting format to normal, or + json. Only one output format can be used at a time. + Default is normal. +

+
+
+
+
+
+

EXAMPLES

+
+
    +
  • +

    +Has the program issue WDC get-dev-capabilities-log plugin command : +

    +
    +
    +
    # nvme wdc get-dev-capabilities-log /dev/nvme0
    +
    +
  • +
+
+
+
+

NVME

+
+

Part of the nvme-user suite.

+
+
+
+

+ + + diff --git a/Documentation/nvme-wdc-get-dev-capabilities-log.txt b/Documentation/nvme-wdc-get-dev-capabilities-log.txt new file mode 100644 index 0000000..0621881 --- /dev/null +++ b/Documentation/nvme-wdc-get-dev-capabilities-log.txt @@ -0,0 +1,48 @@ +nvme-wdc-get-dev-capabilities-log(1) +==================================== + +NAME +---- +nvme-wdc-get-dev-capabilities-log - Send NVMe WDC get-dev-capabilities-log + plugin command, return parsed log output + +SYNOPSIS +-------- +[verse] +'nvme wdc get-dev-capabilities-log' [--output-format= +-o ] + +DESCRIPTION +----------- +For the NVMe device given, send a WDC plugin get-dev-capabilities-log command +and output the device capabilities log data. The --output-format option will +format the output as specified. + +The parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0). + +This will only work on WDC devices supporting this log page. +Results for any other device are undefined. + +On success it returns the parsed device capabilities log page data, error +code otherwise. + +OPTIONS +------- +-o :: +--output-format=:: + Set the reporting format to 'normal', or + 'json'. Only one output format can be used at a time. + Default is normal. + +EXAMPLES +-------- +* Has the program issue WDC get-dev-capabilities-log plugin command : ++ +------------ +# nvme wdc get-dev-capabilities-log /dev/nvme0 +------------ + +NVME +---- +Part of the nvme-user suite. diff --git a/Documentation/nvme-wdc-get-drive-status.1 b/Documentation/nvme-wdc-get-drive-status.1 index 0ce71ba..3c64d66 100644 --- a/Documentation/nvme-wdc-get-drive-status.1 +++ b/Documentation/nvme-wdc-get-drive-status.1 @@ -2,12 +2,12 @@ .\" Title: nvme-wdc-get-drive-status .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-WDC\-GET\-DRIV" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-WDC\-GET\-DRIV" "1" "04/08/2022" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Documentation/nvme-wdc-get-drive-status.html b/Documentation/nvme-wdc-get-drive-status.html index ee340f2..041aade 100644 --- a/Documentation/nvme-wdc-get-drive-status.html +++ b/Documentation/nvme-wdc-get-drive-status.html @@ -4,7 +4,7 @@ - + nvme-wdc-get-drive-status(1) + + + + +
+
+

SYNOPSIS

+
+
+
nvme wdc get-error-recovery-log <device> [--output-format=<normal|json>
+-o <normal|json>]
+
+
+
+
+
+

DESCRIPTION

+
+

For the NVMe device given, send a WDC plugin get-error-recovery-log command +and output the error recovery log data. The --output-format option will format +the output as specified.

+

The <device> parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0).

+

This will only work on WDC devices supporting this log page. +Results for any other device are undefined.

+

On success it returns the parsed error recovery log page data, error +code otherwise.

+
+
+
+

OPTIONS

+
+
+
+-o <format> +
+
+--output-format=<format> +
+
+

+ Set the reporting format to normal, or + json. Only one output format can be used at a time. + Default is normal. +

+
+
+
+
+
+

EXAMPLES

+
+
    +
  • +

    +Has the program issue WDC get-error-recovery-log plugin command : +

    +
    +
    +
    # nvme wdc get-error-recovery-log /dev/nvme0
    +
    +
  • +
+
+
+
+

NVME

+
+

Part of the nvme-user suite.

+
+
+
+

+ + + diff --git a/Documentation/nvme-wdc-get-error-recovery-log.txt b/Documentation/nvme-wdc-get-error-recovery-log.txt new file mode 100644 index 0000000..2ad3605 --- /dev/null +++ b/Documentation/nvme-wdc-get-error-recovery-log.txt @@ -0,0 +1,48 @@ +nvme-wdc-get-error-recovery-log(1) +================================== + +NAME +---- +nvme-wdc-get-error-recovery-log - Send NVMe WDC get-error-recovery-log plugin + command, return parsed log output + +SYNOPSIS +-------- +[verse] +'nvme wdc get-error-recovery-log' [--output-format= +-o ] + +DESCRIPTION +----------- +For the NVMe device given, send a WDC plugin get-error-recovery-log command +and output the error recovery log data. The --output-format option will format +the output as specified. + +The parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0). + +This will only work on WDC devices supporting this log page. +Results for any other device are undefined. + +On success it returns the parsed error recovery log page data, error +code otherwise. + +OPTIONS +------- +-o :: +--output-format=:: + Set the reporting format to 'normal', or + 'json'. Only one output format can be used at a time. + Default is normal. + +EXAMPLES +-------- +* Has the program issue WDC get-error-recovery-log plugin command : ++ +------------ +# nvme wdc get-error-recovery-log /dev/nvme0 +------------ + +NVME +---- +Part of the nvme-user suite. diff --git a/Documentation/nvme-wdc-get-latency-monitor-log.1 b/Documentation/nvme-wdc-get-latency-monitor-log.1 index 24903c5..4853add 100644 --- a/Documentation/nvme-wdc-get-latency-monitor-log.1 +++ b/Documentation/nvme-wdc-get-latency-monitor-log.1 @@ -2,12 +2,12 @@ .\" Title: nvme-wdc-get-latency-monitor-log .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-WDC\-GET\-LATE" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-WDC\-GET\-LATE" "1" "04/08/2022" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Documentation/nvme-wdc-get-latency-monitor-log.html b/Documentation/nvme-wdc-get-latency-monitor-log.html index 0c86989..fa91b8f 100644 --- a/Documentation/nvme-wdc-get-latency-monitor-log.html +++ b/Documentation/nvme-wdc-get-latency-monitor-log.html @@ -4,7 +4,7 @@ - + nvme-wdc-get-latency-monitor-log(1) + + + + +
+
+

SYNOPSIS

+
+
+
nvme wdc get-unsupported-reqs-log <device> [--output-format=<normal|json>
+-o <normal|json>]
+
+
+
+
+
+

DESCRIPTION

+
+

For the NVMe device given, send a WDC plugin get-unsupported-reqs-log command +and output the unsupported requirements log data. The --output-format option +will format the output as specified.

+

The <device> parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0).

+

This will only work on WDC devices supporting this log page. +Results for any other device are undefined.

+

On success it returns the parsed unsupported requirements log page data, error +code otherwise.

+
+
+
+

OPTIONS

+
+
+
+-o <format> +
+
+--output-format=<format> +
+
+

+ Set the reporting format to normal, or + json. Only one output format can be used at a time. + Default is normal. +

+
+
+
+
+
+

EXAMPLES

+
+
    +
  • +

    +Has the program issue WDC get-unsupported-reqs-log plugin command : +

    +
    +
    +
    # nvme wdc get-unsupported-reqs-log /dev/nvme0
    +
    +
  • +
+
+
+
+

NVME

+
+

Part of the nvme-user suite.

+
+
+
+

+ + + diff --git a/Documentation/nvme-wdc-get-unsupported-reqs-log.txt b/Documentation/nvme-wdc-get-unsupported-reqs-log.txt new file mode 100644 index 0000000..f028665 --- /dev/null +++ b/Documentation/nvme-wdc-get-unsupported-reqs-log.txt @@ -0,0 +1,48 @@ +nvme-wdc-get-unsupported-reqs-log(1) +==================================== + +NAME +---- +nvme-wdc-get-unsupported-reqs-log - Send NVMe WDC get-unsupported-reqs-log + plugin command, return parsed log output + +SYNOPSIS +-------- +[verse] +'nvme wdc get-unsupported-reqs-log' [--output-format= +-o ] + +DESCRIPTION +----------- +For the NVMe device given, send a WDC plugin get-unsupported-reqs-log command +and output the unsupported requirements log data. The --output-format option +will format the output as specified. + +The parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0). + +This will only work on WDC devices supporting this log page. +Results for any other device are undefined. + +On success it returns the parsed unsupported requirements log page data, error +code otherwise. + +OPTIONS +------- +-o :: +--output-format=:: + Set the reporting format to 'normal', or + 'json'. Only one output format can be used at a time. + Default is normal. + +EXAMPLES +-------- +* Has the program issue WDC get-unsupported-reqs-log plugin command : ++ +------------ +# nvme wdc get-unsupported-reqs-log /dev/nvme0 +------------ + +NVME +---- +Part of the nvme-user suite. diff --git a/Documentation/nvme-wdc-id-ctrl.1 b/Documentation/nvme-wdc-id-ctrl.1 index 7c176a7..bdb99e3 100644 --- a/Documentation/nvme-wdc-id-ctrl.1 +++ b/Documentation/nvme-wdc-id-ctrl.1 @@ -2,12 +2,12 @@ .\" Title: nvme-wdc-id-ctrl .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-WDC\-ID\-CTRL" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-WDC\-ID\-CTRL" "1" "04/08/2022" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Documentation/nvme-wdc-id-ctrl.html b/Documentation/nvme-wdc-id-ctrl.html index 3acde0a..f0ef3e8 100644 --- a/Documentation/nvme-wdc-id-ctrl.html +++ b/Documentation/nvme-wdc-id-ctrl.html @@ -4,7 +4,7 @@ - + nvme-wdc-id-ctrl(1) + + + + +
+
+

SYNOPSIS

+
+
+
nvme wdc smart-add-log <device> [--interval=<NUM>, -i <NUM>] [--output-format=<normal|json> -o <normal|json>]
+
+
+
+
+
+

DESCRIPTION

+
+

For the NVMe device given, send a Vendor Unique WDC smart-add-log command and +provide the additional smart log. The --interval option will return performance +statistics from the specified reporting interval.

+

The <device> parameter is mandatory and may be either the NVMe character +device (ex: /dev/nvme0).

+

This will only work on WDC devices supporting this feature. +Results for any other device are undefined.

+

On success it returns 0, error code otherwise.

+
+
+
+

OPTIONS

+
+
+
+-i <NUM> +
+
+--interval=<NUM> +
+
+

+ Return the statistics from specific interval, defaults to 14 +

+
+
+-o <format> +
+
+--output-format=<format> +
+
+

+ Set the reporting format to normal, or + json. Only one output format can be used at a time. + Default is normal. +

+
+
+

Valid Interval values and description :-

+
+ +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value Description

1

Most recent five (5) minute accumulated set.

2-12

Previous five (5) minute accumulated sets.

13

The accumulated total of sets 1 through 12 that contain the previous hour of +accumulated statistics.

14

The statistical set accumulated since power-up.

15

The statistical set accumulated during the entire lifetime of the device.

+
+
+
+
+

CA Log Page Data Output Explanation

+
+
+ +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field Description

Physical NAND bytes written.

The number of bytes written to NAND. 16 bytes - hi/lo

Physical NAND bytes read

The number of bytes read from NAND. 16 bytes - hi/lo

Bad NAND Block Count

Raw and normalized count of the number of NAND blocks that have been +retired after the drives manufacturing tests (i.e. grown back blocks). +2 bytes normalized, 6 bytes raw count

Uncorrectable Read Error Count

Total count of NAND reads that were not correctable by read retries, all +levels of ECC, or XOR (as applicable). 8 bytes

Soft ECC Error Count

Total count of NAND reads that were not correctable by read retries, or +first-level ECC. 8 bytes

SSD End to End Detection Count

A count of the detected errors by the SSD end to end error correction which +includes DRAM, SRAM, or other storage element ECC/CRC protection mechanism (not +NAND ECC). 4 bytes

SSD End to End Correction Count

A count of the corrected errors by the SSD end to end error correction which +includes DRAM, SRAM, or other storage element ECC/CRC protection mechanism (not +NAND ECC). 4 bytes

System Data % Used

A normalized cumulative count of the number of erase cycles per block since +leaving the factory for the system (FW and metadata) area. Starts at 0 and +increments. 100 indicates that the estimated endurance has been consumed.

User Data Max Erase Count

The maximum erase count across all NAND blocks in the drive. 4 bytes

User Data Min Erase Count

The minimum erase count across all NAND blocks in the drive. 4 bytes

Refresh Count

A count of the number of blocks that have been re-allocated due to +background operations only. 8 bytes

Program Fail Count

Raw and normalized count of total program failures. Normalized count +starts at 100 and shows the percent of remaining allowable failures. +2 bytes normalized, 6 bytes raw count

User Data Erase Fail Count

Raw and normalized count of total erase failures in the user area. +Normalized count starts at 100 and shows the percent of remaining +allowable failures. 2 bytes normalized, 6 bytes raw count

System Area Erase Fail Count

Raw and normalized count of total erase failures in the system area. +Normalized count starts at 100 and shows the percent of remaining +allowable failures. 2 bytes normalized, 6 bytes raw count

Thermal Throttling Status

The current status of thermal throttling (enabled or disabled). +2 bytes

Thermal Throttling Count

A count of the number of thermal throttling events. 2 bytes

PCIe Correctable Error Count

Summation counter of all PCIe correctable errors (Bad TLP, Bad +DLLP, Receiver error, Replay timeouts, Replay rollovers). 8 bytes

+
+
+
+
+

C1 Log Page Data Output Explanation

+
+
+ +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field Description

Host Read Commands

Number of host read commands received during the reporting period.

Host Read Blocks

Number of 512-byte blocks requested during the reporting period.

Average Read Size

Average Read size is calculated using (Host Read Blocks/Host Read Commands).

Host Read Cache Hit Commands

Number of host read commands that serviced entirely from the on-board read +cache during the reporting period. No access to the NAND flash memory was required. +This count is only updated if the entire command was serviced from the cache memory.

Host Read Cache Hit Percentage

Percentage of host read commands satisfied from the cache.

Host Read Cache Hit Blocks

Number of 512-byte blocks of data that have been returned for Host Read Cache Hit +Commands during the reporting period. This count is only updated with the blocks +returned for host read commands that were serviced entirely from cache memory.

Average Read Cache Hit Size

Average size of read commands satisfied from the cache.

Host Read Commands Stalled

Number of host read commands that were stalled due to a lack of resources within +the SSD during the reporting period (NAND flash command queue full, low cache page count, +cache page contention, etc.). Commands are not considered stalled if the only reason for +the delay was waiting for the data to be physically read from the NAND flash. It is normal +to expect this count to equal zero on heavily utilized systems.

Host Read Commands Stalled Percentage

Percentage of read commands that were stalled. If the figure is consistently high, +then consideration should be given to spreading the data across multiple SSDs.

Host Write Commands

Number of host write commands received during the reporting period.

Host Write Blocks

Number of 512-byte blocks written during the reporting period.

Average Write Size

Average Write size calculated using (Host Write Blocks/Host Write Commands).

Host Write Odd Start Commands

Number of host write commands that started on a non-aligned boundary during +the reporting period. The size of the boundary alignment is normally 4K; therefore +this returns the number of commands that started on a non-4K aligned boundary. +The SSD requires slightly more time to process non-aligned write commands than it +does to process aligned write commands.

Host Write Odd Start Commands Percentage

Percentage of host write commands that started on a non-aligned boundary. If this +figure is equal to or near 100%, and the NAND Read Before Write value is also high, +then the user should investigate the possibility of offsetting the file system. For +Microsoft Windows systems, the user can use Diskpart. For Unix-based operating systems, +there is normally a method whereby file system partitions can be placed where required.

Host Write Odd End Commands

Number of host write commands that ended on a non-aligned boundary during the +reporting period. The size of the boundary alignment is normally 4K; therefore this +returns the number of commands that ended on a non-4K aligned boundary.

Host Write Odd End Commands Percentage

Percentage of host write commands that ended on a non-aligned boundary.

Host Write Commands Stalled

Number of host write commands that were stalled due to a lack of resources within the +SSD during the reporting period. The most likely cause is that the write data was being +received faster than it could be saved to the NAND flash memory. If there was a large +volume of read commands being processed simultaneously, then other causes might include +the NAND flash command queue being full, low cache page count, or cache page contention, etc. +It is normal to expect this count to be non-zero on heavily utilized systems.

Host Write Commands Stalled Percentage

Percentage of write commands that were stalled. If the figure is consistently high, then +consideration should be given to spreading the data across multiple SSDs.

NAND Read Commands

Number of read commands issued to the NAND devices during the reporting period. +This figure will normally be much higher than the host read commands figure, as the data +needed to satisfy a single host read command may be spread across several NAND flash devices.

NAND Read Blocks

Number of 512-byte blocks requested from NAND flash devices during the reporting period. +This figure would normally be about the same as the host read blocks figure

Average NAND Read Size

Average size of NAND read commands.

NAND Write Commands

Number of write commands issued to the NAND devices during the reporting period. +There is no real correlation between the number of host write commands issued and the +number of NAND Write Commands.

NAND Write Blocks

Number of 512-byte blocks written to the NAND flash devices during the reporting period. +This figure would normally be about the same as the host write blocks figure.

Average NAND Write Size

Average size of NAND write commands. This figure should never be greater than 128K, as +this is the maximum size write that is ever issued to a NAND device.

NAND Read Before Write

This is the number of read before write operations that were required to process +non-aligned host write commands during the reporting period. See Host Write Odd Start +Commands and Host Write Odd End Commands. NAND Read Before Write operations have +a detrimental effect on the overall performance of the device.

+
+
+
+
+

EXAMPLES

+
+
    +
  • +

    +Has the program issue WDC smart-add-log Vendor Unique Command with default interval (14) : +

    +
    +
    +
    # nvme wdc smart-add-log /dev/nvme0
    +
    +
  • +
+
+
+
+

NVME

+
+

Part of the nvme-user suite.

+
+
+
+

+ + + diff --git a/Documentation/nvme-wdc-vs-drive-info.1 b/Documentation/nvme-wdc-vs-drive-info.1 index 98ef2a8..638188c 100644 --- a/Documentation/nvme-wdc-vs-drive-info.1 +++ b/Documentation/nvme-wdc-vs-drive-info.1 @@ -2,12 +2,12 @@ .\" Title: nvme-wdc-vs-drive-info .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/11/2021 +.\" Date: 04/08/2022 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" -.TH "NVME\-WDC\-VS\-DRIVE" "1" "11/11/2021" "NVMe" "NVMe Manual" +.TH "NVME\-WDC\-VS\-DRIVE" "1" "04/08/2022" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Documentation/nvme-wdc-vs-drive-info.html b/Documentation/nvme-wdc-vs-drive-info.html index 9993637..afb487a 100644 --- a/Documentation/nvme-wdc-vs-drive-info.html +++ b/Documentation/nvme-wdc-vs-drive-info.html @@ -4,7 +4,7 @@ - + nvme-wdc-vs-drive-info(1)