Releases: xnvme/xnvme
v0.0.20 / release-v2020.09.04
Release Notes: v0.0.20 / release-v2020.09.04
In the release assets you will find:
- xnvme-v0.0.20.src.tar.gz - Full source archive, no third-party dependencies or submodules!
- xnvme-v0.0.20.bin.tar.gz - Binary archive for Debian 10 / Ubuntu 18
- xnvme-v0.0.20*.deb - Binary Debian packages for installation on Debian 10 / Ubuntu 18
- test-results.zip - CIJOE test-results, logs, and reports
Known Issues
-
Fabrics
- Errors are observed when constructing payloads with an mdts exceeding
16 * 1024 bytes. Thus a work-around is applied bounding the derived
mdts_nbytes
associated with the device geometry.
- Errors are observed when constructing payloads with an mdts exceeding
-
Binaries
- xNVMe does not build with
-march=native
, however, SPDK/DPDK does. Thus,
when the xNVMe library "bundles" SPDK/DPDK and the binaries are linked,
then they can contain ISA-specific instructions.
If you invoke e.g.xnvme enum
and see the messageIllegal Instruction
, then this is why.
- xNVMe does not build with
-
be::spdk
- Does not build on Alpine Linux
- Re-initialization fails, e.g. repeatedly calling
xnvme_enumerate()
-
be::lioc
- Does not support command-option
XNVME_CMD_ASYNC
- Does not support command-option
-
be::liou
andbe::laio
- Simple-Copy-Command via the Kernel path is not available as support has not
been merged with upstream - Append via the Kernel path is not available as support has not been merged
with upstream
- Simple-Copy-Command via the Kernel path is not available as support has not
v0.0.20
-
Third-party libraries
- Updated to fio/v3.22
- Made fio available to the third-party SPDK build
- Added build of SPDK fio io-engine
- Fixed missing update of third-party version-strings
-
The xNVMe fio io-engine
- Several fixes to locking/serialization and error-handling
- Adjusted to changes in upstream ZBD support
- Changed the zoned fio-example to not be timebased, since it could lead to
the verify-job never getting to the verify-part when running on emulated
devices - Increased
ramp_time
in comparison-script - Fixed memory issue due to missing
get_file_size
-
Backends
- Added a backend
nwrp
the NULL-Async-IO backend, purpose of which is to
troubleshoot and benchmark the async-io path
- Added a backend
-
General
- A bunch of fixes including bad format-strings, out-of-bound / array
overflows, non-atomic locks, improper error-path handling
- A bunch of fixes including bad format-strings, out-of-bound / array
-
CI
- Added workflow generating docker-image with latest source, providing
everything needed to build xNVMe and latest qemu to deploy and experiment
with xNVMe on emulated NVMe devices - Added workflow doing Coverity scan and uploading results for analysis
- Added
fio
binary and SPDK fio io-engines as artifacts. During testing,
fio is needed, however, the test-environment might not have the same
version available as the io-engines are built against, usually xNVMe is
built against the latest release which might not have made it into the
package repos.
- Added workflow generating docker-image with latest source, providing
v0.0.19 / release-v2020.08.21
Release Notes: v0.0.19 / release-v2020.08.21
In the release assets you will find:
- xnvme-v0.0.19.src.tar.gz - Full source archive, no third-party dependencies or submodules!
- xnvme-v0.0.19.bin.tar.gz - Binary archive for Debian 10 / Ubuntu 18
- xnvme-v0.0.19*.deb - Binary Debian packages for installation on Debian 10 / Ubuntu 18
- test-results.zip - CIJOE test-results, logs, and reports
Known Issues
-
Fabrics
- Errors are observed when constructing payloads with an mdts exceeding
16 * 1024 bytes. Thus a work-around is applied bounding the derived
mdts_nbytes
associated with the device geometry.
- Errors are observed when constructing payloads with an mdts exceeding
-
Binaries
- xNVMe does not build with
-march=native
, however, SPDK/DPDK does. Thus,
when the xNVMe library "bundles" SPDK/DPDK and the binaries are linked,
then they can contain ISA-specific instructions.
If you invoke e.g.xnvme enum
and see the messageIllegal Instruction
, then this is why.
- xNVMe does not build with
-
be::spdk
- Does not build on Alpine Linux
- Re-initialization fails, e.g. repeatedly calling
xnvme_enumerate()
-
be::lioc
- Does not support command-option
XNVME_CMD_ASYNC
- Does not support command-option
-
be::liou
andbe::laio
- Simple-Copy-Command via the Kernel path is not available as support has not
been merged with upstream - Append via the Kernel path is not available as support has not been merged
with upstream
- Simple-Copy-Command via the Kernel path is not available as support has not
v0.0.19
-
Third-party libraries
- Updated to liburing/v0.7, SPDK/v20.07, fio/v3.21
- Updated docs describing new third-party requirements for building
- Adjusted patches and build-system to changes
-
Fabrics: SPDK-patches enabling zone-changes over Fabrics
-
Added public-domain CI
- Primarily using GitHUB Actions / Workflows
- Aux. analysis via lgtm.com
- Updated docs and scripts for CI via GitHUB Actions
-
Updated support for the NVMe Simple-Copy-Command (SCC)
- Targeting TP 2020.05.04 (Ratified)
- Added
tests/scc.c
testing for SCC-support, print identify fields, and
exercises the command itself
v0.0.18 / release-v2020.07.24
Release Notes: v0.0.18 / release-v2020.07.24
In the release assets you will find:
- xnvme-v0.0.18.src.tar.gz - Full source archive, no third-party dependencies or submodules!
- xnvme-v0.0.18.bin.tar.gz - Binary archive for Debian 10 / Ubuntu 18
- xnvme-v0.0.18*.deb - Binary Debian packages for installation on Debian 10 / Ubuntu 18
Known Issues
-
Fabrics
- Errors are observed when constructing payloads with an mdts exceeding
16 * 1024 bytes. Thus a work-around is applied bounding the derived
mdts_nbytes
associated with the device geometry.
- Errors are observed when constructing payloads with an mdts exceeding
-
be::spdk
- Does not build on Alpine Linux
-
be::lioc
- Does not support command-option
XNVME_CMD_ASYNC
- Does not support command-option
v0.0.18
-
Third-party libraries: SPDK
- Updated tracking of SPDK to current master(7dbaf54bf) and adjusted linkage
- Removed patches that are now upstream
- Updated nvmf/IOCS support
-
Fixed non-IOCS device identification
-
Improved async. interface tests
v0.0.17
Release Notes: v0.0.17 / release-v2020.06.26
In the release assets you will find:
- xnvme-v0.0.17.src.tar.gz - Full source archive, no third-party dependencies or submodules!
- xnvme-v0.0.17.bin.tar.gz - Binary archive for Debian 10 / Ubuntu 18
- xnvme-v0.0.17*.deb - Binary Debian packages for installation on Debian 10 / Ubuntu 18
v0.0.17
-
The xNVMe fio IO engine
- It now supports Zoned Devices!
It does so by mapping the Zoned Command Set to the ZBD Kernel abstraction
See: https://xnvme.io/docs/latest/tools/fio/index.html#fio-xnvme-io-engine-on-nvme-device-with-zoned-command-set - It now supports multiple devices!
Minor caveat; when using multiple-devices then one cannot mix backends - The engine was developed against fio-3.20, other versions might pose issues
with the IO-engine interface leading to segfaults when running or just
exiting. It should now produce a meaningful error-message when this
happens.
- It now supports Zoned Devices!
-
Added support for I/O Command Set aka Namespace Types
- Convenience functions to retrieve command-set specific identity
- Misc. definitions in the
libxnvme_spec.h
headers - Utilization of these via the CLI tools
xnvme
andlblk
- Patched SPDK to allow Command Set Selection
- Added identifier option "?css=0xHEX" for Controller Configuration
-
Added support for the Zoned Command Set aka Zoned Namespaces
- Support is encapsulated in the library header 'libznd.h'
- Convenience functions for Zoned Commands
For example: znd_cmd_mgmt_send(), znd_cmd_mgmt_send(), znd_cmd_append()
Helpers for retrieving zone-reports with and with descriptor extensions
See: https://xnvme.io/docs/latest/capis/znd_headers.html# - Support in fio via the xNVMe fio I/O Engine
See: https://xnvme.io/docs/latest/tools/fio/index.html#fio-xnvme-io-engine-on-nvme-device-with-zoned-command-set - CLI tool 'zoned' for convenient command-line management/inspection of zoned
devices
See: https://xnvme.io/docs/latest/tools/zoned/index.html
-
be:liou, the io_uring backend
- Added opcode-checking via the "new" probing feature
- Replaced READV/WRITEV with READ/WRITE
- Build of
be::liou
on Alpine Linux
-
Added
be::laio
the Linux/libaio backend- A great supplement to the IOCTL, io_uring, and SPDK backends
-
Added initial support for NVMe-oF / Fabrics
- xnvme_dev_open(): 'uri' argument on the form: "fab::?nsid=xyz"
- xnvme_enumerate(): 'sys_uri' argument on the form "fab::"
- Command-line utility: 'xnvme enum' takes '--uri "fab::"'
- See: https://xnvme.io/docs/latest/tutorial/fabrics.html
-
Added handling of extended-LBA
- Expanded
geometry
withlba_extended
informing whether
extended-LBAs are in effect. That is, whenflbas.bit4
is set AND the
currentlbaf.ms
is not zero. - Expanded
geometry
withlba_nbytes
, which will always contain the
size of an LBA in bytes. Whenlba_extended
is cleared to zero, then
lba_nbytes
islbaf.ds
, in bytes, whenlba_extended
is set to 1,
thenlba_nbytes
islbaf.ds + lbaf.ms
. - When
lba_extended
is cleared to 0 then the API I/O helpers expect to be
passeddbuf
, andmbuf
. Whenlba_extended
is set to 1, then the
API I/O helpers expectdbuf
to contain data and meta-data, and expect
mbuf
to beNULL
.
- Expanded
-
Third Party libraries
- The organization of these has changed such that tracking them and applying
patches is easier - The versions / git-revision info from bundled libraries bundled can now be
queried via the api calls 'xnvme_3p_ver_*()' - The CLI tool 'xnvme' produces these upon request via 'xnvme library-info'
- Most of the third-party libraries have been updated to, at the time of
writing, latest versions
- The organization of these has changed such that tracking them and applying
-
And a bunch of fixes
- xnvmec: fixed errno assignment and decode
- be: added comment on failed attempt at _blockdevice_geometry()
- Fixed a build-issue on ARM
- Updated backend documentation and added link to online docs in README
- ...
Known Issues
-
Fabrics
- Errors are observed when constructing payloads with an mdts exceeding
16 * 1024 bytes. Thus a work-around is applied bounding the derived
mdts_nbytes
associated with the device geometry.
- Errors are observed when constructing payloads with an mdts exceeding
-
be::spdk
- Does not build on Alpine Linux
-
be::lioc
- Does not support command-option
XNVME_CMD_ASYNC
- Does not support command-option
Release Notes: v0.0.16
Find online documentation at https://xnvme.io/docs/
In the GitHUB release assets you will find:
- xnvme-v0.0.16.src.tar.gz - Full source archive, no third-party dependencies or submodules.
- xnvme-v0.0.16.bin.tar.gz - Binary archive for Debian 10 / Ubuntu 18
- xnvme-v0.0.16*.deb - Binary Debian packages for installation on Debian 10 / Ubuntu 18
Caveats / Known Issues
-
be::liou
does not build on Alpine Linux -
be::spdk
does not build on Alpine Linux -
be::lioc
does not supportXNVME_CMD_ASYNC
v0.0.16
- Initial public release of xNVMe