Skip to content

Releases: linux-nvme/libnvme

v1.3

30 Jan 13:10
Compare
Choose a tag to compare

I am glad to announce the v1.3 release of libnvme. As usual it consist out of a few new features and a lot of bug fixes all over the place. Thanks everyone who is contributing to this project (code, bug reports, testing)!

  • Support added for Flexible Data Placement (TP4146)
  • Fabrics: added support for Persistent Discovery Controllers.
  • libnvme-mi added a quirk framework to workaround special behavior of certain devices
  • The python binding behaves more friendly in a threading environment by release the GIL on blocking calls.
  • Replaced the libsystemd dependency with libdbus
  • A lot of small fixes everywhere (leaks, wrong ordering of arguments, ...)
Benjamin Drung (1):
      doc: Fix spelling mistakes found by lintian

Daniel Wagner (27):
      build: Remove usused pkg-config template
      ioctl: Move nvme_get_log_page() to ioctl.h
      ioctl: Use nvme_get_log_page() in helpers
      doc: Generate rst documentation on the fly for readthedocs
      build: Drop meson version test for 0.48
      build: Allow static linking
      build: Always set CONFIG_LIBSYSTEMD variable
      build: Run cross build test under qemu
      build: Do not install libuuid in cross builds
      build: Add s390x cross build target
      build: Drop --werror for fallback builds
      build: Remove unused uuid.wrap
      build: Add D-Bus fallback
      build: Add libdbus to build default build environment
      build: Set projects default to debug and prefix /usr/local
      ioctl: Initialize all members in nvme_fdp_reclaim_unit-handle_status
      util: Add ECONNECTREFUSED to enum nvme_connect_err
      fabrics: Change string for NVMF_DISC_EFLAGS_NONE
      fabrics: Add nqn to connect/disconnect log entry
      tree: Add unique discovery controller flag
      ioctl: Initialize non-trivial designated initializers
      gitignore: Ignore clang build artifacts
      fabrics: Always sanitize discovery log entries
      tree: Add persistent_discovery_ctrl config flag
      fabrics: Avoid buffer overrun in strchomp
      build: Update version to v1.3
      doc: Regenerate all docs for v1.3

Hao Jiang (2):
      mi: Allow zero as a controller ID in nvme_mi_scan_ep
      mi: add timeout functions to .map

Jeremy Kerr (14):
      mi: Issue a NSID-specific Controller List Identify in nsid_ctrl_list()
      mi: Introduce quirks and endpoint probing
      mi: Allow probe suppression via an environment variable
      mi: Add inter-command-delay quirk
      mi: Add model detection via identify in nvme_mi_ep_probe()
      mi: Print applied quirks
      doc: Add documentation for MI probe behaviour
      mi: Add inter-command-delay quirk for Samsung MZUL2512 devices
      mi: Fix status extraction from cdw3 field
      mi: endian fixes
      mi: call nvme_mi_close on endpoint error path
      MI: switch from libsdbus to libdbus
      test: mi: Explicitly zero args for test API invocations
      test: mi: Provide a full request buffer for invalid admin req tests

Jinliang Wang (6):
      mi: add nvme_mi_admin_admin_passthru
      mi: fix rc checking

v1.2

28 Oct 17:24
Compare
Choose a tag to compare

Jeremy Kerr was busy adding new MI commands and fixing bugs in this area. Since we have also unit tests for all these commands it all looks in excellent shape. Thanks a lot Jeremy!

There are also a lot of small bug fixes all over the place from various contributors; Hannes, Hao, Jinliang, Martin Belanger, Martin George, Maurizio, Simon and Tokunori. Thanks for you work too!

One 'feature' which I'd like to mention, is that we dropped the dependency on libuuid. This is one step forward towards being able to build the library complete static. There are still some small fallouts but I am sure the next release will have the necessary fixes.

Anyway, happy packaging!

Daniel Wagner (20):
      workflow: Only publish proper releases to PyPI
      build: Support release candidate version strings
      build: Update release version rules
      build: Update version before regenerating docs
      util: Add LINE_MAX define
      build: Extend release script to support micro version releases
      doc: Install pre-compiled man pages to the correct path
      docs: Relax regex in identifier match in list-man-pages.sh
      json: Enforce correctly formatted JSON config files
      json: Verify JSON config file starts with an array
      fabrics: Use fallthrough statement
      util: Do not expose fallthrough defines
      util: Add simple UUID type
      ioctl: Set log page offset for nvme_get_log_telemetry_host
      mi: Set log page offset for nvme_get_log_telemetry_host
      build: Update min version of meson to 0.48
      fabrics: Duplicate strings when merging configs
      types: Move enum nvme_data_tfr to types
      build: Update version to v1.2
      doc: Regenerate all docs for v1.2

Hannes Reinecke (4):
      libnvme: accessors for dhchap_key variables
      tree: rename controller 'dhchap_key' to 'dhchap_ctrl_key'
      Parse dhchap_host_key on controller level
      Update json config schema for missing dhchap host key

Hao Jiang (3):
      mi: Fix C++ compiler errors
      Add more details for return code of MI admin cmds
      mi: Init ctrl_id within xfer

Jeremy Kerr (23):
      mi: Implement Get & Set Features Admin commands
      mi: Add identify helpers for namespace lists
      mi: Add identify helpers for namespaces
      mi: Add identify helper for nsid-capable Controller List
      mi: Implement Namespace Management command and create/delete helpers
      mi: Implement NS attach command and helpers
      mi: Implement Format NVM command
      mi: Implement Sanitize command
      mi: Add Get Log Page helpers
      example/mi-conf: Add an example for MI transport configuration
      mi: Allow Admin-message sized More Processing Required responses
      examples/mi-mctp: fix warning for possibly uninitialised variable
      github workflows: Add an armhf cross build
      github workflows: Add a powerpc64le cross build
      mi: Add Identify function for secondary controller list
      mi: Introduce a helper for response status, unify values with ioctls
      mi: Move post-1.1 symbols to 1_2 section of libnvme-mi.map
      mi: Add firmware download and commit commands
      mi: fix get_log_page chunked offset check
      mi: Distinguish MI status from NVMe (CDW3) status
      mi: add nvme_mi_status_to_string()
      examples/mi-conf: Initialise sd_bus_error
      examples/mi-conf: account for MCTP header in route MTU

Jinliang Wang (1):
      mi: Add Identify helper for ns-descs and primary-ctrl-caps

Martin Belanger (6):
      examples: Add missing free()
      fabrics: Add new TP8010 definitions
      fabrics: Add nvmf_get_discovery_wargs()
      python: Use nvmf_get_discovery_wargs()
      fabrics: Filter out empty strings in add_argument()
      examples: LID supported must be shifted right by 16

Martin George (3):
      nvme-tree: avoid segfault if auth keys are unavailable
      json-schema: add dhchap_key details to host section
      libnvme.map: add nvme_ctrl_is_persistent()

Maurizio Lombardi (1):
      mi: fix a memory leak in nvme_mi_open_mctp()

Simon A. F. Lund (1):
      Makefile: add 'make uninstall'

Tokunori Ikegami (1):
      util: Add get feature length 2 API to support direction parameter

dependabot[bot] (1):
      build(deps): bump actions/checkout from 2 to 3

v1.1

01 Aug 12:45
Compare
Choose a tag to compare

A few small cleanups since v1.1-rc0. Nothing which prevents a v1.1 release.
So here we go.

A big thank you to every contributor!

Please note, the PyPI upload for v1.1 is actually v1.1-rc0 due to a
miss configuration in the workflows. This is fixed but we can't really
fix this for PyPI (known limitation).

Daniel Wagner (4):
      build: Add support to build against LibreSSL
      ioctl: Honor rae in nvme_get_nsid_log
      build: Drop -nostdinc for LibreSSL header checks
      Regenerate all documentation

Hannes Reinecke (1):
      json: fixup dhchap_ctrl_key definitions

Ismael Luceno (1):
      Fix poll.h includes

Jeremy Kerr (4):
      mi: Add endpoint get/set timeout API
      mi: Add maximum More Processing Required limit API
      mi-mctp: Add timeout support to MCTP transport
      mi: unify MI Get Log Page function with ioctl API

Martin Belanger (1):
      python: add missing ctrl attrs to Python bindings

Martin George (1):
      fabrics: sanitize dump-config output

Steven Seungcheol Lee (1):
      rpmbuild: Enable 'make rpm' to build rpm pkgs #408

Tomas Bzatek (1):
      fabrics: Fix build_options() return values

v1.1-rc0

14 Jul 12:48
Compare
Choose a tag to compare
v1.1-rc0 Pre-release
Pre-release

After the initial 1.0 release, we got a lot of small bug fixes all over the place. Some due to build issues, e.g. "%llx/%lx build warnings on powerpc". Some for missing forward ports from the nvme-cli monolithic branch, e.g. error codes when connect fails. This is also the main reason to release v1.1 relatively quickly. Let's get these fixes out the door.

