Skip to content

Releases: xnvme/xnvme

v0.7.4

04 Feb 05:55
Compare
Choose a tag to compare

Release Notes: v0.7.4

In the release assets you will find:

  • xnvme-0.7.4.tar.gz - Source archive without subprojects

  • xnvme-fat-0.7.4.tar.gz - Full source archive including SPDK sources

  • xnvme-py-sdist-0.7.4.tar.gz - Python packages (ctypes)

  • test-results-*.tar.gz - CIJOE test-results, logs, and reports

  • bench-results.tar.gz - CIJOE report for automated performance evaluation

  • perf.pdf - Relative performance evaluation of xNVMe in SPDK (bdev_xnvme)

  • Python: https://pypi.org/project/xnvme

  • Rust: https://crates.io/crates/xnvme-sys

What's Changed

  • docs(release-checklist): add description of Rust publication by @safl in #397
  • feat(cijoe/tests): test ioworker on fabrics by @karlowich in #400
  • feat(CI): enable ramdisk tests on macos by @karlowich in #347
  • update library doc by @hmi-jeon in #403
  • In preparation for packaging by @safl in #405
  • Packaging by @safl in #388
  • feat(cijoe): bump to v0.9.28 by @safl in #408
  • Add ramdisk COPY command by @mbrsamsung in #410
  • feat(queue): add a default NOOP callback by @safl in #413
  • fix(gha): ignore status of Debian package build by @safl in #412
  • feat(cijoe/configs): add config for arm by @karlowich in #407
  • feat(be/spdk): add async/sync vectored io by @karlowich in #376
  • Add new compatibility table to docs, changes from requirements.txt to poetry, fixes issues with sphinx theme not being included by @mbrsamsung in #417
  • Makeover by @safl in #418
  • fix(cijoe/configs): correct the linux.repository.remote by @safl in #421
  • feat(cijoe/workflow): add provision workflow without auto-commit by @safl in #422
  • fix(cijoe/arm): remove fio prefix by @karlowich in #423
  • feat(mk): add helper producing documentation by @safl in #424
  • feat(be): extend backend interface with completion_fd() by @a-malakar in #396
  • refactor: move identification and geo to device by @safl in #409
  • feat(cijoe): test fio using iovec by @karlowich in #427
  • Miscellaneous fixes by @karlowich in #428
  • End to end data protection support by @ankit-sam in #378
  • v0.7.4 rc1 by @safl in #429

New Contributors

Full Changelog: v0.7.3...v0.7.4

v0.7.3

21 Nov 22:15
Compare
Choose a tag to compare

Release Notes: v0.7.3

In the release assets you will find:

  • xnvme-0.7.3.tar.gz - Full source archive including SPDK sources
  • xnvme-py-sdist-0.7.3.tar.gz - Python packages (ctypes)
  • test-results-*.tar.gz - CIJOE test-results, logs, and reports
  • bench-results.tar.gz - CIJOE report for automated performance evaluation

What's Changed

  • docs(release-checklist): add description on Python + Rust publication by @safl in #384
  • fix(rust): use header found via system_deps() by @safl in #383
  • Pseudo commands support by @vikash-k5 in #353
  • get/show controller-registers using backends: [linux,spdk] by @safl in #386
  • feat(be/spdk): enable KV over nvmf by @karlowich in #345
  • fix(build): remove unused python import by @karlowich in #393
  • fix(rust): add loop-breakout when header is found by @safl in #391
  • Remove metadata buffer checks by @ankit-sam in #395
  • fix(nvm): change sdlba to slba for write_zeroes by @karlowich in #394
  • v0.7.3rc1 by @safl in #392

Full Changelog: v0.7.2...v0.7.3

v0.7.2

13 Nov 11:27
Compare
Choose a tag to compare

Release Notes: v0.7.2

