[Libguestfs] ANNOUNCE: nbdkit 1.10 - an NBD server toolkit with stable plugin API and permissive license

Richard W.M. Jones rjones at redhat.com
Fri Jan 18 16:36:08 UTC 2019

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:

- 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

- 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:

- 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).


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.

More information about the Libguestfs mailing list