Releases: xnvme/xnvme
Release Notes: v0.7.5
In the release assets you will find:
-
xnvme-0.7.5.tar.gz - Source archive without subprojects
-
xnvme-fat-0.7.5.tar.gz - Full source archive including SPDK sources
-
xnvme-py-sdist-0.7.5.tar.gz - Python packages (ctypes)
-
test-results-*.tar.gz - CIJOE test-results, logs, and reports
-
report-latency*.pdf - Performance report for latency
-
report-scalability.pdf - Performance report for scalability using xNVMe in SPDK (bdev_xnvme)
-
Python: https://pypi.org/project/xnvme
-
Conda-Forge: https://anaconda.org/conda-forge/libxnvme
What's Changed
- feat(gitignore): ignore .clangd by @karlowich in #433
- Update docs related to packaging by @karlowich in #431
- fix(tests/copy): send correct amount of Source Range entries by @karlowich in #432
- fix(pkgs/gentoo): rename dev-util/meson to dev-build/meson by @karlowich in #436
- Misc fixes by @karlowich in #440
- New latency performance testing by @mbrsamsung in #420
- fix assertion failure with xnvme enum by @ankit-sam in #445
- fix(spec): add stc to write_zeroes by @NaddiNadja in #448
- fix(meson/spdk): adjust apple silicon check on linux by @NaddiNadja in #451
- Add support for compare by @NaddiNadja in #449
- Refactor identification by @karlowich in #439
- Clean up API documentation by @karlowich in #444
- fix(docs): update compatibility table by @NaddiNadja in #454
- fix reclaim unit handle status output format by @ankit-sam in #456
- fix(man): install man-page for xnvme-driver by @karlowich in #459
- fix(xnvme/cli): handle LFLG type arguments in xnvme_cli_assign_arg by @NaddiNadja in #457
- feat(meson): added unit tests by @NaddiNadja in #455
- fix(cijoe): add iommu to default arm config by @karlowich in #452
- fix(tests/map): write out macro by @karlowich in #464
- fix(cijoe/lat): fix linux config by @NaddiNadja in #461
- Advance perf report by @karlowich in #453
- build(deps): Bump idna from 3.6 to 3.7 in /docs/autogen by @dependabot in #460
- fix(tools/xnvme/idfy): only add nsid if needed by @karlowich in #466
- feat(spdk): add keep_alive_timeout to opts by @LiadOz in #467
- feat(build/spdk): bump to v24.01 by @karlowich in #471
- Documentation re-work by @safl in #430
- Adjust website / docs. deployment script to the new theme by @safl in #476
- Documentation overhaul: fix build-warnings by @safl in #478
- Revisit how we handle the shared library in Meson by @karlowich in #474
- Documentation overhaul: add user-selectable versions and current site by @safl in #477
- fix(ci/macos): drop version 11, add version 14 by @karlowich in #481
- documentation overhaul: version selection with visual indicators by @safl in #482
- documentation overhaul: quick pass cleanup by @safl in #483
- Bump libvfn by @karlowich in #489
- fix(docs/autogen): always populate site-root by @safl in #488
- Support for latency benchmarking on FreeBSD by @NaddiNadja in #487
- feat(be/wpdk): drop support for WPDK (SPDK on Windows) by @safl in #484
- fix(cijoe/tests): remove unnecessary skip by @karlowich in #493
- fix(cijoe/version): bump to v0.9.34 by @NaddiNadja in #497
- feat(dev): add check of 'dev_uri' in xnvme_dev_open() by @safl in #499
- feat(pcf,cijoe,python/tests,be/nosys): update pcf and re-format by @safl in #500
- feat(ci): build with debug enabled by @karlowich in #496
- feat(build/spdk): bump to v24.05 by @karlowich in #495
- CI: Add missing devices to configs by @karlowich in #485
- xNVMe CLI: Clean up sanitize by @karlowich in #498
- Clean up SPDK enumeration by @karlowich in #492
- feat(vfio): add support for iov by @karlowich in #486
- Fix FreeBSD build errors by @karlowich in #513
- feat(meson): change spdk to be optional by @karlowich in #511
- documentation overhaul by @safl in #502
- Latency report by @NaddiNadja in #509
- Add Freebsd 14 pkg-scripts and ci verification job by @safl in #501
- fix(cijoe/latency): use upstream spdk for latency report by @NaddiNadja in #514
- fix(cijoe/latency): remove redundant git pull command by @NaddiNadja in #516
- feat(cijoe/bench): add latency barplot for SPDK report by @NaddiNadja in #515
- fix(cijoe/latency): remove wrong fio parameters by @NaddiNadja in #519
- Rewrite OS backend sections by @karlowich in #521
- Fix spurious failures by @karlowich in #524
- feat(docs/tutorials): add bdev_xnvme usage-guide by @NaddiNadja in #520
- feat(cijoe/bench): add resource utilization plots to report by @NaddiNadja in #517
- Remove outdated/irrelevant (and fix simple) todos by @karlowich in #527
- Run latency benchmarking on Windows by @NaddiNadja in #522
- Release candidate 1 for v0.7.5 by @safl in #531
New Contributors
- @NaddiNadja made their first contribution in #448
- @dependabot made their first contribution in #460
Full Changelog: v0.7.4...v0.7.5
v0.7.4
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
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
- @hmi-jeon made their first contribution in #403
- @mbrsamsung made their first contribution in #410
Full Changelog: v0.7.3...v0.7.4
v0.7.3
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
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
- vfio: fix completion result for sync io by @Baekalfen in #341
- fix(mk): remove deprecated helper-targets and adjust config-slim by @safl in #340
- fix: Adjust format-strings by @karlowich in #342
- feat(be): expand backend-interface with pseudo-commands by @safl in #322
- Windows: SPDK backend support by @rs-sam in #275
- feat(build/spdk): use debug for SPDK if enabled for xNVMe by @karlowich in #352
- Misc. fixes and refactoring by @safl in #351
- feat(cijoe): add workflow for provisioning via git by @karlowich in #354
- fix(be/libaio): remove comparison warning by @karlowich in #355
- feat(build/spdk): bump to v23.01 by @karlowich in #356
- tutorial on fdp support in xNVMe by @ankit-sam in #357
- feat(build): only install manpages/completions for installed binaries by @karlowich in #364
- feat(be/vfio): bump libvfn to v3.0.0 by @birkelund in #366
- feat(be/liburing): turn on batching by default by @karlowich in #368
- fix(docs): add fdp-tutorial to index by @safl in #367
- fix(toolbox/pkgs): build libvfn as release by @karlowich in #369
- Autoperf by @safl in #358
- bump libvfn to v3.0.0-rc2 by @birkelund in #374
- fix(cijoe,python): add 'vfio' to backend-test-matrix by @safl in #370
- Rust bindings by @s-rajpoot in #316
- feat(build/spdk): bump to v23.09 by @karlowich in #372
- v0.7.2 Release Candidate by @safl in #380
New Contributors
- @s-rajpoot made their first contribution in #316
Full Changelog: v0.7.1...v0.7.2
v0.7.1
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
- @jwdevantier made their first contribution in #308
Full Changelog: v0.7.0...v0.7.1
v0.7.0
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
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
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.
- Re-working testing using cijoe 0.9+, that is, switching to CIJOE/pytest for
-
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.
- When 'opts.poll_io' is set then poke() will return immmediatly and now wait
-
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
- Initial implementation using the "core" I/O mechanisms of sync-io, async
-
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
- A re-introduction of the Python bindings, these are now generated and thus
-
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
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
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 ofbe:linux:async:ucmd
akaasync=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 viaio_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 toliburing
and the subproject-wrap now tracks liburing
master
to do this.
- There are no API changes to adjust to, the changes are encapsulated inside
-
API
- Fixed
xnvme_enumerate()
whenNULL
was passed asopts
, it now
usesxnvme_default_opts()
when noopts
are given - Misc. fixes to docstrings missing descriptions
- Fixed
-
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
- Added a basic io_worker to verify the behavior of the
-
tools:xdd
- The
xdd
tool now provides anoffset
argument (in bytes), previously
it started from 0
- The
-
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
- Re-introduced the
Known Issues
See the file named ISSUES
in the root of the repository.