-------
* 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 xNVMe fio IO engine
- It now supports Zoned Devices!
It does so by mapping the Zoned Command Set to the ZBD Kernel abstraction
- 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.
* 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:<HOST>:<PORT>?nsid=xyz"
- xnvme_enumerate(): 'sys_uri' argument on the form "fab:<HOST>:<PORT>"
- Command-line utility: 'xnvme enum' takes '--uri "fab:<HOST>:<PORT>"'
- See the "docs/tutorial/fabrics.rst" for details
* Added support for I/O Command Set
- 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``
* Added support for Namespace Types (TP 4056 2020-03-05) [verified]
- Patched SPDK to allow Command Set Selection
- Added identifier option "?css=0xHEX" for Controller Configuration
* Added support for the Zoned Command Set
- 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
- Support in fio via the xNVMe fio I/O Engine
- CLI tool 'zoned' for convenient command-line management/inspection of zoned
devices
* 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``.
* 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