Though there is also a big change: the new shiny libnvme-mi implementing the NVMe Managament Interface spec. Provided by Jeremy Kerr & team from Code Construct. Thanks!

Noteworthy changes:

  • update/cleanup of documentation
  • various build fixes
  • various fixes reported by coverity
  • clarification on license. It is LGPL-2.1-or-later
  • 64-bit Reference Tags and TP-4068 changes
  • libnvme-mi: Introduce NVMe Managament Interface library

So please give it a go and see if the rc0 is any good.

A big thanks to everyone who contributed to this pre release!

v1.0

08 Apr 16:34
Compare
Choose a tag to compare

This is the first release of libnvme and this means the API is considered to be stable.

Thanks for all contributions!

v1.0 Release Candidate 8

01 Apr 13:06
Compare
Choose a tag to compare
Pre-release

After last -rc7 I though we will have a release by now. But although we fixed a bunch of small issues, the chances are too many too big. Also Hannes and I discussed the filter API which is not flexible enough in our opinion. As this is an API change we rather have sorted this out now and not having regrets not getting it right (or at least better than now). Hence another RC release.

Again on the documentation front there were several contributions to get in better shape. This is an ongoing tasks but it really looks good.

As mentioned we have small bug fixes all over the place, thanks to Tomas, Martin G., Margin B., Brandon and Hannes!

Hannes was also busy fixing the scanning algorithm and Jeff extended support to around get log pages/MI.

Arunpandian J (3):
      fabrics: Streamlining documentation
      ioctl: Align arguments indentation with braces
      test: print test logs for pass case

Boris Glimcher (3):
      CI: fixing dist packaging error
      readme: Add github badges
      ci: add code coverage

Brandon Paupore (2):
      Add lbstm support for create-ns
      Remove nvme_init_id_ns

Daniel Wagner (4):
      fabrics: Avoid out of bounds string chomping
      fabrics: Free old traddr in nvmf_add_ctrl
      ioctl: Remove attribute packed and alignedof for args structs
      doc: Regenerate all documentation

Hannes Reinecke (11):
      meson: build display-tree example
      tree: add debugging messages during scanning
      tree: do not return error when filtering out subsystems
      json: fix endless loop scanning for controllers
      fabrics: add 'nvmf_update_config()'
      libnvme: export 'nvme_lookup_ctrl()'
      tree: move nvme_init_subsystem() into nvme_lookup_subsystem()
      tree: make subsystem name mandatory in nvme_scan_ctrl()
      tree: rework nvme_scan_subsystem()
      Update function prototype documentation
      tree: always allocate config file in nvme_read_config()

Jeff Lien (4):
      types: Add Host Initiated Data Gen Number to telemetry log struct
      types: Update persistent event entry struct added new fields
      types: Add new Identify constant
      types: Add support for get log - MI Command Supported

Martin Belanger (1):
      fabrics: Invoke nvmf_dim() with provided tas argument

Martin George (1):
      fabrics: update log level for write failures

Tomas Bzatek (8):
      tree: nvme_configure_ctrl(): Set errno to zero on success
      tree: Clarify NULL return values from nvme_get_attr()
      fabrics: Add missing break in a switch
      fabrics: Fix leaking ctrl in nvmf_connect_disc_entry()
      tree: Avoid dereferencing nvme_subsystem_t before its check for NULL
      tree: Fix leaking 'name' in nvme_subsystem_lookup_namespace()
      tree: Fix subsystem initialization in nvme_scan_ctrl()
      tree: Handle NULL subsysname in nvme_scan_ctrl()

v1.0 Release Canditate 7

18 Mar 16:55
Compare
Choose a tag to compare
Pre-release

This week, we have Hannes addresing a few glitches during NVMeoF testing. Boris
keeps the good work up on the CI front while I was trying to cleanup a few small
things in the meson configuration (but introduced a bug, fixed though). Overall,
pretty calm on this front.

Boris Glimcher (2):
      dist: add missing BuildRequires to spec file
      rpm: add makefile rule for rpms

Daniel Wagner (4):
      fabrics: Allow to change sysconfdir for hostnqn and hostid file
      tree: Add support for default trsvcid for all controllers
      fabrics: Correctly stringify default hostnqn and hostid paths
      doc: Provide SYSCONFDIR without quotes

Hannes Reinecke (2):
      tree: fixup coredump during nvme discover
      linux: fixup log page offset in nvme_get_log_page()

v1.0 Release Canditate 6

