Provided by: nbdkit_1.40.4-5ubuntu1_amd64 bug

NAME

       nbdkit-release-notes-1.18 - release notes for nbdkit 1.18

DESCRIPTION

       These are the release notes for nbdkit stable release 1.18.  This describes the major
       changes since 1.16.

       nbdkit 1.18.0 was released on 27th February 2020.

   Security
       There were no security issues found.  All past security issues and information about how
       to report new ones can be found in nbdkit-security(1).

   Plugins
       New nbdkit-eval-plugin(1) lets you write a plugin entirely on a single command line.  It
       is similar to nbdkit-sh-plugin(3).

       nbdkit-ext2-plugin is deprecated and will be removed in the next release after this one
       (nbdkit 1.20).  As a replacement use nbdkit-ext2-filter(1) like this:

        nbdkit --filter=ext2 file fs.img ext2file=/disks/disk.raw

       nbdkit-python-plugin(3) now offers a version 2 API which avoids copying the data buffer,
       improving performance.  The original protocol (now retrospectively called version 1) is
       still supported for backwards compatibility.  The version 1 protocol was also enhanced to
       support the buffer protocol for the pread method, and memoryview for pwrite, improving
       performance by reducing copies (Nir Soffer).

       The Python plugin now prints readable stack traces when an exception is thrown (Nir
       Soffer).

       New methods implemented in the Python plugin: cache, can_cache, can_zero, can_fast_zero,
       can_multi_conn, can_fua.

       In nbdkit-curl-plugin(1), new options "cainfo" and "capath" (Wiktor Gołgowski).

       nbdkit-split-plugin(1) now supports extents (Eric Blake).

       In nbdkit-vddk-plugin(1), "file=" is now a magic config key, meaning it can be omitted in
       most circumstances (Eric Blake).

       The VDDK plugin now no longer needs $LD_LIBRARY_PATH to be set.  The correct library load
       path is automatically inferred from the "libdir" parameter (Eric Blake).

       Verbose messages about calls to VDDK functions Read and Write can now be suppressed by
       setting -D vddk.datapath=0.

   Filters
       New nbdkit-ext2-filter(1), which replaces the deprecated nbdkit-ext2-plugin.  This filter
       allows you to read and write files inside ext2, ext3 or ext4 filesystems.  The new filter
       has the same features as the plugin, and one enhancement: optionally the name of the file
       to serve can be picked from the client-supplied exportname.  The old plugin will be
       removed in nbdkit 1.20 (Eric Blake).

       New nbdkit-extentlist-filter(1) lets you specify a static list of extents from a file
       which can be placed on top of plugins which don't export extent information.

       New nbdkit-ip-filter(1) lets you allow and deny incoming connections by client IP address,
       similar to TCP wrappers or a firewall.

       New nbdkit-nofilter-filter(1) is a null filter, used for testing.

       The stats filter now collects time elapsed per operation, per operation and total rates,
       and adds stats for the flush method.  The output is shown in human sizes making it easier
       to understand.  (Nir Soffer).

   Server
       New --swap option which allows nbdkit to be safely used to serve swap space to the same
       machine.

       Debug flags (-D) can now be applied to the server core (using -D nbdkit.*).  Underscores
       in debug flags can now be replaced by dots, allowing a kind of namespacing.  Debug flags
       which are not consumed now no longer give an error, so you can use them without needing to
       detect if the plugin supports them.  New server debug flags
       -D nbdkit.backend.controlpath=0 and -D nbdkit.backend.datapath=0 were added to suppress
       some very verbose messages when verbose mode is enabled.

   API
       There is a new ".get_ready" method which is called after ".config_complete" and before the
       server forks or changes directory.  It is the last chance to do any global preparation
       that is needed to serve connections.  Plugins have previously done this work in
       ".config_complete", but by splitting this into a new method it makes the API clearer.
       (Note that existing plugins may continue to use ".config_complete" for this work if they
       prefer.)

       There is a new ".preconnect" method available which is called just after the client makes
       a connection but before any NBD negotiation or TLS authentication is done.  It can be used
       for early whitelisting or rate limiting of connections, and in particular is used by the
       new nbdkit-ip-filter(1).

   Bug fixes
       In nbdkit-curl-plugin(1), "CURLINFO_CONTENT_LENGTH_DOWNLOAD_T" is used (if available) so
       that file sizes up to 63 bits should now work on all platforms (Pino Toscano and Adrian
       Ambrożewicz).

       nbdkit is now compatible with OCaml 4.10.

       nbdkit-memory-plugin(1) now supports "size=0" (Eric Blake).

   Documentation
       Plugins which were actually added in nbdkit 1.0.0 are now documented as such properly.

       Improved methods for probing plugins and filters are documented in nbdkit-probing(1).

   Tests
       Old plugins from nbdkit 1.0, 1.2, 1.8 and 1.12 are now bundled with the nbdkit sources and
       tested to try to ensure that they do not accidentally regress.  Note these are included as
       binary blobs.  See tests/old-plugins/README for more information about this, including how
       to delete these tests.

       Various tests, especially ones which rely on timeouts, have been made more stable so they
       should not fail on slow or overloaded machines.

       Many tests now use libnbd and nbdsh (instead of libguestfs and guestfish) as the test
       client.  This should improve the performance of the tests for most people.

       The --vsock option (added in nbdkit 1.16) can now be tested if the host is running Linux ≥
       5.6 (Stefano Garzarella).

   Build
       You can use "./configure --disable-nbd-plugin" to completely disable the NBD plugin.

       The automake feature "subdir-objects" is no longer used, which may improve compatibility
       on platforms with ancient and buggy automake (RHEL 7 being one such platform).

   Internals
       The explicit connection parameter passed around many functions in the server is now
       fetched from thread-local storage.

       The server no longer calls the finalize method if prepare fails.  Also failing to reopen
       the plugin from nbdkit-retry-filter(1) no longer hangs (Eric Blake).

       "git.orderfile" was enhanced to make patches easier to read (Eric Blake).

       Internal calls to methods like get_size, can_write will now no longer produce debug
       messages if the data is simply being returned from the internal cache (but calls into the
       plugin are still logged).

SEE ALSO

       nbdkit(1).

AUTHORS

       Authors of nbdkit 1.18:

       Adrian Ambrożewicz
           (1 commit)

       Eric Blake
           (30 commits)

       Wiktor Gołgowski
           (1 commit)

       Richard W.M. Jones
           (130 commits)

       Nir Soffer
           (11 commits)

       Pino Toscano
           (1 commit)

COPYRIGHT

       Copyright Red Hat

LICENSE

       Redistribution and use in source and binary forms, with or without modification, are
       permitted provided that the following conditions are met:

       •   Redistributions of source code must retain the above copyright notice, this list of
           conditions and the following disclaimer.

       •   Redistributions in binary form must reproduce the above copyright notice, this list of
           conditions and the following disclaimer in the documentation and/or other materials
           provided with the distribution.

       •   Neither the name of Red Hat nor the names of its contributors may be used to endorse
           or promote products derived from this software without specific prior written
           permission.

       THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED
       WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
       FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR CONTRIBUTORS
       BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
       OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
       LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
       OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
       POSSIBILITY OF SUCH DAMAGE.