Releases: linux-nvme/libnvme
v1.11.1
The TLS changes in v1.11 introduce a bug. When TLS is not used, libnvme would still tried to operate on the psk keystore (CONFIG_NVME_TLS). 'nvme connect' operation would fail with Failed to set keyring
in this case (see linux-nvme/nvme-cli#2573 for more details).
Headsup for packager: if your kernel doesn't enable CONFIG_NVME_TCP_TLS and CONFIG_NVME_HOST_AUTH, you should update to libnvme v1.11.1.
v1.11
Boooh Hallowien release!
ChatGPT says:
The libnvme v1.11 release includes several enhancements and bug fixes. Key improvements involve updates to support new NVMe specification features, including enhanced compatibility and configuration options. This release also refines the command-line tool and improves documentation for better usability.
And that is pretty much what was happening. There are a bunch of new types/fields (thanks everyone contributing to this!). Various small fixes here and there.
I spend some time to figure out the TLS key handling and added support for the upcoming configred_tls sysfs attribute (Linux v6.12).
In short there shouldn't be any big surprises in this release.
Ankit Soni (2):
types: added new fields in nvme_nvme_id_ns
libnvme: add lockdown log page support(LID : 0x14)
Arbaz Khan (1):
type: Added enums for ANSAN and RGCNS bit of OAES field
Chuck Horkin (1):
prefix: Use Request or Response Length in DLEN and DOFF for MI
Daniel Wagner (25):
build: add install step to doc CI build
build: use linux-nvme/ci-containers
linux: reorder variable declarations
linux: use ssize_t as return type for nvme_identity_len
linux: only return the description of a key
test: make config-diff more flexible to use
test: add test case for importing/exporting PSKs
linux: add import/export function for TLS pre-shared keys
test: extend psk to test new 'versioned' API
tree: add getter/setters for TLS PSK
json: move keystore operations out of the JSON parser
test: add pre-shared key json tests
tree: move dhchap and tls sysfs parser into separate functions
tree: read tls_configured_key and tls_keyring from sysfs
linux: export keys to config
linux: handle key import correctly
fabrics: rename first argument for argument macros
fabrics: use hex numbers when generating command line options
fabrics: add ctrl connect interface
fabrics: fix map error level in __nvmf_add_ctrl
util: added error code for ENOKEY
tree: do no export tls keys when not provided by user
json: do not escape strings when printing the configuration
doc: Regenerate all docs for v1.11
Release v1.11
Francis Pravin (5):
types: add new fields added in TP4142
types: Add enum for Completion Condition of Get LBA status command
libnvme: add EMVS support to sanitize command
types: Added enum for SMVES event of PEL log
types: Add ETPVDS and SSI fields of sanitize status log
Hannes Reinecke (1):
linux: fixup PSK HMAC type '0' handling
Jeremy Kerr (1):
tests: mi: Add test for dlen/doff values through raw admin_xfer interface
Jian Zhang (2):
mi: add control primitive command
examples: add control primitive in mi-mctp
Martin George (3):
tree: fix dhchap_key mem leak
tree: fix dhchap_ctrl_key mem leak
tree: fix tls key mem leak
Nate Thornton (1):
types: Add TP4159 PCIe Infrastructure for Live Migration definitions
Nitin Sao (1):
types: Added new field CSER in enum as per TP4167
Prashanth Nayak (1):
linux: Correct error handling for derive_psk_digest
Steven Seungcheol Lee (1):
ioctl: refactoring set_features
Tokunori Ikegami (7):
types: add NVME_CHECK() definition to check nvme register field value
types: add NVME_VAL() definition
types: add NVME_CTRL_FNA definitions to get field values
types: add NVME_CTRL_OAES_TTHR definition
types: add NVME_CTRL_OAES get macro definitions
types: add NVMe 2.1 get log page LIDs
types: add struct nvme_id_ctrl_nvm ver and lbamqf member variables
rick (1):
types: add kv opcodes
v1.10
Thanks to everyone contributing to this release.
There are bug fixes all over the places, from build fixes to normal bug fixes.
Noteworthy changes are from Caleb who updated/extended the ANA log fetcher/parser, Hannes updating the TLS feature. I've updated the config.json handling, so the nvme-cli will be able to connect to all resources defined in the config.json.
Once more, big thanks to everyone involved, if it is via code or bug reports. All highly appreciated.
Andrew Jeffery (1):
mi: Probe quirks on first command submission
Caleb Sander Mateos (9):
ioctl: fix nvme_get_log_ana_groups() pointer type
ioctl: respect rae in nvme_get_log_ana()
ioctl: replace nvme_ana_rsp_hdr in doc comments
ioctl: add support for atomic, piecewise ANA log fetch
test: support returning shorter buffer in mock ioctl
test: log mock ioctl command fields in hexadecimal
test: add mock ioctl tests for atomic ANA log fetch
libnvme: export nvme_mi_admin_get_ana_log_atomic()
linux: add nvme_get_ana_log_len_from_id_ctrl()
Daniel Wagner (22):
libnvme: sort export map
log: keep log level logic in one place
log: split log variables from root object
linux: default init cleanup variable
doc: remove unused release variable
build: reorder release commits
linux: add nvme_revoke_tls_key
build: add documentation CI build
build: always CI build documentation
tree: preserve parsing order of a config file
json: filter out pcie transport
test: revamp sysfs tree dump test
test: add config dump test
test: add config-pcie-with-tcp-config test case
fabrics: extend hostnqn/hostid variable inject interface
tree: add helper to lookup hostnqn/hostid
test: add hostnqn lookup test
build: do not overwrite conf data from main meson.build
build: show git version used during configuration
test: return error code
doc: Regenerate all docs for v1.10
Release v1.10
Francis Pravin (4):
types: add enum for Protection Information Format
types: add new filed added in TP4141a
types: Changed the space into tap space
types: add new fields added in TP4165
Greg Joyce (1):
tree: handle no address phy slot dirs
Hannes Reinecke (2):
tree: optionally skip namespaces during scanning
linux: update TLS version 1 PSK derivation
Hao Jiang (2):
mi: fix the return error code.
mi: fix the rc for nvme_mi_scan_ep
Hasan Polat (1):
ioctl: update nvme_set_var_size_tags() to properly use reftag
Israel Rukshin (1):
libnvme: Introduce functions to generate host identifier and host NQN
Jinliang Wang (1):
mi: restore default ep timeout during admin_passthru
Martin George (1):
tree: fix segfault in nvme_free_tree()
Maurizio Lombardi (3):
types: add the nvme Cancel command opcode
linux: avoid potential null pointer dereference
mi-mctp: initialize the rc variable in handle_mctp_endpoint()
Nitin Sao (3):
types: add new field added in TP4090
types: add new field added in TP4099
types: Added new controller attribute as per TP4104
Sam James (1):
Use C99 types for uint32_t
Tokunori Ikegami (2):
types: add PEL vendor specific and TCG defined events definitions
tree: fix nvme_read_config() to not set errno if return 0
Tomas Bzatek (5):
linux: Fix uninitialized variables
fabrics: Introduce simple URI parser
tests: Add uriparser tests
fabrics: Unescape URI elements
linux: Remove the use of OpenSSL Engine API
Warner Losh (2):
examples: Include sys/stat.h for S_I* constants
ccan/endian.h: Only define __{BIG,LITTLE}_ENDIAN if undefined.
dependabot[bot] (1):
build(deps): bump mosteo-actions/docker-run from 1 to 2
v1.9
Hannes was busy to get the TLS support for TCP getting into shape. While Tokunori is busy updating the type definitions. And Tomas is working on getting the NBFT bits more usable.
Thanks a lot everyone who contributed to this release via code or bug reports.
Ben Chuang (2):
util: Fixed nvme_id_ns_flbas_to_lbaf_inuse()
test: Add unit test for nvme_id_ns_flbas_to_lbaf_inuse()
Caleb Sander Mateos (2):
sysfs: minimize heap allocations of sysfs paths
test: use diff to compare sysfs output
Daniel Wagner (18):
log: move nvme_{set|get}_debug to log.c
ioctl: export nvme_submit_passthru{64} as weak symbol
ioctl: remove incomplete debug logging infrastructure
tree: fix lba_count size calculation
Revert "ioctl: Return NVMe status in nvme_directive_send_id_endir()"
Revert "ioctl: add nvme_get_features_host_id2()"
Revert "ioctl: add nvme_get_features_timestamp2()"
Revert "ioctl: add nvme_set_features_iocs_profile2()"
Revert "ioctl: add nvme_set_features_host_id2()"
Revert "ioctl: add nvme_set_features_host_behavior2()"
Revert "ioctl: add nvme_set_features_timestamp2()"
Revert "ioctl: Update stub functions to match documentation"
Revert "ioctl: Update function documentation"
Revert "fabrics: retry discovery log page when DNR is not set"
Revert "ioctl: return EPROTO when an NVMe status occurred"
tree: use strtou32 to read lba_size
build: Update version to v1.9
doc: Regenerate all docs for v1.9
Hannes Reinecke (26):
linux: allow for NULL argument in nvme_lookup_keyring()
linux: add nvme_read_key()
linux: add nvme_update_key()
crc32: Add CRC32 algorithm
linux: add nvme_export_tls_key()
linux: add nvme_import_tls_key()
linux: rework nvme_insert_tls_key_versioned()
tree: read TLS key in nvme_configure_ctrl()
json: export TLS key in PSK interchange format
json: import TLS key from PSK interchange format
json: dump TLS key data in PSK interchange format
linux: Add nvme_scan_tls_keys()
config-schema.json.in: tls keys and keyrings are strings
fabrics: keyring is a long
libnvme: add missing symbol nvme_scan_tls_keys
ioctl: return EPROTO when an NVMe status occurred
fabrics: retry discovery log page when DNR is not set
ioctl: Update function documentation
ioctl: Update stub functions to match documentation
ioctl: add nvme_set_features_timestamp2()
ioctl: add nvme_set_features_host_behavior2()
ioctl: add nvme_set_features_host_id2()
ioctl: add nvme_set_features_iocs_profile2()
ioctl: add nvme_get_features_timestamp2()
ioctl: add nvme_get_features_host_id2()
ioctl: Return NVMe status in nvme_directive_send_id_endir()
Leonardo da Cunha (1):
types: Added Command and Feature Lockdown LID
Liang Yan (2):
build: Add vscode directory into ignore
linux: Allocate aligned payload for nvme_get_telemetry_log
Martin George (1):
tree: fix mem leak in nvme_ns_init()
Maurizio Lombardi (1):
fabrics: check the read() return value
Nilay Shroff (2):
libnvme : record the nvme pci adapter physical slot
tree: Add NVM subsystem controller identifier
Tokunori Ikegami (26):
types: Add persistent event log reporting context definitions
types: Add PEL reporting context port identifier type definitions
types: Add PEL header additional information definitions
types: Add boot partition information definitions
types: Fix enum nvme_pel_rci documentation error
types: Add PEL set feature event layout definitions
ioctl: Move nvme_cmd_dword_fields definitions into header file
types: Fix EOM header optional data present fields definition
types: Add optional data present filed mask and shift definition
types: Fix NVME_CSTS_SHST_MASK definition
ioctl: Add nvme_ns_mgmt_delete_timeout()
types: Fix boot partition read offset (BPROF) mask value
types: Add NVME_CMBEBS property definitions
types: Add CMBSWTP property definitions
types: Add NVME_CMIC definitions
types: Add enum nvme_csts documentation
types: add controller status shutdown type (CSTS.ST) definition
types: Add enum nvme_unit/cmbebs/cmbswtp/flbas/cmic documentation
types: add enum nvme_cap documentation
types: add CAP.CPS and CAP.NSSS definitions
test: add CSTS.ST, CAP.CPS and CAP.NSSS registers
examples: fix mi-mctp build warning errors
types: Fix PMRWBM register name
types: fix CRTO.CRIMT mask value definition
types: add controller properties enum documentation
types: add ASQ, ACQ and BPMBL controller properties definitions
Tomas Bzatek (12):
log: Introduce nvme_get_logging_level()
log: Respect DEFAULT_LOGLEVEL on uninitialized logging
doc: Document the NBFT API
nbft: Add SSNS 'unavailable' flag
nbft: Add SSNS 'discovered' flag
tests: Adapt to added NBFT SSNS flags
tests: Add complex NBFT table from Dell R660
nbft: Whitespace fixes
json: Fix uninitialized variables
build: Switch default meson buildtype to 'debugoptimized'
tests: Add sample NBFT table with mpath IPv4+IPv6 discovery
util: Add string constant for ENVME_CONNECT_IGNORED
v1.8
It's not a very interesting release this time. There are mostly small bug fixes and a few improvements in the testing area. Though it's worth to get these fixes out.
Thanks to all: Hannes Reinecke, Jian Zhang, Jinliang Wang, Leonardo da Cunha, Martin George, Martin Wilck, Tokunori Ikegami, Tomas Bzatek
Daniel Wagner (12):
build: fix release python tag match
build: checkout full repo for checkpatch
json-schema: add keyring and tls_key details
tree: use logical block size for lba
libnvme: export nvme_dump_tree
json: dump the output to the user selected filedescriptor
nvme: allow to overwrite base sysfs path
nvme: allow to overwrite hostnqn and hostid
test: read and dump sysfs tar file
tree: do not issue an error when subsys lookup fails during scanning
build: Update version to v1.8
doc: Regenerate all docs for v1.8
Hannes Reinecke (3):
meson.build: fixup 'join' syntax
Merge pull request #770 from hreinecke/fix-join.v2
fabrics: add 'concat' option
Jian Zhang (1):
example: fix mi identify failed with error cntid
Jinliang Wang (1):
mi: set correct rc and errno when crc mismatch
Leonardo da Cunha (1):
util: Added function to find specific UUID in UUID list.
Martin George (1):
linux: avoid segfault in check-tls-key due to null hostnqn/subsysnqn
Martin Wilck (1):
nbft: avoid duplicate entries in ssns->hfis
Tokunori Ikegami (1):
types: Add controller properties CMBEBS, CMBSWTP and NSSD
Tomas Bzatek (9):
fabrics: Explicitly initialize auto-cleanup variables
linux: Explicitly initialize auto-cleanup variables
tree: Explicitly initialize auto-cleanup variables
util: Explicitly initialize auto-cleanup variables
nbft: Fix (struct nbft_info_subsystem_ns).num_hfis off-by-one
tests: Fix diffs output for duplicate HFI entries
tests: Add sample NBFT table from Dell PowerEdge R760
tests: Add sample NBFT table from Dell PowerEdge R660
linux: Explicitly initialize auto-cleanup variables
dependabot[bot] (1):
build(deps): bump codecov/codecov-action from 3 to 4
v1.7.1
v1.7
The highlights of this release are
- allocated payloads aligned (Tomas Bzatek)
- refactoring and improvements of RAE handling in get log pages (Caleb Sander)
- auto cleanup of resources (Caleb Sander)
- build instruction update and improving build situation for older distros
- support for TP8018 (Hannes Reinecke)
- use sysfs only for topology scan (Daniel Wagner)
The last point addresses a long standing problem. Whenever 'nvme list' is used it could add error log entries for certain devices. With the corresponding kernel changes this will not happen anymore. It also unlocks some possible new features. Note this depends on the upcoming 6.8 kernel.
Obviously there were lots of bug fixes everywhere and contributions in form of bug reports etc. Many thanks to everyone who contributed to the project: Alfred Wingate, Brandon Paupore, Caleb Sander, Chris Patterson, Daniel Wagner, Hannes Reinecke, Joy Gu, Martin Belanger, Martin George, Maurizio Lombardi, Nate Thornton, Prashanth Nayak, Sam James, Tokunori Ikegami and Tomas Bzatek.
v1.6
ALPSS 2023 Release
v1.5
A couple of noteworthy features made it to this release:
- A parser for the NBFT table (per NVMe-oF boot specification v1.0).
The Timberland SIG provided the code for this. - Ignoring fabric connect attempts if the execution context doesn't match.
This feature allows to make different users of libnvme to coexist, e.g. nvme-cli, nvme-stas or blktests without trying
to manage the same resource
And as usual there are plenty of fixes all over the place.
A big thanks to contributions from Benjamin Drung, Caleb Sander, Hannes Reinecke, Jeremy Kerr, Lior Weintraub, Martin Belanger, Maurizio Lombardi, Steven Seungcheol Lee, Stuart Hayes, Tokunori Ikegami, Tomas Bzatek, Umer Saleem.
Benjamin Drung (1):
examples: Fix wrong indentation in discover-loop.py
Caleb Sander (3):
fabrics: handle /dev/nvme-fabrics read failure
fabrics: check genctr after getting discovery entries
ioctl: fix RAE bit on last Get Log Page command
Daniel Wagner (27):
tree: Fix argument check in nvme_bytes_to_lba
fabrics: Do not pass unsupported options to kernel
tree: Fix offset argument check in nvme_bytes_to_lba
build: Disable fallback on default
build: Update wrap mode defaults
build: Make json-c dependency lookup not fail
build: Extend summary section
build: Simple muon build configuration
doc: Update README
python: Update test data
ioctl: Explicitly initialize all members of struct nvme_ns_mgmt_args
build: Install missing s390 library
test: Add unit test for ctrl lookups
util: Add ignored error code
fabrics: Filter discovery ctrls out during application context check
tree: Ignore NULL address pointer for phy slot lookup
fabrics: Relax match on well known disc ctrl lookup
scripts: Move helper scripts to a central place
scripts: Call update doc script from top level dir
scripts: Sync release script
build: Move CI build steps into a scripts
scripts: Use spaces instead of tabs
util: Provide empty nvme_ipaddrs_eq for static builds
build: Use containers with matrix build
build: Update cross instruction and drop verbose test flag
build: Update version to v1.5
doc: Regenerate all docs for v1.5
Hannes Reinecke (3):
libnvme: add 'application' setting to the subsystem
libnvme: add 'application' setting to nvme_root
fabrics: filter out subsystems with non-matching application string
Jeremy Kerr (1):
mi: Add nvme_mi_ctrl_id to retrieve controller ID
Lior Weintraub (1):
examples: fix incorrect controller status in MI info output
Martin Belanger (12):
nbft: Doc typo - Use nvme_nbft_free() instead of nbft_free()
Python: Add NBFT support
NBFT: Remove documentation from nbft.c since it's also in nbft.h
Python: make NBFT data more pythonic
Python: Suppress swig warnings about unnamed struct
python/swig: Wrap swig-sensitive struct inside #ifwdef SWIG
python/swig: Check swig version to determine whether -py3 is needed
Python: Fix crash during garbage collection
util: Add ipaddrs_eq() to check whether two IP addresses are equal
util: rename ipaddrs_eq() to nvme_ipaddrs_eq() and make public.
test: Add more code coverage for nvme_ipaddrs_eq()
tree: Use nvme_ipaddrs_eq() to compare IP addresses
Maurizio Lombardi (1):
fabrics: fix potential invalid memory access in __nvmf_supported_option()
Steven Seungcheol Lee (4):
types.h: Add FDP related Status Code
types: Add ns-mgmt host software specified fields
types: Add IO command set specific field on nsmgmt
ioctl: io management send, receive args fix
Stuart Hayes (1):
nbft: add NBFT v1.0 table support
Tokunori Ikegami (3):
fabrics: Add EADDRNOTAVAIL error mapping
util: Use HAVE_NETDB instead of HAVE_LIBNSS
json: Use memory block allocated by realloc() instead printbuf
Tomas Bzatek (4):
nbft: Move added symbols to LIBNVME_1_5
nbft: Add a simple unit test
nbft: Fix nbft_ssns_flags endianness test
nbft: Parse the {HOSTID,HOSTNQN}_CONFIGURED flags
Umer Saleem (1):
tree: Add PCI physical slot number for controller
v1.4
This release doesn't bring a lot of new exciting features. Hannes provided the initial TLS support for the TCP transport. This is really fresh code an might actually change. There kernel part is not there yet, consider this all as technology preview.
On the bug fixing front we have a bunch of smaller contributions. Thanks Tomas, Steven, Keith and Minwoo!
And a bigger one for the Python binding from Martin, thanks too!
The rest of the changes are mostly build related stuff. Eg I made all the non necessary dependency optional (which reduces also the functionally).
Note:
- The Python configuration flag type changed to feature, that means it accepts 'auto', 'disabled' and 'enabled.
- New optional dependency introduced (TLS feature) on libkeyutils (https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/)
Daniel Wagner (28):
Merge pull request #570 from tbzatek/nss
build: Use prefixdir directly on sysconfdir
build: Make json-c dependency optional again
build: Update dbus.wrap
Merge pull request #575 from igaw/update-dbus-wrap
fabrics: Do not ignore one char whitespace when string sanitizing
Merge pull request #576 from igaw/fix-strchomp-callers
Merge pull request #573 from igaw/fix-muon-build
Merge pull request #574 from igaw/make-json-c-optional
build: Set defaults for libdbus to disabled
build: Rename meson.yml to build.yml
build: Add muon build
Merge pull request #577 from igaw/build-updates
ioctl: Set file descriptor in nvme_get_log_page()
mi: Add nvme_mi_admin_get_log_page
build: Streamline workflows with nvme-cli
build: Enable test in muon minimal build
build: Initialize sysconfdir
build: Upload all log files on failure
build: Add build action back
build: Update json-c wrap
build: Update OpenSSL wrap
doc: Update build script to use correct meson verbs
doc: Do not hardcode default location for config files
fabrics: Add define for DMI sysinfo
fabrics: Filter out invalid UUIDs from DMI
build: Update version to v1.4
doc: Regenerate all docs for v1.4
Hannes Reinecke (6):
linux: add nvme_lookup_keyring()
nvme: add 'nvme_insert_tls_key()' function
linux: add key helper functions
fabrics: add configuration option 'keyring'
fabrics: add configuration option 'tls_key'
Print out correct TREQ strings for discovery
Keith Busch (1):
fix endians
Martin Belanger (11):
python: Fix segmentation fault during garbage collection
python: Return PyObject* from __str__() instead of a static char[]
python test: Check there is no SIGSEGV during garbage collection
python: Reformat SWIG input file
python, meson: Assert that deps are present for -Dpython=true
Python: Add hostnqn_from_file() and hostid_from_file()
Python: Add support for setting/getting Host DHCHAP key
build, meson: Print option summary
python: Remove redundant host.set_key() method
python: Add setter property for controller DHCHAP Key
python: Change python option from combo to feature
Minwoo Im (2):
types: add opcode field to error log page (TP4113)
tree: fix generic device open failure
Steven Seungcheol Lee (1):
doc: fix kernel-doc-check warning
Tomas Bzatek (1):
build: Fix nss code snippet includes
zerone (1):
types: Update position of elbatm in struct nvme_copy_range{_f1}