Releases: linux-nvme/nvme-cli
v2.9
There are two plugins ssstc and spdk in this release.  Tokunori was again very busy to update the print code to use the libnvme definitions while Tomas is improving the NBFT code.
There a lot of small fixes and improvements all over the place. Thanks to everyone who contributed to this release in code or bug reports.
Brandon Paupore (4):
      ocp: fix for power-state argument checking
      ocp: support OCP 2.5 Set Telemetry Profile feature
      ocp: support OCP DSSD Async Event Config feature
      ocp: Unify line start spacing as tabs
Caleb Sander Mateos (1):
      nvme-wrap: remove unused nvme_cli_get_log_ana_groups()
Daniel Wagner (24):
      build: bump libnvme wrap
      build: bump libnvme wrap
      nvme: remove unused declaration
      nvme: update include for libnvme
      logging: move logging code to a new file
      logging: track log level globally
      nvme: track verbose level
      logging: output ioctl debugging info
      nvme: do not issue warning when nvme_core module is not loaded
      build: bump libnvme wrap
      nvme: do not scan topology when mmaping registers
      nvme: extend error message for ns scan failures
      build: bump libnvme wrap
      build: bump libnvme wrap
      logging: fix error handling for ioctl passthru wrappers
      fabrics: align identify command payload
      Revert "logging: fix error handling for ioctl passthru wrappers"
      Revert "build(deps): bump AppImageCrafters/build-appimage from 1.3 to 2"
      nvmf-connect: systemd hardening effort
      nvme: identify primary ctrl do not accept nsid
      nvmf-autoconnect: fix string encoding
      build: bump libnvme wrap
      build: Update version to v2.9
      doc: Regenerate all docs for v2.9
Greg Joyce (2):
      sed: Confirm entered password before initialization.
      sed: update SED password when initalizing
Hannes Reinecke (3):
      nvme: use library functions for importing and exporting TLS keys
      build: bump libnvme wrap
      nvme: add new function 'tls_key'
Israel Rukshin (1):
      fabrics: Fix fast_io_fail_tmo option
Leonardo da Cunha (4):
      plugins/ocp: Split ocp_get_uuid_index() into find and get functions.
      plugins/ocp: Adjusted variable type size carrying UUID index to 8 bit.
      plugins/solidigm: Improved Solidigm UUID index detection.
      plugins/solidigm: Additional LID for temperature statistics.
Martin George (6):
      nvme-print: print more details in ns-descs verbose output
      nvme-netapp: add nspath tlv handling
      nvme: print retained key for gen-tls-key's -i option too
      nvme: check-tls-key fails despite having hostnqn file
      fabrics: fix mem leak in nvmf_check_hostid_and_hostnqn()
      nvme: fix mem leak in multiple key related functions
Maurizio Lombardi (1):
      nvme: fix error path if write() fails in get_telemetry_log()
Minsik Jeon (2):
      rpm: Add missing rule and service files
      nvme-print-json: Bugfix status json key of sanitize-log
Nilay Shroff (3):
      nvme: Don't seg fault if given device is not char/block device
      fabrics : allow host to create duplicate connections to target
      nvme-print: Print cntlid number for controller
Sebastian Brzezinka (3):
      nvme-print: check if controller belong to SPDK
      plugins/spdk: plugin to list SPDK subsystems
      nvme-print: expand the maximum field length to prevent misalignment