11 Mar 16:14
Compare
Choose a tag to compare
Pre-release

Steven address an issue which I introduced in -rc5 (status code). Hannes got the ANA
status fixed (was a missing commit from v1.7). While Boris was extremly busy getting
our CI build ready for auto deploy to PyPI. So overall a calm week. I think we are
very close to a the initial v1.0 release.

Arunpandian J (1):
      types: Add missing doc field description

Boris Glimcher (4):
      openssl: update to patch-3 to fix installation issue
      test: adding dependency on pynvme
      CI: add test for subproject fallbacks compilation
      CI: add python wheel build in addition to source package

Daniel Wagner (1):
      doc: Regenerate all documentation

Hannes Reinecke (3):
      Document filter functions
      tree: link paths to namespaces in nvme_subsystem_scan_namespace()
      tree: add nvme_ctrl_get_ana_state()

Steven Seungcheol Lee (3):
      types: fix status code type bug (wrong masking)
      types.h: Key Value Command Set Identifier added (NVME_CSI_KV)
      ioctl.h: ns list bug fix (wrong cns value)

v1.0 Release Canditate 5

03 Mar 18:43
Compare
Choose a tag to compare
Pre-release

Things are calming down, which indicates that we are slowly reaching the 1.0 release.

Arunpandian was busy again adding a lot of documentation and fixing a few small issues in utils.
Then there are bunch of build fixes but nothing really dangerous.

Wendy fixed PEL and I updated 'gen-hostnqn' to hand out the correct UUID. Also ported
a missing patch from the monolithic branch which made sure traddr are case compared
ignoring the case.

Arunpandian J (8):
      types: All MI command related structure doc field update
      types: Add doc field for admin opcodes, FIDs, LIDs, Identify commands
      types: Add doc section for enum fields
      types: Add missing doc for ZNS, NVMe OF, NVMe command set
      types: status code type value update as per NVMe specification
      util: Add status code values in generic status to errno conversion
      util: Congregate status code values to return EINVAL
      util: Add status code values in order to return errno

Boris Glimcher (4):
      pyproject.toml instead of setup.py for new packaging
      Add workflow to publish to PyPI and TestPyPI
      Workflow: temporary disable publish to PyPI, starting with TestPyPI
      CI: rename branch main to master

Daniel Wagner (6):
      fabrics: Do not swap bytes for system uuid
      tree: Ignore traddr case in nvme_lookup_ctrl()
      build: Depend on libssl when using the fallback dependency
      linux: Include private.h
      linux: Add log.h back
      doc: Regenerate all documentation

Klaus Jensen (1):
      meson: do not leak internal include directories

Martin Belanger (1):
      Move ccan definitions out of public headers.

Wen Xiong (1):
      ioctl: Set lsp to action in nvme_get_log_persistent_event

v1.0 Release Canditate 4

22 Feb 17:21
Compare
Choose a tag to compare
Pre-release

In this release candidate we have a lot of documentation updates. Arunpandian is busy adding missing documentation. Thanks a lot!

Then there were a few small bug fixes and one missing backport from the monolithic branch. A few API changes in this candidate again, but I hope we slowly have these sorted out.

The biggest change is the inclusion of the TP8010 support which is mostly just new code so it should not regress (famous last words, I know).

Akhilesh RN (1):
      linux: Update size when telemetry controller initiated data is unavailable

Arunpandian J (8):
      types: Added doc description for fields used
      ioctl.h: Add description for fields used
      linux: Streamline documentation
      log: Fix whitespacing in documentation
      tree: Add missing documentation
      types.h: Add missing documentaion for all the log pages
      types.h: doc update for ZNS structures
      types: doc field update for NVM commands, Feature Identifiers

Daniel Wagner (5):
      log: Allow nvme_msg usage with invalid root pointer
      fabrics: add default port number for NVMe/TCP I/O controllers
      doc: Do not precomple HTML doc anymore
      doc: Regenerate all documentation
      build: Use boolean type for docs-build default

Hanumanthu H (1):
      add cdw13 for set_feature_args structure

Jeff Lien (1):
      linux: Change nvme_get_log_page to use nvme_get_log_args parm

Martin Belanger (8):
      python: Add dump_config
      tree: Add host symbolic name
      types: Add DCTYPE to nvme_id_psd
      tree: Add cntrltype and dctype to the controller object
      types: Add Discovery Information Managment types
      util: Add key-value helpers and OS identification tools
      ioctl: Add nvme_dim_send()
      fabrics: Add support to register with a DC

Sami Waheed (1):
      Update ioctl.h