In the release assets you will find:

  • xnvme-0.7.2.tar.gz - Full source archive including SPDK sources
  • xnvme-py-sdist-0.7.2.tar.gz - Python packages (ctypes)
  • test-results-*.tar.gz - CIJOE test-results, logs, and reports
  • bench-results.tar.gz - CIJOE report for automated performance evaluation

Changelog

What's Changed

New Contributors

Full Changelog: v0.7.1...v0.7.2

v0.7.1

06 Sep 07:41
Compare
Choose a tag to compare

Release Notes: v0.7.1

In the release assets you will find:

  • xnvme-0.7.1.tar.gz - Full source archive including SPDK sources
  • xnvme-py-sdist-0.7.1.tar.gz - Python packages (ctypes)
  • test-results-*.zip - CIJOE test-results, logs, and reports

Changelog

What's Changed

  • fix compilation warning for unused parameters by @ankit-sam in #302
  • libconfig: remove deprecated subprojects from library info by @ankit-sam in #301
  • Windows common fixes and document offering by @rs-sam in #300
  • Python package deployment by @safl in #298
  • allow overriding library loading by env var by @jwdevantier in #308
  • fix(gha): adjust conditions for build-and-test by @safl in #312
  • catch exc iff pkg-config is not in path by @jwdevantier in #306
  • fix(py/bindings): use textwrap.dedent for snippets by @jwdevantier in #309
  • Fix KVS test by @karlowich in #311
  • Passthru cli makeover by @safl in #317
  • feat(win/ioring): add write IO ioring backend support by @rs-sam in #314
  • Fix breakage of the automated doc. generator by @safl in #321
  • fix(cijoe/configs): adjust to the revamping of cijoe-pkg-qemu by @safl in #323
  • fix(build/fedora): add zlib-devel dependency by @karlowich in #325
  • be:macos: add missing include of mach_error.h by @Baekalfen in #329
  • Bump toolchain, distros. and drop CentOS 7 by @safl in #332
  • fix(toolbox/pkgs): add 'awk' on Tumbleweed by @safl in #333
  • fix(meson): change license to 'BSD-3-Clause' by @safl in #334
  • Toolbox cleanup and third-party integration by @safl in #335
  • vfio/map unmap tests by @a-malakar in #315
  • feat(be/aio): add aio ring to improve performance by @karlowich in #303
  • feat(be/uring): Improve performance with batching by @karlowich in #318
  • fix(cijoe): change the script that starts qemu by @safl in #338
  • CHANGELOG: update for v0.7.1 by @safl in #337

New Contributors

Full Changelog: v0.7.0...v0.7.1

v0.7.0

20 Jun 13:24
Compare
Choose a tag to compare

Release Notes: v0.7.0

In the release assets you will find:

  • xnvme-v0.7.0.tar.gz - Full source archive, no third-party source missing!
  • xnvme-core-0.7.0.tar.gz - Python packages (ctypes)
  • test-results-*.zip - CIJOE test-results, logs, and reports

Changelog

v0.6.0

25 Oct 11:58
Compare
Choose a tag to compare

Release Notes: v0.6.0

In the release assets you will find:

  • xnvme-v0.6.0.tar.gz - Full source archive, no third-party source missing!
  • python-xnvme-pkg.zip - Python packages (ctypes, cython-header, cython)
  • test-results-*.zip - CIJOE test-results, logs, and reports

Changelog

Consult commit messages for details.

v0.5.0

29 Sep 13:24
Compare
Choose a tag to compare

Release Notes: v0.5.0

In the release assets you will find:

  • xnvme-v0.5.0.tar.gz - Full source archive, no third-party source missing!
  • test-results-*.zip - CIJOE test-results, logs, and reports

v0.5.0