Tokunori Ikegami (73):
      Revert "nvme-print-json: remove obj_print helper"
      nvme: Add show-regs and get-property commands NSSD print outputs
      nvme-print-stdout: Use persistent event log RCI definitions
      nvme-print: Add PEL RCI port identifier type printf function
      nvme-print: Fix nvme_host_metadata_type_to_string() indentation errors
      nvme-print-stdout: Delete duplicated if condition checking line
      nvme-print-json, nvme-print-stdout: Use CHAR_BIT definition
      nvme-print, common: Fix for whitespace change
      nvme: Delete duplicated semicolon
      nvme: Delete unusual fallthrough for cases have no body
      nvme-print-stdout: Fix linux kernel check patch errors
      nvme-print-stdout: Check sscanf return value
      nvme-print-stdout: Fix channel configuration descriptors pointer
      doc: Fix documentation file mode 100755 to 100644
      doc: Fix get-property and set-property offset and value descriptions
      micron-nvme: Unuse stat() to check if strMainDirName exists
      doc: Add get-feature cdw11 and set-feature cdw12 parameters
      doc: Fix admin and io passthru cdw parameters description
      nvme-print-stdout: Use NVME_PMRCAP register definition to print
      nvme-print-stdout: Use NVME_PMRCTL_EN register definition to print
      nvme-print-stdout: Use NVME_PMRSTS register definitions to print
      nvme-print-stdout: Use NVME_PMREBS register definitions to print
      nvme-print-stdout: Use NVME_PMRSWTP register definitions to print
      nvme-print-stdout: Use NVME_PMRMSC register definitions to print
      nvme-print-stdout: Split line length exceeded 100 columns
      nvme-print-stdout: Fix LBA status DSLBA output as hexadecimal
      nvme-print-stdout: Change hexadecimal value 0x prefix to use %#x
      logging: Split to output ioctl latency by log info level
      nvme-print: Add PEL EHAI port identifier type printf function
      nvme-print-stdout: Use NVME_SET_FEAT_EVENT register definitions
      nvme-print-stdout: Use NVME_GET for FID supported and effects FSP
      nvme-print-stdout: Use NVME_GET for MI commands supported and effects CSP
      nvme-print-stdout: Use NVME_BOOT_PARTITION_INFO field definitions
      nvme: Delete unused nvme root scanned
      plugins/wdc: Whitespace changes
      plugins/wdc: Fix narrow index variable type in for loop to __u32
      nvme: Fix to cleanup free raw_secret memory allocated
      nvme-print-stdout: use FDP configuration attributes definitions
      nvme-print-stdout: use NVME_MAJOR and NVME_MINOR definitions
      nvme-print-stdout: use controller configuration definitions
      nvme-print-stdout: use CSTS definitions
      nvme-print-stdout: use admin queue attributes definitions
      nvme-print: Use EOM optional data present macros changed
      nvme-print: Refactor CMBLOC and PMRSTS registers function
      nvme-print: Change PMRSZU string function as unit string
      nvme: Refactor mmap_registers to add writable parameter
      nvme-print: Add register print functions
      nvme-print-stdout: Add register print functions
      nvme-print-json: Add register print functions
      nvme: Add support for get-reg and set-reg commands
      nvme-print-stdout: Use NVME_CMBLOC definitions
      nvme-print-stdout: Use NVME_CMBSZ definitions
      nvme-print-stdout: Use NVME_BPINFO definitions
      nvme-print-stdout: Use NVME_BPRSEL definitions
      nvme: Add fw-download warning message for FWUG alignment error
      nvme: Change fw-download xfer initialization to set 0
      build: bump libnvme wrap
      nvme-print-stdout: Use NVME_CMBMSC/STS/EBS/SWTP definitions
      nvme-print: Use NVME_UNIT definitions
      nvme-print-stdout: Use NVME_CMIC definitions
      nvme-print-stdout: Add CSTS.ST register stdout print
      nvme-print-json: add obj_add_uint_0nx() function
      nvme-print-json: add obj_d() function
      nvme-print-json: add support set feature event in PEL
      nvme-print-json: add support telemetry log create event in PEL
      nvme-print-json: use NVME_BOOT_PARTITION_INFO field definitions
      nvme-print-json: use NVME_MAJOR and NVME_MINOR definitions
      nvme-print-json, nvme-print-stdout: add tertiary version number
      nvme-print-json: use controller configuration definitions
      nvme-print-stdout: use POWER_OF_TWO macro
      nvme-print-json: use CSTS definitions
      nvme-print-json: use admin queue attributes definitions
      nvme-print-stdout: fix ASQB, ACQB and BMBBA prints
Tomas Bzatek (14):
      build: Switch default meson buildtype to 'debugoptimized'
      nvme-print-json: Fix uninitialized variable
      nvme-print-stdout: Fix uninitialized variable
      plugins/sed: Fix uninitialized variable
      plugins/nbft: Fix uninitialized variables
      nbft: Fix uninitialized variable
      plugins/nbft: Print the new SSNS flags
      plugins/nbft: Implement verbose logging
      nbft: Fix 'verbose' argument type
      nbft: Silence connection failures for unavailable SSNS
      nbft: Pause logging for expected connection failures
      nbft: Include SSNS index in error messages
      nbft: Refactor connection attempt out
      nbft: Fix scandir() error check
Tomasz Zawadzki (1):
      plugins/spdk: plugin to list SPDK controllers
Warner Losh (2):
      sed_opal: Only build when we really have sed_opal headers
      meson.build: Fix spelling of sed-opal.h filename
Wilfred Mallawa (1):
      nvme: fix security buffer allocation size
dependabot[bot] (2):
      build(deps): bump sand4rt/ftp-deployer from 1.7 to 1.8
      build(deps): bump AppImageCrafters/build-appimage from 1.3 to 2
jeff-lien-wdc (4):
      wdc: Add support for the get-drive-status command to SN861
      ocp: Fix timestamp displayed by fw-activate-history command
      wdc:  Fix timestamp displayed by vs-firmware-activate-history command
      wdc: Review changes and build fixes
jinhua.huang (5):
      plugins/memblaze: code-format on leading indent and align
      plugins/memblaze: code refactor on using cleanup_nvme_dev
      plugins/memblaze: code refactor on applying __packed on more structs
      plugins/memblaze: fix code mis-type error
      plugins/memblaze: add performance stats
kobyou (1):
      plugins/ssstc: add a new plugin for SSSTC driver
v2.8
The sedcli project for doing SED Opal operation has been archived and the only maintained fork is a private project. Thus Greg has implemented some basic commands as a new plugin.
The rest is mostly bug fixes. So nothing to exciting but still worth to get released.
Thanks to all: Anant Mashiana, Bean Li, Caleb Sander, Felix Yan, Greg Joyce, Hannes Reinecke, Keith Busch, Leonardo da Cunha, Martin George, Maurizio Lombardi, Minsik Jeon, Stuart Hayes, jeff-lien-wdc
Anant Mashiana (1):
      completions: added Solidigm plugin to autocomplete scripts
Bean Li (1):
      nvme: do not include meta data for PRACT=1 and MD=8 (version 2)
