Releases: linux-nvme/libnvme
v1.16.1
v1.16
This is the last normal update of this 1.x series, and thus this branch enters maintenance mode. The next major development cycle has started and one of the changes is to move the library to the nvme-cli repo. The library still stays separate but not the repo. There was just too much hassle to keep those two project synchronized.
Anyway, expect only bug fixes here.
What's Changed
- tree: do not try to strdup NULL pointer by @igaw in #1046
- linux: Add functions to set and clear etdas bit by @igaw in #1048
- Fixup HKDF-Expand-Label algorithm by @hreinecke in #1051
- nvme.i: fix crash on ctrl.discover() without a connection by @hreinecke in #1056
- nvme.i: decode 'tsas' discovery log page entry by @hreinecke in #1057
- linux: fix HKDF TLS key derivation back to OpenSSL 3.0.8 by @cleech in #1055
- python: fix typo from previous commit by @martin-belanger in #1058
- libnvme: propagate the error to the caller if nvme_get_log_page() fails by @maurizio-lombardi in #1049
- Fixes for python discovery by @hreinecke in #1061
- nvme/linux: add fallback implementation for nvme_insert_tls_key_compat() by @hreinecke in #1063
- python: Don't exit immediately on discovery fail. by @martin-belanger in #1062
- libnvme/nvme.i: raise exception when disconnect fails by @hreinecke in #1065
- python: fix iterators failing on empty lists by @martin-belanger in #1067
- Implement discovery loop in python by @hreinecke in #1069
- linux: use EVP_PKEY_CTX_add1_hkdf_info only once in compat function by @igaw in #1073
- tree: support apple-nvme transport by @craftyguy in #1071
- linux: Add nvme_get_uuid_list function by @jeff-lien-sndk in #1083
- tree: preserve dhchap_key to during scan by @igaw in #1088
Full Changelog: v1.15...v1.16
v1.15
What's Changed
- tree: handle the case when host_iface/host_traddr are set to "none" by @martin-belanger in #1015
- examples: remove unnecessary include of <bits/pthreadtypes.h> by @dne in #1016
- ioctl: only use io_uring for char devices by @igaw in #1018
- Expanding test coverage for ioctl.h functions by @MaisenbacherD in #1021
- Add missing features tests by @MaisenbacherD in #1024
- test: add tests for zns functions by @MaisenbacherD in #1029
- doc: fix return value description for nvme_scan_topology by @igaw in #1030
- types: add SMART / health information CW shift and mask values by @ikegami-t in #1023
- types: Fix nvme_ns_id_desc packing. by @thieule742 in #1026
- mi: Additional define options for older systems with SIOCMCTPALLOC by @chorkin in #1019
- mi: nvme_mi_mi_xfer() is overly restrictive by @chorkin in #1027
- ioctl: introduce force xfer length configuration knob by @igaw in #1031
- build: disable liburing support per default by @igaw in #1032
- tree: filter tree after scan has completed by @igaw in #1022
- test: add tests for miscellaneous ioctl functions by @MaisenbacherD in #1034
- test: add tests for miscellaneous ioctl functions by @MaisenbacherD in #1036
- types: Add Create Queue Specific (CQS) shift and mask for LM CDQ command by @NateThornton in #1035
- tree: free ctrl attributes when (re)configure ctrl by @igaw in #1033
- ioctl: fix nvme_get_log_endurance_grp_evt() description by @ikegami-t in #1037
- tree: sanitize free() handling by @martin-gpy in #1038
- mi: add arbitration feature get function by @ikegami-t in #1020
- mi: correct mi admin feature functions map file by @ikegami-t in #1039
- linux: TLS PSK derivation fixes by @cleech in #1040
- tree: always set the host key by @igaw in #1041
New Contributors
- @dne made their first contribution in #1016
- @thieule742 made their first contribution in #1026
- @cleech made their first contribution in #1040
Full Changelog: v1.14...v1.15
v1.14
There aren't many big changes in this release. Besides the usual adding of new definitions the EINTR handling is removed. It is now handled in nvme-cli directly because it's necessary to handle signals properly and installing a signal handler in the library is not a good idea.
What's Changed
- build: switch to new python meson backend by @glimchb in #991
- Feat perfc def by @ikegami-t in #994
- Fix Python Uploads by @igaw in #996
- build: fix test pypi cleanup task by @igaw in #997
- build: add the missing python upload change by @igaw in #998
- build: update meson.build version for pypi upload by @igaw in #999
- Update the release script to update linker mapping file by @igaw in #1001
- build: update readthedocs commands by @igaw in #1003
- tree: add routine to fetch subsys serial number by @martin-gpy in #1002
- util: add FDP events feature length by @ikegami-t in #1005
- Mi admin passthru by @ikegami-t in #983
- mi: Add support for multiple csi buffers by @chorkin in #1000
- tests: Add some more sample NBFT tables by @tbzatek in #1008
- types,util: add enums for Boot Partition Write Protection Config feature by @francispravin5 in #1009
- mi: Introduce asynchronous event message handling by @chorkin in #967
- types: add temperature threshold feature TMPTHH field by @ikegami-t in #1007
- Revert "fabrics: retry connect command on EINTR" by @igaw in #1010
- types: Change LM CDQ sz argument from u8 to u32. by @DanceDance in #1006
- makefile fixes by @igaw in #1012
- mi: fix missing braces around initializer warnings by @ikegami-t in #1011
Full Changelog: v1.13...v1.14
v1.13
There were some rather anoying regressions in the last release (#980, linux-nvme/nvme-cli#2761), which this release is addressing.
Another problem which popped up, is that kernel change is causing a regression. The kernel started to return a new error code. libnvme will now retry to connect when writing to /dev/nvme-fabrics returns -ENTR (linux-nvme/nvme-cli#2760).
The PyPi is broken and thus no Python release for the time being. Hopefully this gets fixed soon (#976)
Thanks to everyone contributing to this project!
Changqing Li (1):
mock.c: fix checking of HAVE_GLIBC_IOCTL
Daniel Wagner (23):
build: fix python release workflows
build: enable python test release and fix release tag
build: use correct syntax to fetch container
build: use v1 branch pypi publish action
build: use trusted publisher authentication
pyproject: add description metadata
build: set permissions for release-python
build: disable twine metadata check
build: update packaging for twine
build: install pip
build: use pipx for installing packaging
build: install packaging globally
build: install packaging in upload containers
gitignore: ignore .build-tools
src: update include directive
ioctl: return status code when using liburing
fabrics: retry connect command on EINTR
build: fix python upload workflows
build: update gh-action-pypi-publish dependency
build: use the correct version syntax for actions
build: set python version to 3.10
doc: Regenerate all docs for v1.13
Release v1.13
Dmitry Sherstoboev (1):
types: Fix Live Migration SEQIND Shift and Mask
Francis Pravin (1):
types: Update nvme_id_independent_id_ns fields based on NVMe 2.1 spec
Keith Busch (1):
libnvme: do not byte swap command dwords
Martin George (2):
tree: add routine to fetch subsys model
tree: add routine to fetch subsys firmware rev
Tokunori Ikegami (4):
types: add performance attribute structures
types: add performance characteristics feature access values
util: add performance characteristics feature decode function
types: add performance characteristics attribute type values
v1.12
There aren't many interesting changes in this release. Most of the changed in this release are due adding missing bits and pieces from the v2.1 nvme spec. Obviously, there the usual bug fixes, but nothing serious.
The only thing which might be causing some problems is the updated version dependency on meson. The good news is, that if this is causing troubles, we can disable one of the tests which depends on meson feature to properly configure. But let's see how it goes.
Thanks to all who contributed to this release in every form, e.g. by bug reports, documentation fixes or code changes!
This release switches to the newer dbus API for mctpd (corresponding to mctpd version 2.0 and later). If you're using libnvme's MCTP-device endpoint enumeration functions (nvme_mi_for_each_endpoint), you will need to update to mctpd v2.x or later.
Arbaz Khan (1):
types,util: Added Enums for missing status codes
Chuck Horkin (1):
mi_xfer: Added nvme_mi_mi_xfer API
Daniel Wagner (23):
linux: fix derive_psk_digest OpenSSL 1.1 version
linux: do not return w/o OpenSSL support enabled
linux: do not do any keyring ops when no key is provided
fabrics: do not attempt to import keys if tls is not enabled
doc: Regenerate all docs for v1.11.1
Release v1.11.1
test/mock: pass thru unknown ioctls
tests: do not unconditionally depend on dlsym
ioctl: fix io_uring whitespace damages
build: bump wraps
build: add thank you bot
build: add github token to comment step
build: remove thank you bot
build: checkpatch limit line length to 100 chars
examples: fix time stamp prefix printf format string
pyproject.toml: allow newer meson version
build: update min meson dependency
build: request c++ compiler for host and build machine
build: drop support for openssl 1
build: do not include config.h globally
build: ignore PREFER_DEFINED_ATTRIBUTE_MACRO
doc: Regenerate all docs for v1.12
Release v1.12
Dennis Maisenbacher (1):
build: Add token for coverage test
Francis Pravin (7):
types: add enum for the fields added in TP4160
types: add enum for the fields added in TP4058
types: Update id-ns fields based on NVM Command Set Spec 1.1
types: Update nvm-id-ns fields based on NVM Command Set Spec 1.1
types,util: add Asynchronous Event Configuration NVMe 2.1 definitions
types: add HDISNS field of Host Behavior Support feature
types: add enum for Identify I/O Command Set Data Structure
Jian Zhang (2):
util: avoid min macro pollution
test: check the namespace is not cluttered with min/max
Martin Belanger (2):
Makefile: Add new targets and update meson command syntax
python, swig: add missing controller attributes
Nate Thornton (2):
types: Live Migration
ioctl: Live Migration
Steven Seungcheol Lee (7):
types: Add id-ctrl CTRATT.RHII enum
rpm: use defined prefix from meson
ioctl,types: telemetry log update based NVMe v2.1
mi: telemetry log update based NVMe v2.1
types: Update id-ctrl field based on NVMe 2.1 spec
types: use __le16 instead of __u16 for data fields
types: Add enum for nvme_id_ctrl.trattr
Thu Nguyen (1):
Update mctp APIs to mctp codeconstruct version 2.0
Tokunori Ikegami (30):
types: add NVME_ID_CTRL_NVM_LBAMQF definitions
types: fix lm data field unsigned values to little endian
types: error information log entry status field definitions
types: add NVMe 2.1 identify power state descriptor fields
types: Add NVMe 2.1 feature ID definitions
types: add NVMe 2.1 admin command opcode definitions
types: add NVMe 2.1 identify command CNS definitions
ioctl: add nvme_get_endgid_log()
ioctl: add nvme_get_log_rotational_media_info()
ioctl: add nvme_get_log_dispersed_ns_participating_nss()
ioctl: add nvme_get_log_mgmt_addr_list()
ioctl: add nvme_get_log_reachability_groups()
ioctl: add nvme_get_log_reachability_associations()
ioctl: add nvme_get_log_changed_alloc_ns_list()
ioctl: add nvme_get_log_host_discover()
ioctl: add nvme_get_log_ave_discover()
ioctl: add nvme_get_log_pull_model_ddc_req()
types: add NVME_FEAT_FDPE_*** definitions
types: add I/O command fabric commands opcode definition
types: fix enum nvme_psd definitions indentation errors
types: add spinup control and pls features definition
mi: add nvme_mi_admin_get_log_mgmt_addr_list()
types: add NVME_CTRL_OACS definitions
mi: fix indentation errors
ioctl: add libnvme-mi NVMe 2.1 log page APIs
ioctl: fix nvme_get_log_reachability_groups() parameters order
types: fix nvme_reachability_association_desc member variable name
mi: fix nvme_mi_admin_get_log_reachability_groups() parameters order
libnvme: export nvmf_exat_ptr_next
types: add SLM and CP command set indicator values
dependabot[bot] (2):
build(deps): bump codecov/codecov-action from 4 to 5
build(deps): bump pypa/gh-action-pypi-publish@release/v1.5
letli (2):
tests: mock io_uring_get_probe
ioctl: get_log_page by nvme uring cmd
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