A bit of expansion in the application of xNVMe with support for macOS, a
ramdisk backend, revival of Python language bindings and a refresh of the docs
on NVMe-over-Fabrics.

  • API

    • Removed helpers for SGL
    • Add 'subnqn' to 'xnvme_ident', useful for NVMe-oF
    • Add 'hostnqn' to 'opts', useful for NVMe-oF
    • Add support directive-receive and write-with-directives
    • Spec adjusted for NVMe 2.0, still more work needed in this area
  • Third-party

    • Bumped fio to v3.32
    • Bumped SPDK to v22.05
    • Removed liburing, now relies on on-system library instead of
      vendoring/bundling, documentation is updated to assist with library
      installation
  • Tooling

    • Re-working testing using cijoe 0.9+, that is, switching to CIJOE/pytest for
      testing an CIJOE workflows for instrumentation
    • liburing is no longer bundled with xNVMe, that is, xNVMe now links with
      liburing as discovered on the system via pkg-config. This is done to avoid
      symbol collisions for applications linking or loading liburing and xNVMe.
  • be:linux:async:libaio

    • When 'opts.poll_io' is set then poke() will return immmediatly and now wait
      for completions. This allows the use of trading CPU for more IOPS and lower
      per command latency.
  • Additional user-space NVMe driver support via libvfn

    • Added 'be:vfio' providing another user-space driver via libvfn
  • Preliminary support for macOS

    • Initial implementation using the "core" I/O mechanisms of sync-io, async
      emulation and the threadpool
    • Does enumeration of NVMe devices through the limited interface provided for
      user-space by the macOS kernel
    • Utilizes what is avaiable for admin-command submision
  • Prelimiary support for a "ramdisk" device

    • be:ramdisk: added a backend mimicing the behavior of an NVMe NVM namespace
    • Intended as a test-vehicle providing a "device" without requiring anything
      but the consumption of main memory of the system
    • I/O is "stored" using main-memory
  • Revival of the xNVMe Python language bindings

    • A re-introduction of the Python bindings, these are now generated and thus
      provide access to the entire xNVMe C API
    • They are added to the testing infrastructure ensuring that they are aligned
      with the library
    • In addition to simple ctypes bindings, then cython headers and bindings
      based on Cython are provided
  • Documentation

    • Refreshed the NVMe-over-Fabrics tutorial
    • Expanded with descriptions on installing liburing
    • Expanded with a section for the WIP Python bindings

v0.4.0

27 Jun 12:03
Compare
Choose a tag to compare

Release Notes: v0.4.0

In the release assets you will find:

  • xnvme-v0.4.0.tar.gz - Full source archive, no third-party source missing!
  • test-results-*.zip - CIJOE test-results, logs, and reports

v0.4.0

This is a release with the sole purpose of changing the liburing subproject from tracking 'master' to the stable release that is liburing-2.2.

Known Issues

See the file named ISSUES in the root of the repository.

v0.3.0

18 May 19:46
Compare
Choose a tag to compare

Release Notes: v0.3.0

In the release assets you will find:

  • xnvme-v0.3.0.tar.gz - Full source archive, no third-party source missing!
  • test-results-*.zip - CIJOE test-results, logs, and reports

v0.3.0

This main feature of this release is the alignment of the io_uring_cmd
implementation with the io_uring big-sqe/big-cqe approach to asynchronous
passthru of NVMe commands.