Caleb Sander (1):
      nvme: Remove unused cfg argument from NVME_ARGS() macro
Daniel Wagner (6):
      nbft: fixup include for libnvme
      nbft: do not issue an error if ACPI tables are missing
      nvme-print-json: append array object in json_support_log
      build: bump libnvme version
      build: Update version to v2.8
      doc: Regenerate all docs for v2.8
Felix Yan (2):
      doc: Fix short option name for cfg-file
      doc: Fix config-schema.json's URL
Greg Joyce (1):
      sed: Add plugin for basic SED Opal operations
Hannes Reinecke (3):
      Merge pull request #2165 from martin-gpy/warnings_verbose_level
      build: Update libnvme wrap
      nvme-fabrics: enable option 'concat'
Keith Busch (2):
      nvme: fix directive receive identify offsets
      don't include newlines in already wrapped text
Leonardo da Cunha (1):
      plugins/solidigm: Compressing vs-internal-log log files into zip file.
Martin George (3):
      fabrics: move hostid/hostnqn warnings to verbose level
      nvme: print inserted tls key for check-tls-key
      nvme-print: fix typo in list verbose output
Maurizio Lombardi (1):
      create-ns: align the namespaces to 1Mib boundaries when using SI suffixes
Minsik Jeon (1):
      nvme: use correct telemetry log size
Stuart Hayes (1):
      nbft: fix tcp/dhcp address fallback retry
dependabot[bot] (1):
      build(deps): bump codecov/codecov-action from 3 to 4
jeff-lien-wdc (2):
      plugins/wdc: Plugin fixes and updates
      plugins/wdc: Add Debug Log Collection Support
v2.7.1
v2.7
The highlights of this release are
- stdout and json output refactoring, cleanups and improvements (Tokunori Ikegami)
 - all commands teached to understand 
--verboseand--output(Tokunori Ikegami) - dropped dependency on libhugetblfs (Daniel Wagner)
 - build instruction and fixes for embedded systems (Tokunori Ikegami, Daniel Wagner)
 - TP8018 support added (Hannes Reinecke)
 
Tokunori Ikegami was very busy extending the json output format for various commands. The aim is to support the different output formats by all commands. Thus there are small non backward compatible changes for a hand full commands which used either -o or -v for something different. Hopefully this doesn't break too many setups.
The were many bug fixes and small improvements all over the place. Again a big thanks to anyone contributing to this project with code, bug reports etc: Andrew Meir, Arthur Shau, Arunpandian J, Brandon Paupore, Caleb Sander, Daniel Wagner, Hannes Reinecke, Joy Gu, Martin George, Martin Wilck, Steven Seungcheol Lee, Tokunori Ikegami, Tomas Bzatek, Vigneshwaran Saravanan, Yi Zhang, da Cunha, Leonardo, Chris Patterson, jeff-lien-wdc, jinhua.huang, leonardo.da.cunha and shankara
v2.6
ALPSS 2023 Release
v2.5
A couple of noteworthy features made it to this release:
- Support for the NVMe-oF boot specification v1.0 has been added by Timberland SIG.
 - Ignoring fabric connect attempts if the execution context doesn't match.
This feature allows to make different users of nvme-cli to coexist, e.g. nvme-cli, nvme-stas or blktests without trying
to manage the same resource 
Tokunori Ikegami was very busy and provided a lot of cleanup patches including code style fixes which should make the code base a bit more uniform.
In the meantime I was busy refactoring the printing code. The aim here is to prepare the code base for the upcoming NVMe v2.1 release which hopefully will bring an official JSON description for all the definitions etc. From this we should be able to create code include printing code. But that's future work.
plugins/solidigm and plugins/ocp learned a few new subcommands
Also this release brings a lot of fixes, too many to list them all here.
A big thanks goes to Arthur Shau, Arunpandian J, Caleb Sander, Dmitry V. Levin, John Meneghini, Martin George, Martin Wilck, Mateusz Kozlowski, Maurizio Lombardi, Sagi Grimberg, Stellios Leventis, Steven Seungcheol Lee, Stuart Hayes, Tokunori Ikegami, Umer Saleem, Vigneshwaran Saravanan, Wei Hou, da Cunha, Leonardo, dependabot[bot], hsdhillo, innogritkenny, jaya.ganthan, kdedow, leonardo.da.cunha, yjin
Arthur Shau (6):
      plugins/ocp: Reorganize OCP plugin source code
      plugins/ocp: Fix typos in Latency Monitor Log
      plugins/ocp: Add missing fields in Latency Monitor Log
      plugins/ocp: Fix endianness in Latency Monitor Log output
      plugins/ocp: Add OCP set latency monitor feature command
      plugins/ocp: Add telemetry-log command to OCP plugin
Arunpandian J (4):
      tests: Add tests for controller reset
      plugins/ocp: Add Device capability(LID: 0xC4) log page
      completions: Add bash completion for OCP Device capability(LID: 0xC4) log page
      Documentation: Add document for OCP Device capability(LID: 0xC4) log page
Caleb Sander (1):
      nvmf-autoconnect: restart service to avoid dropping AEN
Daniel Wagner (51):
      build: Add external AppImage upload workflow
      build: Use sftp transport for AppImage deploy step
      build: Deploy AppImage only for push on master
      build: Fetch all references before using git describe
      nvme-print: Use enum nvme_print_flags for nvme_show_id_ctrl
      build: Bump libnvme wrap
      build: Disable fallback on default
      build: Make json-c dependency lookup not fail
      build: Extend summary section
      build: Update wrap mode defaults
      doc: Update REAMDE
      build: Fix appimage configuration
      build: Extend static linked binary build test
      build: Install missing s390 library
      build: Do not use json-c fallback for muon minimal build
      nvme-print-json: Update function sigs for !json-c builds
      nbft: Make json-c output depending on config flag
      nbft: Add stdlib.h include
      nbft: Add include util/types.h
      nvme-print: Double function definition
      nvme-print: Export generic to string functions
      nvme-print: Unify flag passing into functions
      nvme-print: Split add_bitmap implementation
      fabrics: Move printing functions to the print files
      print: Introduce print ops structure
      nvme-print-json: Refactor json print code to use nvme_print_ops
      nvme-print-stdout: Refactor stdout print code to use print_ops
      nvme-print-binary: Refactor binary print code to use print_ops
      nvme: Use correct metadata buffer size
      nvme: Use correct data buffer size
      fabrics: Revert 'fabrics: prevent 'nvme connect' to well-known discovery NQN'
      fabrics: Do not print device on connect per default
      plugins/nbft: Use common code to parse print flags
      build: Bump libnvme wrap
      build: Reformat build_opionts.txt
      fabrics: Add support for volatile configuration
      nvmf-autoconnect: Annotate the context to autoconnect
      doc: Add information on --context
      docs: Update file modes
      scripts: Move helper scripts to a central place
      scripts: Execute the scripts from toplevel directory
      scripts: Update update-docs.sh scripts
      scripts: Make release script project neutral
      build: Bump libnvme wrap
      build: Use containers with matrix build
      nvme-print: Fix typo in callback definition
      nvme-print: Move num argument parsing into callbacks
      nvme-print: Remove left overs from refactoring
      build: Bump libnvme wrap
      build: Update version to v2.5
      doc: Regenerate all docs for v2.5
Dmitry V. Levin (1):
      udev: fix warning reported by udevadm verify
John Meneghini (1):
      nbft: make lookup_ctrl function public
Martin George (2):
      fabrics: fix fc config JSON file handling
      fabrics: prevent 'nvme connect' to well-known discovery NQN
Martin Wilck (1):
      fabrics: fix conditions in nvmf-autoconnect.service
Mateusz Kozlowski (1):
      nvme: Fix nvme format block-size option handling
Maurizio Lombardi (2):
      nvme: fix rnlpt to_string() values.
      Revert "nvme: Masks SSTAT in sanize-log output"
Sagi Grimberg (1):
      nvme-print: fix wrong list-subsys output when ns are attached to different ctrls
Stellios Leventis (1):
      plugins/wdc: Extend SN530 support.
Steven Seungcheol Lee (10):
      nvme-print: Add VWCNP on NSFEAT of id-ns
      nvme-print: Add new fields print on id directive
      nvme: Add dtype, dspec on write-zeroes, write-uncor
      nvme: Add ns-mgmt host software specified fields
      nvme: Add zns specfic field for create ns
      build: Bump libnvme.wrap to align create ns args
      fdp: set-events feature is saveable
      nvme: fix io_mgmt args parse error
      build: Bump libnvme wrap to fix io_mgmt apis
      nvme-wrap: do_admin_args_op should not clear args timeout
Stuart Hayes (2):
      nbft: added NBFT v1.0 table support
      nbft: add the nbft show plugin
Tokunori Ikegami (92):
      nvme: Add support for NVMe-MI receive command
      nvme: Fix passthru command function indentation errors
      nvme: Use stdout for passthru and submit_io commands success messages
      nvme: Add support for NVMe-MI send command
      doc: Add eol-plp-failure-mode command documentation
      doc: Add clear-pcie-correctable-error-counters command documentation
      doc: Add nvme-mi-recv command documentation
      doc: Add nvme-mi-send command documentation
      doc: Documentations maintenance changes
      nvme: Fix format command to skip to reread NSID all block device
      nvme-printf: Add show error function for nvme list command json output
      util: Check output format json for json error message output
      nvme: Use nvme show error API to outptu stderr messages for json format
      nvme: Check validate output format err value instead of flags
      nvme: Fix indentation errors around nvme show error API
      fabrics: Fix linux kernel check patch errors and warnings
      fabrics: Return errno value as negative
      nvme-print-json: Use vasprintf instead of vsnprintf to allocate string
      nvme: Add nvme_show_perror to use instead of perror for json output
      nvme: Fix linux kernel check patch errors
      nvme: Fix linux kernel check patch warnings
      util: Delete unused argconfig help function
      util: Delete unused argconfig file types
      util: Delete unused argconfig subopts type
      util: Add argconfig parse value function
      nvme: Change sanitize command action option to use argconfig parse value
      util: Delete argconfig value length to calcurate instead
      util: Split to set argconfig option value
      util: Delete argconfig value type to add option value as va lists instead
      util: Delete unnecessary argconfig definitions OPT_VAL and CFG_VAL
      nvme: Fix get-feature command sel parameter check to allow value 8
      completions: Add json command option
      completions: Fix nvm-id-ns-lba-format command zsh definition
      completions: bash: Add id-domain command
      completions: bash: Delete unsupported id-iocs command options
      nvme: Set effects-log command csi option help message string
      Fix incorrect article 'an' as 'a' to use for descriptions and message
      completions: Add missing zsh commands descriptions
      doc: Correct nvme-show-hostnqn command NAME description
      completions: Add bash option values handling for sanitize command action
      completions: Add ocp commands bash completion
      completions: Add ocp commands zsh completion
      completions: Add ocp sub commands zsh completion
      completions: Add zsh option values handling for sanitize command action
      util: Fix suffix_si_parse to parse no decimal point but suffix value correctly
      nvme: Fix io-passthru command read metadata output
      nvme: Split passthru commands read output
      fabrics: Change NVMF_OPTS as NVMF_ARGS to fix linux kernel check patch error
      fabrics: Fix NVMF_ARGS macro indentation error
      nvme-print: Fix nvme_show_error() to call va_end() for json output format
      nvme-print-json: Add json output result function
      nvme-print: Add nvme show result function
      ocp: Add eol plp failure mode json outputs
      plugins/ocp: Fix ocp-nvme.c linux kernel check patch errors
      plugins/ocp: Fix ocp-nvme.c linux kernel check patch warnings
      plugins/ocp: Fix remaining files linux kernel check patch warnings
      plugin: Fix files linux kernel check patch errors and warnings
      plugins/toshiba: Fix linux kernel check patch errors and warnings
      util: Fix argconfig.c linux kernel check patch error and warnings
      util: Fix base64.c linux kernel check...
