[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1038161: ITP: xnvme -- Cross-platform libraries and tools for efficient I/O and low-level control.



Package: wnpp
Severity: wishlist
Owner: "Simon A. F. Lund" <os@safl.dk>
X-Debbugs-Cc: debian-devel@lists.debian.org, os@safl.dk

* Package name    : xnvme
  Version         : 0.7.0
  Upstream Author : Simon A. F. Lund <os@safl.dk>
* URL             : https://xnvme.io/
* License         : BSD
  Programming Lang: C
  Description     : Cross-platform libraries and tools for efficient I/O and low-level control.

xNVMe provides a library to program storage devices efficiently from
user space and tools to interact with them. xNVMe is strongly motivated
by the emergence of storage devices providing I/O commands beyond those
of read/write. This is the "NVMe" part of the name.

The data plane or I/O layer is a minimal-cost abstraction on top of
sync-io with thread pools, POSIX aio, Linux libaio, io_uring,
io_uring_cmd, to name the most popular interfaces available via xNVMe on
Linux.

A control plane or Admin layer provides flexibility and low-level
control via APIs for admin commands and device management. On Linux,
these are implemented using interfaces such as ioctl(), io_uring_cmd,
and vfio-pci.

This is one key value point of xNVMe, providing a unified I/O and Admin
API interface for storage devices on top of the myriad of interfaces
available on todays operating systems.

On top of these are command-line utilities, including "zoned" and "kvs".
These provide NVMe-command-set interaction available at the fingertips
of the command-line.

The command-line utilities are related to those of nvme-cli. In this
area we are actively working on combining the efforts on the
command-line interface. On the library-side, then xNVMe is related to
the before-mentioned I/O libraries, which it encapsulates. However, it
goes beyond serving an abstraction on top, such that applications
implemented using xNVMe can run on platforms other than Linux.

Afaik. Then xNVMe is the only library providing a cross-platform storage
programming interface. Supporting "traditional" storage and optimized
for NVMe. This is the "x" part of the name for "cross" platform.

I plan to maintain the package as part of the release process of xNVMe itself,
thus making it an integral part of the CI to build, test, and verify the
package in "lockstep" with the development of xNVMe.

I am seeking help/guidance, possibly from a sponsor / co-maintainer.


Reply to: