Skip to content

Releases: xnvme/xnvme

v0.0.20 / release-v2020.09.04

03 Sep 13:05
Compare
Choose a tag to compare

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.
  • 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 message Illegal Instruction, then this is why.
  • 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
  • be::liou and be::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

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
  • General

    • A bunch of fixes including bad format-strings, out-of-bound / array
      overflows, non-atomic locks, improper error-path handling
  • 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.

v0.0.19 / release-v2020.08.21

19 Aug 20:46
Compare
Choose a tag to compare

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.
  • 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 message Illegal Instruction, then this is why.
  • 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
  • be::liou and be::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

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

24 Jul 10:45
Compare
Choose a tag to compare

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.
  • be::spdk

    • Does not build on Alpine Linux
  • be::lioc

    • Does not support command-option XNVME_CMD_ASYNC

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

26 Jun 10:41
Compare
Choose a tag to compare

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.
  • 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 and lblk
    • 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

  • 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

  • Added handling of extended-LBA

    • Expanded geometry with lba_extended informing whether
      extended-LBAs are in effect. That is, when flbas.bit4 is set AND the
      current lbaf.ms is not zero.
    • Expanded geometry with lba_nbytes, which will always contain the
      size of an LBA in bytes. When lba_extended is cleared to zero, then
      lba_nbytes is lbaf.ds, in bytes, when lba_extended is set to 1,
      then lba_nbytes is lbaf.ds + lbaf.ms.
    • When lba_extended is cleared to 0 then the API I/O helpers expect to be
      passed dbuf, and mbuf. When lba_extended is set to 1, then the
      API I/O helpers expect dbuf to contain data and meta-data, and expect
      mbuf to be NULL.
  • 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
  • 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.
  • be::spdk

    • Does not build on Alpine Linux
  • be::lioc

    • Does not support command-option XNVME_CMD_ASYNC

Release Notes: v0.0.16

07 Apr 18:16
Compare
Choose a tag to compare

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 support XNVME_CMD_ASYNC

v0.0.16

  • Initial public release of xNVMe