Skip to content

Releases: linux-nvme/nvme-stas

v2.2

16 Mar 18:00
c128b8a
Compare
Choose a tag to compare

Summary

This release adds support for in-band authentication.

What's Changed

New Contributors

Full Changelog: v2.1.3...v2.2

v2.1.3

27 Feb 22:19
f13cca5
Compare
Choose a tag to compare

Summary

  • Better handling of udev events and elimination of race condition between nvme-stas and nvme-cli.
  • Code format is now enforced by black. The command make black has been added to help developers make sure their contributions follow the right format.

What's Changed

Full Changelog: v2.1.2...v2.1.3

v2.1.2

24 Jan 17:03
318302b
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v2.1.1...v2.1.2

v1.1.9

24 Jan 16:36
ab3716a
Compare
Choose a tag to compare

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

Full Changelog: v1.1.8...v1.1.9

v2.1.1

09 Jan 17:07
95a2589
Compare
Choose a tag to compare

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

Full Changelog: v2.1...v2.1.1

v2.1

06 Dec 18:25
523ce71
Compare
Choose a tag to compare

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

Full Changelog: v2.0...v2.1

v1.1.8

02 Dec 16:18
cfffc69
Compare
Choose a tag to compare

Summary

This release addresses SuSE's issue 1205873.

What's Changed

Full Changelog: v1.1.7...v1.1.8

v1.1.7

11 Nov 17:44
0c6d592
Compare
Choose a tag to compare

Summary

This release addresses SuSE's issue 1204975.

What's Changed

Full Changelog: v1.1.6...v1.1.7

v2.0

03 Nov 14:27
ed799b4
Compare
Choose a tag to compare

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).
  • 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 by disconnect-scope and disconnect-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).
  • When the host's symbolic name is changed in sys.conf, allow re-issuing the DIM command (register with DC) on a reload signal (systemctl reload stafd).

  • Replace blacklist= by exclude= is stafd.conf and stacd.conf. Warning: this may create an incompatibility for people that were using blacklist=. Althoughblacklist= will continue to be supported for a while (~2 years) it would be a good idea to manually replace it by exclude=.

  • Change TID.__eq__() and TID.__ne__() to recognize a TID object even when the host-iface is not set. This is to fix system audits where nvme-stas would not recognize connections made by nvme-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, and host-iface). nvme-stas can scan the sysfs (/sys/class/nvme/) to find exiting NVMe connections. It relies on the address 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 the host-iface when making connections but nvme-cli typically does not. Instead, nvme-cli relies on the routing table to select the interface. This creates a discrepancy between the address attribute of connections made by nvme-cli and those made by nvme-stas (i.e. host_iface= is missing for nvme-cli connections). And this results in nvme-stas not being able to recognize connections made by nvme-cli. Two solutions have been proposed to workaround this problem:

    • First, a short term solution changes TID.__eq__() and TID.__ne__() so that the host-iface has a lesser weight when comparing two TIDs. This way, the TID of a connection created by nvme-cli can be compared to the TID of a connection made with nvme-stas and still result in a match. The downside to this approach is that a connection made with nvme-cli that is going over the wrong interface (e.g. bad routing table entry), will now be accepted by nvme-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 the sysfs. This will be identified by the key=value pair "src_addr=[ip-address]" in the address 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.

What's Changed

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...
Read more

v2.0 Release Candidate 5

27 Oct 16:30
ead9120
Compare
Choose a tag to compare
Pre-release

Summary

This release tries to fix missing pyudev events. The pyudev event handler was completely redesigned.

What's Changed

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