<div dir="ltr"><div>Very nice and congrats on getting this in.</div><div><br></div><div>Brett<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 14, 2019 at 5:53 AM Richard W.M. Jones <<a href="mailto:rjones@redhat.com">rjones@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I'm pleased to announce the releases of libnbd 1.2 and nbdkit 1.16.<br>
These are a high performance Network Block Device (NBD) client library<br>
and server.<br>
<br>
<br>
Key features of libnbd:<br>
<br>
 * Synchronous API for ease of use.<br>
 * Asynchronous API for writing non-blocking, multithreaded clients.<br>
   You can mix both APIs freely.<br>
 * High performance.<br>
 * Minimal dependencies for the basic library.<br>
 * Well-documented, stable API.<br>
 * Bindings in several programming languages.<br>
 * Shell (nbdsh) for command line and scripting.<br>
<br>
Git: <a href="https://github.com/libguestfs/libnbd" rel="noreferrer" target="_blank">https://github.com/libguestfs/libnbd</a><br>
Download: <a href="http://download.libguestfs.org/libnbd/1.2-stable/" rel="noreferrer" target="_blank">http://download.libguestfs.org/libnbd/1.2-stable/</a><br>
Fedora: <a href="https://koji.fedoraproject.org/koji/packageinfo?packageID=28807" rel="noreferrer" target="_blank">https://koji.fedoraproject.org/koji/packageinfo?packageID=28807</a><br>
<br>
<br>
Key features of nbdkit:<br>
<br>
 * Multithreaded NBD server written in C with good performance.<br>
 * Minimal dependencies for the basic server.<br>
 * Liberal license (BSD) allows nbdkit to be linked to proprietary<br>
   libraries or included in proprietary code.<br>
 * Well-documented, simple plugin API with a stable ABI guarantee.<br>
   Lets you export “unconventional” block devices easily.<br>
 * You can write plugins in C, Lua, Perl, Python, OCaml, Ruby, Rust,<br>
   shell script or Tcl.<br>
 * Filters can be stacked in front of plugins to transform the output.<br>
<br>
Git: <a href="https://github.com/libguestfs/nbdkit" rel="noreferrer" target="_blank">https://github.com/libguestfs/nbdkit</a><br>
Download: <a href="http://download.libguestfs.org/nbdkit/1.16-stable/" rel="noreferrer" target="_blank">http://download.libguestfs.org/nbdkit/1.16-stable/</a><br>
Fedora: <a href="https://koji.fedoraproject.org/koji/packageinfo?packageID=16469" rel="noreferrer" target="_blank">https://koji.fedoraproject.org/koji/packageinfo?packageID=16469</a><br>
<br>
<br>
*** Release notes for libnbd 1.2 ***<br>
<br>
       These are the release notes for libnbd stable release 1.2.  This<br>
       describes the major changes since 1.0.<br>
<br>
       libnbd 1.2.0 was released on 14th November 2019.<br>
<br>
   Security<br>
       Two security problems were found during development of libnbd 1.2.<br>
       Both were backported to the 1.0 stable branch.  Upgrading is highly<br>
       advisable.<br>
<br>
       CVE-2019-14842 protocol downgrade attack when using<br>
       "LIBNBD_TLS_REQUIRE"<br>
<br>
       See the full announcement and links to mitigation, tests and fixes<br>
       here:<br>
       <a href="https://www.redhat.com/archives/libguestfs/2019-September/msg00128.html" rel="noreferrer" target="_blank">https://www.redhat.com/archives/libguestfs/2019-September/msg00128.html</a><br>
<br>
       remote code execution vulnerability<br>
<br>
       See the full announcement here:<br>
       <a href="https://www.redhat.com/archives/libguestfs/2019-October/msg00060.html" rel="noreferrer" target="_blank">https://www.redhat.com/archives/libguestfs/2019-October/msg00060.html</a><br>
<br>
   New APIs<br>
       nbd_can_fast_zero(3)<br>
           Test support by the server for fast zeroing (Eric Blake).<br>
<br>
       nbd_connect_socket(3)<br>
       nbd_aio_connect_socket(3)<br>
           Connect to a local connected socket which you create in your main<br>
           program using your own chosen method.<br>
<br>
       nbd_connect_systemd_socket_activation(3)<br>
       nbd_aio_connect_systemd_socket_activation(3)<br>
           Connect to local processes that support systemd socket activation.<br>
<br>
       nbd_connect_vsock(3)<br>
       nbd_aio_connect_vsock(3)<br>
           Used to connect to servers over "AF_VSOCK".<br>
<br>
       nbd_get_handshake_flags(3)<br>
       nbd_set_handshake_flags(3)<br>
       nbd_get_request_structured_replies(3)<br>
       nbd_set_request_structured_replies(3)<br>
       nbd_get_structured_replies_negotiated(3)<br>
           Can be used when testing NBD servers to avoid various NBD features<br>
           (Eric Blake).<br>
<br>
       nbd_get_protocol(3)<br>
           Get the NBD protocol variant that the server supports.<br>
<br>
       nbd_get_tls_negotiated(3)<br>
           Did we actually negotiate a TLS connection?<br>
<br>
       nbd_set_uri_allow_local_file(3)<br>
       nbd_set_uri_allow_tls(3)<br>
       nbd_set_uri_allow_transports(3)<br>
           These can be used to filter NBD URIs before calling<br>
           nbd_connect_uri(3).<br>
<br>
   New features<br>
       New tool nbdfuse(1) lets you create a loop-mounted file backed by an<br>
       NBD server without needing root.<br>
<br>
       "AF_VSOCK" is now a supported protocol (thanks Stefan Hajnoczi and<br>
       Stefano Garzarella).<br>
<br>
       Support for the "FAST_ZERO" flag (Eric Blake).<br>
<br>
       Allow disabling certain protocol features, to make it easier to test<br>
       servers (Eric Blake).<br>
<br>
       Stack-allocated Variable Length Arrays (VLAs) are now banned throughout<br>
       the library, making the library easier to consume from threads and<br>
       other small stack situations.<br>
<br>
       Reproducible builds (Chris Lamb).<br>
<br>
       Support for filtering potentially dangerous or undesirable NBD URI<br>
       features.<br>
<br>
   Documentation<br>
       Many improvements to the generated manual pages, including:<br>
<br>
       ·   Separate "RETURN VALUE" and "ERRORS" sections for each API<br>
           function.<br>
<br>
       ·   Example code.<br>
<br>
       ·   Relevant links can be added to the "SEE ALSO" section.<br>
<br>
       ·   Link to NBD URI specification where relevant, and improve<br>
           documentation around what URIs libnbd supports.<br>
<br>
       ·   Document libnbd version number scheme.<br>
<br>
       ·   Document limits on export name length, encoding etc.<br>
<br>
       New libnbd-security(3) man page listing past security issues and<br>
       remediations (Eric Blake).<br>
<br>
   Tools<br>
       nbdsh(1) has a new --base-allocation option which can be used to<br>
       request "base:allocation" metadata context.<br>
<br>
       New nbdsh(1) --uri (-u) option to connect to URIs.<br>
<br>
   Tests<br>
       You can now fuzz libnbd using either American Fuzzy Lop or clang’s<br>
       libFuzzer.<br>
<br>
       Add unit tests for nbdsh(1) (Eric Blake).<br>
<br>
       Improved interop testing with various NBD servers and features.<br>
<br>
   Other improvements and bug fixes<br>
       nbd_connect_tcp(3) now tries to return the correct errno(3) from the<br>
       underlying connect(2) call when that fails.<br>
<br>
       The nbd-protocol.h header file is now shared between libnbd and nbdkit.<br>
<br>
       Better fork-safety in "nbd_connect_*" APIs.<br>
<br>
       The code was analyzed with Coverity and various problems identified and<br>
       fixed.<br>
<br>
<br>
*** Release notes for nbdkit 1.16 ***<br>
<br>
       These are the release notes for nbdkit stable release 1.16.  This<br>
       describes the major changes since 1.14.<br>
<br>
       nbdkit 1.16.0 was released on 14th November 2019.<br>
<br>
   Security<br>
       Two security issues were found during development of nbdkit 1.16.<br>
       Fixes for these were backported to older stable branches.  Upgrading to<br>
       the fixed versions is highly recommended.  The new nbdkit-security(1)<br>
       man page contains an up to date list of past security issues.<br>
<br>
       CVE-2019-14850 denial of service due to premature opening of back-end<br>
       connection<br>
<br>
       See the full announcement and links to mitigation, tests and fixes<br>
       here:<br>
       <a href="https://www.redhat.com/archives/libguestfs/2019-September/msg00084.html" rel="noreferrer" target="_blank">https://www.redhat.com/archives/libguestfs/2019-September/msg00084.html</a><br>
<br>
       CVE-2019-14851 assertion failure by issuing commands in the wrong order<br>
<br>
       This CVE was caused by the fix to the previous issue.<br>
<br>
       See the full announcement and links to mitigation, tests and fixes<br>
       here:<br>
       <a href="https://www.redhat.com/archives/libguestfs/2019-September/msg00272.html" rel="noreferrer" target="_blank">https://www.redhat.com/archives/libguestfs/2019-September/msg00272.html</a><br>
<br>
   New features<br>
       Add support for fast zeroing.  Plugins can expose this using the new<br>
       ".can_fast_zero" method (Eric Blake).<br>
<br>
       nbdkit-partitioning-plugin(1) allows use of "mbr-id=default" or<br>
       "type-guid=default" to go back to the default MBR byte or partition<br>
       type GUID.<br>
<br>
       New --mask-handshake server flag can be used for testing client feature<br>
       negotiation (Eric Blake).<br>
<br>
       The client export name is passed to nbdkit-captive(1) --run parameter<br>
       as $exportname (Eric Blake).<br>
<br>
       Captive --run commands which fail (eg. aborting) now cause nbdkit to<br>
       exit with an error instead of errors being silently ignored (Eric<br>
       Blake).<br>
<br>
       File descriptors can be passed to password parameters, eg:<br>
       "password=-3" which means that the password should be read from file<br>
       descriptor 3.<br>
<br>
       nbdkit can now serve over the "AF_VSOCK" protocol (thanks Stefan<br>
       Hajnoczi).<br>
<br>
       New --log=null option discards error messages.<br>
<br>
   Plugins<br>
       Python 2 support has been dropped from nbdkit-python-plugin(3) in line<br>
       with Python 2 end of life at the beginning of 2020.  Python ≥ 3.3 is<br>
       required by this plugin.  If you wish to continue to use Python 2 then<br>
       you will need to use nbdkit 1.14.<br>
<br>
       New nbdkit-info-plugin(1) which returns various server information back<br>
       to the client.  It can be used for testing server latency amongst other<br>
       things.<br>
<br>
       nbdkit-data-plugin(1) now allows you to write "BYTE*N" to get repeated<br>
       bytes (eg. nbdkit data data="0x55*4096").<br>
<br>
       nbdkit-ssh-plugin(1) new parameter "compression=true|false" to control<br>
       transport compression.<br>
<br>
       nbdkit-vddk-plugin(1) is no longer compiled on non-x86 platforms since<br>
       VMware has only ever shipped VDDK on x86.<br>
<br>
       nbdkit-sh-plugin(1) scripts can now see the client exportname and can<br>
       use the "magic_config_key" feature.<br>
<br>
   Filters<br>
       New nbdkit-retry-filter(1) which can reopen the plugin transparently on<br>
       certain types of failures (lots of help from Eric Blake).<br>
<br>
   API<br>
       Macros "NBDKIT_VERSION_MAJOR", "NBDKIT_VERSION_MINOR",<br>
       "NBDKIT_VERSION_MICRO" expose the compile-time version of nbdkit to<br>
       plugins and filters (Eric Blake).<br>
<br>
       Filters (which unlike plugins do not have a public stable API) must now<br>
       exactly match the version of nbdkit when loaded (Eric Blake).<br>
<br>
       New ".can_fast_zero" method (Eric Blake).<br>
<br>
       New "nbdkit_export_name" server function for reading the export name<br>
       passed by the client.<br>
<br>
       New "nbdkit_peer_name" server function to return the client address<br>
       (like getpeername(2)).<br>
<br>
       New server functions for safely parsing integers: "nbdkit_parse_int",<br>
       "nbdkit_parse_unsigned", "nbdkit_parse_int8_t", "nbdkit_parse_uint8_t",<br>
       "nbdkit_parse_int16_t", "nbdkit_parse_uint16_t",<br>
       "nbdkit_parse_int32_t", "nbdkit_parse_uint32_t",<br>
       "nbdkit_parse_int64_t", "nbdkit_parse_uint64_t".<br>
<br>
   Bug fixes<br>
       ".trim" with FUA flag set now works (Eric Blake).<br>
<br>
   Documentation<br>
       The previous release notes have been turned into man pages.<br>
<br>
   Tests<br>
       Several tests now optionally use nbdsh(1) instead of qemu-io.<br>
<br>
       You can now fuzz nbdkit using either American Fuzzy Lop or clang’s<br>
       libFuzzer.<br>
<br>
       Several tests have had sleep times increased to make them more stable<br>
       when run on slow or heavily loaded machines.<br>
<br>
   Internals<br>
       Reproducible builds (Chris Lamb).<br>
<br>
       Compile code with -Wshadow warning (Eric Blake).<br>
<br>
       The internal backend system has been extensively overhauled.  In<br>
       particular this means that we now validate request ranges as requests<br>
       are passed between filters and down to the plugin, making it easier to<br>
       find bugs in filters early (Eric Blake).<br>
<br>
       Plugin size and "can_*" flags are cached more aggressively by the<br>
       server (Eric Blake).<br>
<br>
       Variable Length Arrays (VLAs) on stack are now banned throughout the<br>
       code.<br>
<br>
       The nbd-protocol.h header describing the NBD protocol is now shared<br>
       with libnbd(3).<br>
<br>
       Plugin ".unload" method is now called after all worker threads have<br>
       exited, avoiding races at server shutdown.<br>
<br>
       Code was audited using Coverity and various problems were fixed.<br>
<br>
<br>
<br>
<br>
-- <br>
Richard Jones, Virtualization Group, Red Hat <a href="http://people.redhat.com/~rjones" rel="noreferrer" target="_blank">http://people.redhat.com/~rjones</a><br>
Read my programming and virtualization blog: <a href="http://rwmj.wordpress.com" rel="noreferrer" target="_blank">http://rwmj.wordpress.com</a><br>
virt-p2v converts physical machines to virtual machines.  Boot with a<br>
live CD or over the network (PXE) and turn machines into KVM guests.<br>
<a href="http://libguestfs.org/virt-v2v" rel="noreferrer" target="_blank">http://libguestfs.org/virt-v2v</a><br>
<br>
_______________________________________________<br>
Libguestfs mailing list<br>
<a href="mailto:Libguestfs@redhat.com" target="_blank">Libguestfs@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/libguestfs" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/libguestfs</a></blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Brett Thurber - RHCA, RHCVA<br>Distinguished Engineer and Engineering Manager, Migration Engineering<br>Products & Technologies Group, Red Hat<br>Mobile: +1 (512) 547-9282<br></div></div></div></div></div></div></div></div></div>