v2.4
The nvme-cli v2.4 brings a lot of small updates all overall the place. There are the usual bug fixes and a few small new features. The most notable is the initial support for TLS over TCP provided by Hannes. This stuff is really fresh and the corresponding kernel patches haven't made it into the upstream kernel. It could be that it changes but Hannes is pretty sure this works and we don't need to change it :)
Because there are so many contributions I keep it short. A big thank you goes to Caleb Sander, Dedow, Karl, Hannes Reinecke, Jeffrey Lien, Laiwenhu, Martin Belanger, Martin George, Martin Joerg, Minwoo Im, Sagi Grimberg, Stefan Hajnoczi, Steven Seungcheol Lee, Tokunori Ikegami, Vishal Pankaj Chandratreya, da Cunha, Leonardo, duanhaoqiang, innogritkenny, kdedow, sunxing, 丁剑
Caleb Sander (1):
      nvme-print: Fix printing of u32 values
Daniel Wagner (49):
      nvme: Support effects-log for fabrics ctrl
      Merge pull request #1794 from igaw/effects-log
      build: Enable Azure Pipeline again
      Merge pull request #1795 from igaw/add-blkttests
      build: Also trigger Azure Pipeline for PR
      util: Add crc32 implementation
      build: Use prefixdir directly on sysconfdir
      Merge pull request #1799 from igaw/fix-muon-build
      Merge pull request #1798 from igaw/drop-zlib
      util: Reimplement suffix_si_parse
      util: Update suffix_binary_parse API
      Merge pull request #1790 from igaw/reimplement-suffix_si_parse
      Merge pull request #1789 from ikegami-t/get-feature-status
      util: Numbers without any suffix are also valid
      Merge pull request #1802 from igaw/fix-suffix_binary_parse-regression
      build: Update library paths for AppImage
      Merge pull request #1809 from igaw/fix-appimage
      Merge pull request #1805 from martin-belanger/fix-doc
      fabrics: No need to sanitize trsvcid and traddr
      plugins/solidigm: Use struct json_object instead of typedef
      plugins/solidigm: Use json_create_object wrapper
      nvme-print: Move JSON printing function into a new file
      nvme: Make json-c optional again
      Merge pull request #1800 from igaw/make-json-c-optional
      Merge pull request #1814 from jeffreyalien/latency-log
      Merge pull request #1817 from sc108-lee/completion
      Merge pull request #1819 from innogritkenny/master
      doc: --storage-tag-check doesn't take any arguments
      build: Bump libnvme wrap
      nvme: Use fprintf for error message logging in get_log()
      nvme: Use chunked read in get_log()
      build: Update CI build targets
      build: Add s390x cross build and enable cross tests
      build: Add muon build target
      nvme: Fix type in error message
      nvme: Factor out parse telemetry log da element
      nvme: Refactor get telemetry log page helper
      nvme: Add rae argument to telemetry-log command
      fabrics: Fix ordering for auto connect services
      build: Initialize sysconfdir
      build: Upload all log files on failure
      build: Add action build back
      plugins/solidigm: Do not overwrite previously initialized variable
      nvme: Use correct ABORT type for self abort test
      plugins/inspur: Cast vendor specific smart log value
      build: Update libnvme wrap
      build: Bump libnvme to v1.4
      build: Update version to v2.4
      doc: Regenerate all docs for v2.4
Dedow, Karl (1):
      plugins/ocp: Fix whitespace and style issues
Hannes Reinecke (4):
      nvme-gen-tls-key: add options to derive a TLS key
      nvme-check-tls-key: add options to derive a 'retained' TLS key
      nvme-connect: enable option '--tls'
      nvme-(discover,connect,connect-all): enable options '--keyring' and '--tls_key'
Jeffrey Lien (1):
      plugins/wdc: Fix data Formatting for Latency Monitor Log Page
Laiwenhu (1):
      nvme: validate storage tag size correctly
Martin Belanger (3):
      docs: Fixed typos and missing options
      fabrics: Ensure host-traddr/iface consistency for "connect-all"
      build: Print option summary
Martin George (4):
      nvme-print: fix segfault in supported-log-pages json output
      nvme-doc: update man page for supported-log-pages
      nvme: fix block count and data size logic
      nvme-print: sanitize supported-log-pages output
Martin Joerg (1):
      nvme: Fix invalid memory access in show_registers
Minwoo Im (3):
      build: Bump up libnvme wrap
      print: print csi and opcode in error log (TP4113)
      nvme-print: Unify number base format for nsid
Sagi Grimberg (1):
      nvme-print: print the nvme generic name in json output as well
Stefan Hajnoczi (1):
      nvme: fix /dev/spkd/ typo
Steven Seungcheol Lee (4):
      completion: fix typo, add missing args
      nvme.c: Check Firmware Update Granularity in fwdl
      fdp: Fix wrong Reclaim Unit Handle Status size
      nvme: Fix parameter limit range
Tokunori Ikegami (17):
      nvme: Filter out status flags for get feature command
      unit: Add test-argconfig-parse
      util: Revert JSON output to plain numbers
      nvme: Continue get feature on invalid NS error to get multiple feature ids
      nvme: Align get feature data buffer length by page size to allocate
      util: Add argconfig seen flag parameter to check if feature NSID set
      plugins/ocp: Add support for EOL/PLP failure mode feature
      plugins/ocp: Add support for clear PCIe correctable error counters feature
      plugins/ocp: Refactor to clear feature identifier C1h and C3h
      plugins/ocp: Add set feature EOL/PLP failure mode no-uuid option
      util: Introduce argconfig simple helper to check seen condition
      nvme: Check fw-commit command support MUD
      nvme-print: Fix nvme show status function indentation errors
      util: Use argconfig commandline options pointer directly
      nvme: Fix format command function indentation errors
      util: Cleanup argconfig parse function
      nvme-print-json: Add json output status function
Vishal Pankaj Chandratreya (2):
      Changed 'Kelvin' to 'kelvin', as recommended by the BIPM.
      Made temperature readouts in line with the SI.
da Cunha, Leonardo (2):
      plugins/ocp: Use network byte order for OCP UUID value
      plugins/solidigm: Add uuid index resolution
duanhaoqiang (1):
      nvme: Enforce length to a multiple of 4 in get_log_page
innogritkenny (1):
      plugins/innogrit: modify command opcode for eventlog and cdump
kdedow (4):
      plugins/ocp: SMART cloud log bug fixes.
      plugins/ocp: OCP 2.0 field updates for SMART cloud log
      plugins/ocp: Move SMART cloud log methods to separate file for reusability
      plugins/ocp: Add SMART cloud log to solidigm plugin
sunxing (1):
      nvme-print: Use attrs_info as key for Zone Attributes Information
丁剑 (1):
      log: high latency timestamp issue
v2.3
I am glad to announce the v2.3 release of nvme-cli. As usual this release bring a few new features and a lot of bug fixes everywhere. Thank everyone who has contributed to this release (code, bug reports, testing, ...)!
- Added support for Flexible Data Placement (TP4146)
 - Added Persistent Discovery Controller support (TP8013/TP8014)
 - nvme-mi: support for firmware downloads
 - nvme device-self-test learned the 
--waitcommand line argument which makes nvme-cli to wait (incl. progress bar) in foreground until the test has finished. - A lot of bug fixes all over the place
 
Caleb Sander (1):
      json_discovery_log: avoid buffer overrun
Daniel Wagner (34):
      build: Add Azure Pipeline configuration
      build: Disable Azure Pipeline
      build: Do not pass -werror to openssl when using fallbacks
      doc: Fix build for inspur plugin
      unit: Move unit tests to a new directory
      build: Run unit tests for native builds
      nvme: Output zero padded hostid in resv-report command
      build: Renaming and cleanups of workflow files
      build: Add AppImage build workflows
      build: Set projects default to debug and prefix /usr/local
      fabrics: Do not overwrite errno with return code
      fabrics: Use endian helper when reading discovery log entries
      fabrics: Add support for binary output
      nvme: Ingore LOG_NOTICE level
      fabrics: Update error message when connect attemp fails
      fabrics: Set discovery KATO also for current disc crtl
      fabrics: Do not attempt to reconnect to already connected ctrls
      build: Update libnvme wrap
      fabrics: Prefer unique disc ctrl over well known
      fabrics: Handle DUPRETINFO and EPCSD when doing discovery
      fabrics: Do not disconnect unique disc ctrl on default
      gitignore: Ignore clang build artifacts
      build: Upload latest AppImage
      build: The release workflow can't tag
      build: Update libnvme wrap
      fabrics: Make PDC behavior configurable
      fabrics: Fix discovery controller filter function
      fabrics: Fix already connected test
      fabrics: Pass discovery ctrl to __discover()
      build: Update libnvme version dependency on release
      build: Bump libnvme wrap
      build: Bump libnvme.wrap release v1.3
      build: Update version to v2.3
      doc: Regenerate all docs for v2.3
Jeremy Kerr (5):
      nvme: fw-download: move individual transfers to a separate function
      nvme: fw-download: Add (optional) transfer progress output
      nvme: fw-download: print failed offset
      nvme: fw-download: Add retry mechanism
      nvme: fw-download: handle overlapping range errors
Jinliang Wang (5):
      nvme-mi: support ns-descs, primary-ctrl-caps, list-secondary
      libnvme.wrap: Bump to 70aca88
      nvme: Add wrapper for admin_passthru command
      nvme: Support telemetry-log over nvme-mi
      nvme: support security-recv and security-send over nvme-mi
Keith Busch (1):
      nvme: Add wait for device self test
Klaus Jensen (9):
      build: bump libnvme to f83b2c4c4738
      nvme: add io management send/recv commands
      nvme: add flexible data placement management commands
      nvme-print: print unused reclaim unit handles
      nvme-print: prettify the fdp event printing
      plugins/fdp: use the right command-line switch
      nvme-print: print 64 bit values with json add_value_uint64
      build: bump libnvme
      nvme-print: pretty print fdp event timestamp
Maurizio Lombardi (3):
      plugins/sfx: fix an error message in scaleflux plugin
      nvme: fix unreacheable code in verify_cmd()
      plugins/micron: fix freed memory dereference.
Qiang Wei (1):
      Bash completion: move global declare into function
Ronan Pigott (1):
      zsh: move SPDX identifier
Tokunori Ikegami (21):
      nvme: Change to use pci resource bar at first by show-regs command
      doc: Fix sanitize command examples as character device
      doc: Fix sanitize command examples as character device
      nvme: Correct show-topology command help spelling error
      nvme: Combine duplicated help message string variables
      nvme-print: Serialize uint32_t types correctly
      nvme: Improve sanitize action help
      nvme: sanitize: Allow sanitize action string values
      doc: Update nvme sanitize command action description
      nvme: create-ns: Add nsze-si and ncap-si arguments to set in standard SI units
      nvme-print: Display smart log data units read and written SI value
      util: Add file stream parameter to print word wrapped
      MAINT: util: Delete duplicated OPT_LONG definition
      util: Parse suffix binary value as unsinged long long correctly
      doc: Add storage-tag option description for compare, read and write commands
      nvme: Use self-test code definition values instead hard-coded values
      nvme: Ignore device self-test wait option for abort operation
      nvme: Add device self-test SIGINT signal handling for wait option to abort
      nvme: Move static variable definitions to top of file
      doc: Update device-self-test command documentation
      nvme: Use abort self-test code definition value instead hard-code value
dependabot[bot] (1):
      build(deps): bump actions/upload-artifact from 2 to 3
hpanosy (1):
      solidigm, ocp: Added OCP-Clear-FW-Update-History support, and exposed feature on ocp and solidigm plug-ins.
nick black (2):
      build: require meson 0.50.0+
      nvme: call nvme_get_smart_log() with false
wangmengmeng (1):
      plugins/inspur: Add Inspur plugin extension.
黄锦华 (3):
      plugin/memblaze: update the correct value for smart-log-add
      plugin/memblaze: remove some useless code for smart-log-add
      plugin/memblaze: use kernel base types instead own defined types
v2.2.1
This is just a a bug fix release for v2.2.
- forgot to remove 'uuid.h' include which breaks builds
 - added a missing headers for time functions
 - updated libnvme dependency to v1.2
 
Daniel Wagner (3):
      build: Update libnvme version dependency to 1.2
      build: Update version to v2.2.1
      doc: Regenerate all docs for v2.2.1
ajs124 (3):
      build: Remove unusned uuid.h include
      plugins/innogrit: Include timer.h
      plugins/ocp: Include timer.h
v2.2
Also for the nvme-cli project, Jeremy Kerr was very busy getting MI sorted out. Many of the NVMe commands can now be submitted over the MI transport. Thanks a lot!
There was a bit of activity for the fabrics commands, e.g. there is the new nvme topology command or the feature to re-read the discovery page when a discovery controller reconnects.
Also the vendor plugins have gotten some updates for this release.
And as usual there are many bug fixes along since v2.1. Noteworthy here is the fix for printing the uint128 data fields correctly. Thanks Steven to pick this task up.
Again thanks a lot for all those who contributed to this project: Debabrata, Francis, Jeremy, Jinliang, Martin Belanger, Martin George, Maurizio, Pierre, Sagi, Simon, Steven, Tokunori, Tomas, Leonardo, innogritkenny.
For packagers: we dropped the libuuid dependency.
Daniel Wagner (38):
      json: Support uint64 types serialization for older json-c versions
      nvme: Masks SSTAT in sanize-log output
      doc: Add 'how to contribute' section
      docs: Update formatting for sanact list
      nvme-print: Add missing values in id-ctrl for JSON output
      util: Move common type conversion helpers into util section
      doc: Update examples in nvme-list-subsys.txt
      nvme-print: Use uint128 JSON function for media_units_written
      plugins: Use PRIu64 format specifier for 64bit types
      plugins/wdc: Add type case for feature id
      plugins/micron-nvme: Use correct print format specifier for sizeof arguments
      nvme: Use correct print format specifier for sizeof arguments
      build: Update json-c.wrap
      fabrics: nvme config --modify depends on -n and -t argument
      fabrics: Honor JSON config file in connect-all command
      fabrics: Trigger auto connect if config.json exists
      tests: Update license to GPL-2.0-or-later
      build: Use meson.current_build_dir() for tests
      build: Update zlib wrap
      build: Update json-c.wrap
      build: Update libnvme wrap
      libvnme-wrap: Rename file
      libnvme-wrap: Avoid fallback as variable name
      nvme: Add show-topology command
      doc: Add nvme show-topology documnetation
      completions: Add show-topology tab completion
      build: Update libnvme wrap
      build: Drop dependency on libuuid
      util/json.h: Add json_object_get_uint64 fallback implementation
      solidigm: Fix printf format for size_t variable
      build: Update libnvme wrap
      build: Update min version of meson to 0.48
      build: Remove unused uuid.wrap file
      build: Fix endian check for cross build
      REAMDE: Drop reference on uuid
      build: Update libnvme wrap
      build: Update version to v2.2
      doc: Regenerate all docs for v2.2
Debabrata Bardhan (2):
      plugins/seagate: Add support for OCP
      doc: Add and update man pages for seagate plugin
Francis Pravin Antony Michael Raj (1):
      nvme: Add helper function to parse 16-bit comma separated list
Jeff Lien (3):
      wdc:  OCP Log page updates and fixes
      print: Add Controller Ready Timeout Exceeded HW error code
      plugins/wdc: Add support for SN660 drive
Jeremy Kerr (34):
      tree: Move global device info to a single struct
      tree: Combine NVMe file descriptor into struct nvme_dev
      plugins/wdc: pass a struct nvme_dev around rather than a fd
      plugins/toshiba: pass struct nvme_dev rather than fd + name
      plugins/ocp: pass struct nvme_dev to internal functions
      plugins/wdc: pass struct nvme_dev rather than using global nvme_dev
      plugins/ytmc: pass struct nvme_dev rather than fd + name
      tree: Change nvme_dev from global to static
      nvme: Use local struct nvme_dev for show_registers & map_registers
      nvme: Make static nvme_dev private to open_dev(), use locals elsewhere
      nvme: Remove static nvme_dev, allocate on open instead
      tree: Add dev_fd() helper
      nvme: Introduce a union in struct nvme_dev for different transport types
      tree: Add NVMe-MI support
      nvme: Introduce nvme_cli_ wrappers, wrap identify and identify_ctrl
      subprojects/libnvme: update for MI admin command coverage
      nvme: Add nvme_cmd wrapper for get_features
      nvme: Add wrappers for basic NS identify
      nvme: Add wrappers for NS management functions
      nvme: Add wrappers for Identify controller lists
      nvme: Add wrappers for NS attach/detach
      nvme: Add wrapper for Format NVM
      nvme: Add wrapper for Sanitize NVM
      nvme: Add wrappers for Get Log page helpers
      tree: fail on non-negative return values from parse_and_open
      utils: Fix uint128_t usage
      util: Fix le128_to_cpu on big-endian
      nvme, plugins: fix __u64 -> unsigned long long assumptions
      github workflows: add armhf and ppc64le cross compile checks
      libnvme.wrap: Bump to 677075a1
      nvme: Add wrappers for firmware commands
      nvme-print: decode status types
      nvme: use helpers for checking status types
      nvme-print: decode MI status values
Jinliang Wang (1):
      util: Fix le128_to_cpu on little-endian
Martin Belanger (1):
      udev: Add HOST_IFACE to udev rule
Martin George (2):
      solidgm: fix initialization warning
      fabrics: fix 'persistent' handling during connect-all with JSON file
Maurizio Lombardi (1):
      nvme: check if cfg.metadata is NULL before passing it to strlen()
Pierre Labat (1):
      nvme-print: Print fguid as a UUID
Sagi Grimberg (1):
      fabrics: re-read the discovery log page when a discovery controller reconnected
Simon A. F. Lund (1):
      Makefile: add 'make uninstall'
Steven Seungcheol Lee (9):
      nvme-print: fix wrong json key
      zns.c: report zones should be started after retrieved zone
      util/types: Add 128 bit conversion helpers
      util/json: Add 128 bit JSON helpers
      nvme-print: Output 128bit values as uint128 type instead of double
      plugins/ocp: Output 128bit values as uint128 type instead of double
      plugins/wdc: Output 128bit values as uint128 type instead of double
      plugins/virtium: Output 128bit values as uint128 type instead of double
      Makefile: Add 'make debug' for debug build
Tokunori Ikegami (1):
      nvme: Fix set feature command to get feature identifier 0Dh length as zero
Tomas Bzatek (1):
      nvme-print: Handle NULL hostid in JSON output
da Cunha, Leonardo (1):
      Added parsing for Solidigm telemetry observable data.
dependabot[bot] (1):
      build(deps): bump actions/checkout from 2 to 3
innogritkenny (2):
      plugins/innogrit: add smart items for smart-log-add
      add item ddr_ecc_err_cnt in smart-log-add
leonardo.da.cunha (3):
      utils/json: Add json_object_new_uint64 for json-c < 0.14
      solidigm: Added parsing for telemetry customer screenable data
      solidigm: Updated Telemetry parsing code to MIT license.