ANNOUNCE: libnbd 1.4 - high performance NBD client library

Richard W.M. Jones rjones at redhat.com
Tue Aug 25 21:20:39 UTC 2020


I'm pleased to announce the release of libnbd 1.4.0,
a high performance Network Block Device (NBD) client library.


Key features of libnbd:

 * Synchronous API for ease of use.

 * Asynchronous API for writing non-blocking, multithreaded clients.
   You can mix both APIs freely.

 * High performance.

 * Minimal dependencies for the basic library.

 * Well-documented, stable API.

 * Bindings in several programming languages.

 * Shell (nbdsh) for command line and scripting.


Git:      https://github.com/libguestfs/libnbd
Download: https://download.libguestfs.org/libnbd/1.4-stable/
Release notes:
          https://libguestfs.org/libnbd-release-notes-1.4.1.html

Fedora:   https://koji.fedoraproject.org/koji/packageinfo?packageID=28807
Debian:   https://packages.debian.org/libnbd


*** Release notes for libnbd 1.4 ***

       These are the release notes for libnbd stable release 1.4.  This
       describes the major changes since 1.2.

       libnbd 1.4.0 was released on 25 August 2020.

   Security
       There were no security issues found in this release.  If you find a
       security issue, please read SECURITY in the source (online here:
       https://github.com/libguestfs/libnbd/blob/master/SECURITY).  To find
       out about previous security issues in libnbd, see libnbd-security(3).

   New APIs
       nbd_set_opt_mode(3)
       nbd_get_opt_mode(3)
       nbd_aio_is_negotiating(3)
           libnbd 1.4 adds a new “negotiating” state during NBD handshaking.
           For backwards compatibility programs must request this before
           starting the connection by calling nbd_set_opt_mode(3).  You can
           find out if the connection is in this state by calling
           nbd_aio_is_negotiating(3).

           For an in-depth description of how this extra state can be used to
           negotiate server options, see "CONTROLLING NEGOTIATION" in
           libnbd(3).

       nbd_aio_opt_abort(3)
       nbd_opt_abort(3)
           During the negotiating state, abort the connection.

       nbd_aio_opt_go(3)
       nbd_opt_go(3)
           During the negotiating state, complete the handshake.

       nbd_aio_opt_info(3)
       nbd_opt_info(3)
           During the negotiating state, request full information about the
           server export.

       nbd_aio_opt_list(3)
       nbd_opt_list(3)
           During the negotiating state, request the list of exports that the
           server provides.

       nbd_get_block_size(3)
           Return the minimum, preferred or maximum block size constraints for
           requests sent to the server.

       nbd_get_canonical_export_name(3)
           Return the canonical export name that the server defaults to.  This
           information may only be available if you call nbd_set_full_info(3)
           before connecting.

       nbd_get_export_description(3)
           Return the optional text description of the current export.  This
           information may only be available if you call nbd_set_full_info(3)
           before connecting.

       nbd_set_full_info(3)
       nbd_get_full_info(3)
           Enable extended information about exports from the server.

       Thanks: Eric Blake for all of the new APIs.

   New features
       Bindings are now available in the Go programming language.

       FreeBSD and OpenBSD are now fully supported platforms.

       Bash tab completion is available for all of the command line tools.

   Documentation
       Verbatim text in man pages that wrapped over several lines is now
       typeset correctly.

       Links within the documentation have been enhanced, and are now checked
       for correctness.

   Tools
       New nbdcopy(1) tool lets you copy between an NBD server and a local
       file, or stream to and from an NBD server.

       New nbdinfo(1) tool lets you print extended information about an NBD
       server’s exports (Eric Blake).

   Tests
       Test sockets are created in /tmp (instead of the local directory).
       This stops the test suite from failing if the local directory path is
       longer than the Unix domain socket maximum path length.

   Other improvements and bug fixes
       Trace messages have been improved: long strings are truncated, strings
       with non-printable characters are escaped, and lists of strings are
       printed.

       The generator was split from a large single script into several small
       files.  To build from git the OCaml bytecode compiler (ocamlc(1)) is
       now required instead of the interpreter (ocaml(1)).

       Long login names are supported in nbd_get_tls_username(3).

       The handle name in nbdsh(1) is now set to "nbdsh" (instead of a
       randomly generated name).

       Compatibility with OCaml 4.10.0 and 4.11.0.

       Python AIO buffer adds a new "is_zero" method allowing Python clients
       to do sparsification when copying.

       Compatibility with Python 3.9.

       External C programs can now be compiled against libnbd’s build
       directory using "../libnbd/run ./configure".

       Honggfuzz can be used as another external fuzzing option.

       Fix compilation with glibc 2.32 which deprecates "sys_errlist".

       Many examples added or extended to demonstrate uses of the new APIs
       (Eric Blake).

SEE ALSO
       libnbd(3).

AUTHORS
       Eric Blake

       Richard W.M. Jones




-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org




More information about the virt-tools-list mailing list