NOTE: the tracking of the liburing repository/subproject is changed from the
fixed tag liburing-2.1 to the master branch. Thus, in case you
experience liburing related build-issues with this release, then it is most
likely due to changes on master. As soon as liburing-2.2 is released,
xNVMe will be released as well going back to stable tracking. Thus, do not pin
your project to the xNVMe project tag for v0.3.0 if you rely on the
io_uring functionality.

  • Asynchronous Passthru of NVMe Commands via io_uring

    • There are no API changes to adjust to, the changes are encapsulated inside
      the implementation of be:linux:async:ucmd aka async=io_uring_cmd.
    • The previous version of io_uring_cmd used indirect-commands, that is,
      the io_uring-sqe contained a pointer to the NVMe-command. This approach of
      passthrough via io_uring has been superseeded by the
      big-sqe/big-cqe approach with the NVMe-sqe embedded within the
      io_uring-sqe, and similar for the NVMe-cqe inside the io_uring-cqe.
    • This requires changes to how the io_uring is setup, this task is
      delegated to liburing and the subproject-wrap now tracks liburing
      master to do this.
  • API

    • Fixed xnvme_enumerate() when NULL was passed as opts, it now
      uses xnvme_default_opts() when no opts are given
    • Misc. fixes to docstrings missing descriptions
  • cmd:

    • Fixed missing full-guard on full-guard in xnvme_cmd_passv()
  • be:async:{emu,thrpool}: several fixes to command-processing

    • Fixed missing setup of completion errors
    • Fixed missing empty-guard in cmd_io{v}()
  • fio IO engine

    • 3p:fio: bumped to v3.30
    • tools:fioe: fixed issue with iovec-payloads
    • tools:fioe: cleanup and alignment with upstream xNVMe fio IO engine
    • docs: removed deprecated information and re-written with usage examples
  • tests:io_worker

    • Added a basic io_worker to verify the behavior of the
      submit-upon-completion
  • tools:xdd

    • The xdd tool now provides an offset argument (in bytes), previously
      it started from 0
  • Documentation

    • Re-introduced the tutorial section containing a guide to dynamically
      load xNVMe from C and Python
    • Added a Contributors section containing notes useful for first-time
      Contributors

Known Issues

See the file named ISSUES in the root of the repository.

v0.2.0

01 Apr 11:29
Compare
Choose a tag to compare

In the release assets you will find:

  • xnvme-v0.2.0.tar.gz - Full source archive, no third-party source missing!
  • test-results-*.zip - CIJOE test-results, logs, and reports

v0.2.0

Main feature introduction is vectored I/O across a wider set of system
interfaces, that is via ioctl(), io_uring (ucmd) and preadv()/pwritev()
fallback.

  • Support for vectored I/O via Linux: ioctl(), psync, and io_uring_cmd

  • API

    • add xnvme_cmd_passv()
    • rename rename xnvme_queue_wait() to xnvme_queue_drain()
  • be:io_uring_cmd:

    • Enabled NVME_IOCTL_IO64_CMD by default, when available for cmd_io()
    • Added support NVME_IOCTL_IO64_CMD_VEC over io_uring via cmd_iov()
  • be:linux:nvme:

    • Enabled NVME_IOCTL_IO64_CMD by default, when available for cmd_io()
    • Added support NVME_IOCTL_IO64_CMD_VEC via cmd_iov()
    • Normalized error-handling for NVMe-ioctl interfaces, ioctl() as well as
      io_uring_cmd
  • be:thrpool:

    • Added handling of cmd_iov(), providing a threadpool based fallback when
      io_uring_cmd is not available
  • be:emu:

    • Added handling of cmd_iov(), providing a pseudo-async fallback when
      io_uring_cmd is not available
  • Re-worked git-pre-commit using the 'pre-commit' framework

    • mk: added helpers invoking 'pre-commit', 'make format'/'make format-all'
    • mk: removed auto-setup of git-hooks
    • git: removed .githooks/pre-commit
  • xNVMe fio io-engine

    • tools:fioe: use calloc instead of malloc
    • tools:fioe: changes according to fio coding conventions
  • Library introspection

    • fix incorrect generation of third-party information
    • replace xnvme_3p with xnvme_libconf
    • add all build-configs to xnvme_libconf
  • Command-line argumenter parser

    • xnvmec: fix missing setup of --direct
  • CLI-fixes

    • zoned: fix description for identify namespace command
  • Toolbox

    • mk: add script generating help-text on Makefile targets
    • meson: only do whole-archive in pkg-config when SPDK is enabled
    • scripts: replace astyle with clang-format
    • pcf: the pre-commit-framework is available for xNVMe

Known Issues

See the file named ISSUES in the root of the repository.