I’m pleased to announce the next stable release of nbdkit. This
release concentrates on performance and fuzzing, along with numerous
other enhancements (full list below).
NBD — Network Block Device — is a protocol for accessing Block Devices
(hard disks and disk-like things) over a Network. nbdkit is a toolkit
for creating NBD servers.
The key features are:
* Multithreaded NBD server written in C with good performance.
* Minimal dependencies for the basic server.
* Liberal license (BSD) allows nbdkit to be linked to proprietary
libraries or included in proprietary code.
* Well-documented, simple plugin API with a stable ABI guarantee.
Lets you export “unconventional” block devices easily.
* You can write plugins in C, Lua, Perl, Python, OCaml, Ruby,
[new!] shell script or Tcl.
* Filters can be stacked in front of plugins to transform the output.
Clone source:
https://github.com/libguestfs/nbdkit
Download tarball:
http://download.libguestfs.org/nbdkit/1.10-stable/
(other downloads:
http://download.libguestfs.org/nbdkit/ )
New in this release:
- Implemented NBD_FLAG_CAN_MULTI_CONN which greatly improves
performance for clients that support it.
- Implemented NBD_OPT_INFO (Eric Blake).
- nbdkit-data-plugin and nbdkit-memory-plugin: By adding fine-grained
locking, these plugins now use the fully parallel thread model.
- nbdkit-cache-filter: The size of the cache can now be limited, and
the cache reclaims space using an LRU algorithm. It has also been
enhanced to support cache-on-read mode. The filter now uses a fully
parallel thread model.
- nbdkit-cow-filter: Use a fully parallel thread model.
- nbdkit-sh-plugin: Inline scripts:
https://rwmj.wordpress.com/2018/12/15/nbdkit-inline-scripts/
- nbdkit-sh-plugin: Full API version 2 is now supported.
- OCaml bindings: Full API version 2 is now supported.
- nbdkit-delay-filter allows you to specify the read, write, zero and
trim delays individually.
- nbdkit-curl-plugin: Add support for connecting to servers over Unix
domain sockets.
- Bash tab completion has been improved: Partial plugin names are
expanded correctly, and plugin parameters containing '-' work.
- Public header files can now be consumed by ISO C90 compilers (but
GCC or Clang is still required to compile nbdkit itself).
- A better non-cryptographically secure pseudo-random number generator
(xoshiro256** 1.0) is now used on all platforms, replacing previous
uses of random(3).
- Fuzzing using American Fuzzy Lop is now supported, and was carried
out, resulting in one error being found in the server (not security
related).
- New nbdkit-xz-filter: This replaces nbdkit-xz-plugin which will be
removed in nbdkit 1.12.
- New nbdkit-loop(1) man page documenting how to use nbdkit for loop
mounts. See also:
https://fosdem.org/2019/schedule/event/nbdkit/
- New nbdkit-full-plugin: Returns ENOSPC on every request.
- attribute((format)), attribute((nonnull)) and attribute((sentinel))
are used in internal header files to improve code quality.
- Logging using %m now works on all platforms, not just on Linux with
glibc (Eric Blake).
- VPATH builds partially supported (Eric Blake).
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW