Releases: linux-nvme/nvme-stas
v2.2
Summary
This release adds support for in-band authentication.
What's Changed
- test: GitHub Actions failing during "apt-get update" by @martin-belanger in #324
- docs: Cosmetic corrections by @martin-belanger in #325
- build: Fix "make deb" by @martin-belanger in #326
- staslib: Just a bunch a minor clean-ups by @martin-belanger in #327
- test: Better loop support in nvmet.py utility by @martin-belanger in #328
- test: Try to fix GitHub actions by @martin-belanger in #329
- Wrap long lines by @bdrung in #333
- staslib: Adding support for Host DHCHAP Key by @martin-belanger in #335
- Fix man pages by @martin-belanger in #336
- staslib: Cosmetic - ran black to fix formatting by @martin-belanger in #337
- staslib: Add support for controller DHCHAP key by @martin-belanger in #338
- doc: Add documentation for controller override configuration by @martin-belanger in #339
- Release: v2.2 by @martin-belanger in #340
New Contributors
Full Changelog: v2.1.3...v2.2
v2.1.3
Summary
- Better handling of udev events and elimination of race condition between
nvme-stas
andnvme-cli
. - Code format is now enforced by
black
. The commandmake black
has been added to help developers make sure their contributions follow the right format.
What's Changed
- build(deps): bump docker/build-push-action from 3.3.0 to 4.0.0 by @dependabot in #312
- test: Mock systemd.journal.JournalHandler() by @martin-belanger in #313
- test: Run mypy static code analysis by @martin-belanger in #314
- staslib: Fix fallback udev rule by @martin-belanger in #315
- build: Fix "make rpm" by @martin-belanger in #317
- staslib: Disable udev-rule permanently by @martin-belanger in #318
- staslib: Fix memory corruption when running multiple threads by @martin-belanger in #319
- test: Add black to the GitHub actions by @martin-belanger in #320
- Release 2.1.3-rc2 by @martin-belanger in #321
- release: v2.1.3 by @martin-belanger in #323
Full Changelog: v2.1.2...v2.1.3
v2.1.2
Summary
A few bug fixes:
- Documentation: Fix Read-the-Docs generation with Sphinx. A bug was recently introduced upstream in Sphinx, which causes nvme-stas documentation generation to fail. Had to pin Sphinx version to 5.3.0 until the bug is fixed upstream (it's actually fixed, but the Read-the-Docs site hasn't picked it up yet)
- Avahi: Add support for protocols RoCE and iWARP of mDNS TXT field.
- Avahi: Add
_nvme-disc._udp
to the list of supported mDNS service types.
What's Changed
- doc: Pin sphinx version to 5.3.0. by @martin-belanger in #302
- build(deps): bump docker/build-push-action from 3.2.0 to 3.3.0 by @dependabot in #303
- build(deps): bump docker/metadata-action from 4.1.1 to 4.3.0 by @dependabot in #304
- build(deps): bump hadolint/hadolint-action from 3.0.0 to 3.1.0 by @dependabot in #306
- test: Testing for _nvme-disc._tcp need to use assertIn() by @martin-belanger in #307
- staslib: fix RoCE support by @martin-gpy in #305
- staslib: Cosmetic changes (missing a space, move a comment) by @martin-belanger in #308
- staslib: Add _proto2trans() to convert protocol to transport by @martin-belanger in #309
New Contributors
- @martin-gpy made their first contribution in #305
Full Changelog: v2.1.1...v2.1.2
v1.1.9
Summary
Backported changes from the main branch:
- In avahi.py, add support for RoCE protocol
- In conf.py, add
_nvme-disc._udp
to the list of supported mDNS service types (stype)
What's Changed
- V1.1.9 by @martin-belanger in #310
Full Changelog: v1.1.8...v1.1.9
v2.1.1
Summary
This release introduces a mechanism to ensure that Connect/Disconnect operations happen in the right order. This can be an issue when a large number of connections are made (> 100) and several of those connections fail. It takes the Linux NVMe driver 3 seconds to time out on a failed connection. And since the driver serializes the creation of connections, it can take several minutes for the kernel to cycle through a large number of failing connection requests. In other words, given 100 connection requests, and if every connection request fails, it will take the kernel 300 seconds (5 minutes) to cycle through all 100 requests. If during that 5 minutes we have changes to the configuration that require that some (or all) of these connections should be removed, we can end up with a Disconnect being requested while the kernel has yet to process the corresponding Connect. This results in Connect/Disconnect being processed in the reverse order.
What's Changed
- More unit/coverage tests and improve name resolution engine by @martin-belanger in #293
- Improve coverage. Add __get_int() function by @martin-belanger in #294
- stafd: Fix handling of lost zeroconf-discovered DC by @martin-belanger in #295
- Move handling of unresponsive DCs to _config_ctrls_finish() by @martin-belanger in #296
- test: Cosmetic changes to coverage log messages by @martin-belanger in #297
- Fix reverse order Connect/Disconnect operations by @martin-belanger in #299
- 2.1.1 fixes by @martin-belanger in #301
Full Changelog: v2.1...v2.1.1
v2.1
Summary
- A new feature was introduced to automatically remove discovery controllers discovered through zeroconf (mDNS) when they are no longer responding. See NEWS.md for details.
- This release also provides some bug fixes.
- Finally, a lot of changes were made to Read-the-Docs documentation format.
What's Changed
- build: Fix libnvme subproject dependency for distro builds by @martin-belanger in #279
- udev: Throttle EnvironmentError exception messages by @martin-belanger in #280
- staslib: Trim whitespaces at the source by @martin-belanger in #281
- build(deps): bump hadolint/hadolint-action from 2.1.0 to 3.0.0 by @dependabot in #283
- build: Cleanup/Simplify meson build infra by @martin-belanger in #284
- staslib: Add load_idl() with multi Python versions support by @martin-belanger in #285
- docs: Updated and Improved Read-The-Docs format by @martin-belanger in #286
- Clean readthedocs by @martin-belanger in #288
- tests: Remove link-local addresses from unit tests by @martin-belanger in #289
- Add new conf. parameters and conf. validation code by @martin-belanger in #291
- build(deps): bump fedora from 36 to 37 by @dependabot in #287
- stafd: Add zeroconf-connections-persistence conf. parameter by @martin-belanger in #292
Full Changelog: v2.0...v2.1
v1.1.8
Summary
This release addresses SuSE's issue 1205873.
What's Changed
- Avahi: Allow uppercase/lowercase "NQN/nqn" key in TXT field by @martin-belanger in #290
Full Changelog: v1.1.7...v1.1.8
v1.1.7
Summary
This release addresses SuSE's issue 1204975.
What's Changed
- staslib: Trim white spaces from DLPEs and manual configuration. by @martin-belanger in #282
Full Changelog: v1.1.6...v1.1.7
v2.0
Summary
-
Add support for PLEO - Port-Local Entries Only, see TP8010.
- Add new configuration parameter to stafd.conf:
pleo=[enabled|disabled]
- This requires
libnvme
1.2 or later although nvme-stas can still operate with 1.1 (but PLEO will not be supported).
- Add new configuration parameter to stafd.conf:
-
Target
udev-rule=
at TCP connections only. -
Read-the-docs will now build directly from source (instead of using a possibly stale copy)
-
More unit tests were added
-
Refactored the code that handles
pyudev
events in an effort to fix spurious lost events. -
In
stacd.conf
, add a new configuration section,[I/O controller connection management]
.- This is to replace
sticky-connections
bydisconnect-scope
anddisconnect-trtypes
, which is needed so that hosts can better react to Fabric Zoning changes at the CDC. - Add
connect-attempts-on-ncc
to control how stacd will react to the NCC bit (Not Connected to CDC).
- This is to replace
-
When the host's symbolic name is changed in
sys.conf
, allow re-issuing the DIM command (register with DC) on areload
signal (systemctl reload stafd
). -
Replace
blacklist=
byexclude=
isstafd.conf
andstacd.conf
. Warning: this may create an incompatibility for people that were usingblacklist=
. Althoughblacklist=
will continue to be supported for a while (~2 years) it would be a good idea to manually replace it byexclude=
. -
Change
TID.__eq__()
andTID.__ne__()
to recognize a TID object even when thehost-iface
is not set. This is to fix system audits wherenvme-stas
would not recognize connections made bynvme-cli
. The TID object, or Transport ID, contains all the parameters needed to establish a connection with a controller, e.g. (trtype
,traddr
,trsvcid
,nqn
,host-traddr
, andhost-iface
).nvme-stas
can scan thesysfs
(/sys/class/nvme/
) to find exiting NVMe connections. It relies on theaddress
and other attributes for that. For example the attribute/sys/class/nvme/nvme0/address
may contain something like:traddr=192.168.56.1,trsvcid=8009,host_iface=enp0s8
.nvme-stas
always specify thehost-iface
when making connections butnvme-cli
typically does not. Instead,nvme-cli
relies on the routing table to select the interface. This creates a discrepancy between theaddress
attribute of connections made bynvme-cli
and those made bynvme-stas
(i.e.host_iface=
is missing fornvme-cli
connections). And this results innvme-stas
not being able to recognize connections made bynvme-cli
. Two solutions have been proposed to workaround this problem:- First, a short term solution changes
TID.__eq__()
andTID.__ne__()
so that thehost-iface
has a lesser weight when comparing two TIDs. This way, the TID of a connection created bynvme-cli
can be compared to the TID of a connection made withnvme-stas
and still result in a match. The downside to this approach is that a connection made withnvme-cli
that is going over the wrong interface (e.g. bad routing table entry), will now be accepted bynvme-stas
as a valid connection. - Second, a long term solution that involves a change to the kernel NVMe driver (in Linux 6.1) will allow being able to determine the host interface for any NVMe connections, even those made without specifying the
host-iface
parameter. The kernel driver will now expose the source address of all NVMe connections through thesysfs
. This will be identified by the key=value pair "src_addr=[ip-address]
" in theaddress
attribute. And from the source address one can infer the actual host interface. This actually will solve the shortcomings of the "short term" solution discussed above. Unfortunately, it may take several months before this kernel addition is available in a stock Distribution OS. So, the short term solution will need to suffice for now.
- First, a short term solution changes
What's Changed
- build(deps): bump docker/build-push-action from 3.0.0 to 3.1.0 by @dependabot in #196
- build: increase libnvme subproject revision number by @martin-belanger in #197
- build(deps): bump docker/build-push-action from 3.1.0 to 3.1.1 by @dependabot in #198
- Add I/O controller disconnect policy by @martin-belanger in #199
- doc: update version number on html documents by @martin-belanger in #200
- doc: Clarify that Hosts don't have access to Fabric Zoning configuration by @martin-belanger in #201
- stacd: fix bug disconnect-trtypes=rdma+fc by @martin-belanger in #202
- release: 1.2-rc2 by @martin-belanger in #203
- stacd: support str_addr attribute from sysfs by @martin-belanger in #204
- config: Add backward compatibility support by @martin-belanger in #205
- stafd: Add PLEO support by @martin-belanger in #206
- stacd: Restrict udev-rule=disabled to suppress TCP connections only by @martin-belanger in #207
- Target udev-rule option at TCP connections only by @martin-belanger in #208
- release: v2.0-rc2 by @martin-belanger in #209
- Resync with DC on pleo config change by @martin-belanger in #210
- stafd: Always invoke Controller's reload_hdlr() on a reload command by @martin-belanger in #211
- doc: Fix missing HTML links by @martin-belanger in #245
- doc: Set html_extra_path in the Sphinx conf.py file by @martin-belanger in #246
- doc: Convert html to rst by @martin-belanger in #247
- read-the-docs: convert html to rst by @martin-belanger in #248
- read-the-docs: Fix broken build by @martin-belanger in #249
- doc: Clean up. Unable to generate usable RST from HTML. by @martin-belanger in #250
- build(deps): bump docker/metadata-action from 4.0.1 to 4.1.0 by @dependabot in #255
- build(deps): bump docker/build-push-action from 3.1.1 to 3.2.0 by @dependabot in #254
- build(deps): bump docker/login-action from 2.0.0 to 2.1.0 by @dependabot in #253
- build: Rework mesong dependencies by @martin-belanger in #256
- Support libnvme 1.1 and 1.2 by @martin-belanger in #257
- test: Add more unit tests by @martin-belanger in #258
- stafd: Use introspection instead of version no. to determine what libnvme supports by @martin-belanger in #259
- release: v2.0-rc4 by @martin-belanger in #260
- build(deps): bump docker/metadata-action from 4.1.0 to 4.1.1 by @dependabot in #262
- Improve config error handling by @martin-belanger in #263
- packages: Update debian package info by @martin-belanger in #264
- Rework glibudev by @martin-belanger in #265
- release: v2.0-rc5 by @martin-belanger in #266
- test: Make run-time dependencies for tests optional by @martin-belanger in #267
- release: Sync dependencies with newly released libnvme 1.2. by @martin-belanger in #268
- staslib: Fix pyudev deadlock waiting for events forever loop. by @martin-belanger in #269
- staslib: Trim white spaces from transport identifiers by @martin-belanger in #272
- utils: New utility to convert "stafctl ls" output to nvme-cli discove… by @martin-belanger in #273
- staslib: Minor cosmetic changes to debug messages by @martin-belanger in #274
- test: Always run tests using libnvme subproject by @martin-belanger in #275
- release: Set version to 2.0 by @martin-belanger in #276
- utils: Add "Usage" to mk-discovery-conf.py by @martin-belanger in #277
- tests: Make sure that "import libnvme" succeeds to allow tests by @martin-belanger in #278
List of commits between v1.1.6 and v2.0:
Martin Belanger (56):
build: Add update-subprojects to Makefile
build: increase libnvme subproject revision number to pull libnvme 1.1
build: Rework mesong dependencies
conf: Improve config error handling
config: Add backward compatibility support
doc: Change read-the-docs Makefile to build documentation from source
doc: Clarify that Hosts don't have access to Fabric Zoning configuration
doc: Clean up. Unable to generate usable RST from HTML.
doc: Convert html to rst
doc: Fix broken path
doc: Fix missing HTML links
doc: Set html_extra_path in the Sphinx conf.py file
doc: Update documentation on 'udev-ru...
v2.0 Release Candidate 5
Summary
This release tries to fix missing pyudev events. The pyudev event handler was completely redesigned.
What's Changed
- build(deps): bump docker/metadata-action from 4.1.0 to 4.1.1 by @dependabot in #262
- Improve config error handling by @martin-belanger in #263
- packages: Update debian package info by @martin-belanger in #264
- Rework glibudev by @martin-belanger in #265
- release: v2.0-rc5 by @martin-belanger in #266
List of commits between v2.0-rc4 and v2.0-rc5:
Martin Belanger (8):
staslib: Add more debug messages
conf: Improve config error handling
packages: Update debian package info
build: Add update-subprojects to Makefile
staslib: Complete rewrite of glibudev.py
staslib: Remove glibudev.py
staslib: Use black to fix code coding style
release: v2.0-rc5
dependabot[bot] (1):
build(deps): bump docker/metadata-action from 4.1.0 to 4.1.1
Full Changelog: v2.0-rc4...v2.0-rc5