.\" Automatically generated by Podwrapper::Man 1.24.1 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "nbdkit-release-notes-1.18 1" .TH nbdkit-release-notes-1.18 1 "2021-01-20" "nbdkit-1.24.1" "NBDKIT" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" nbdkit\-release\-notes\-1.18 \- release notes for nbdkit 1.18 .SH "DESCRIPTION" .IX Header "DESCRIPTION" These are the release notes for nbdkit stable release 1.18. This describes the major changes since 1.16. .PP nbdkit 1.18.0 was released on 27th February 2020. .SS "Security" .IX Subsection "Security" There were no security issues found. All past security issues and information about how to report new ones can be found in \&\fBnbdkit\-security\fR\|(1). .SS "Plugins" .IX Subsection "Plugins" New \fBnbdkit\-eval\-plugin\fR\|(1) lets you write a plugin entirely on a single command line. It is similar to \fBnbdkit\-sh\-plugin\fR\|(3). .PP nbdkit\-ext2\-plugin is deprecated and will be removed in the next release after this one (nbdkit 1.20). As a replacement use \&\fBnbdkit\-ext2\-filter\fR\|(1) like this: .PP .Vb 1 \& nbdkit \-\-filter=ext2 file fs.img ext2file=/disks/disk.raw .Ve .PP \&\fBnbdkit\-python\-plugin\fR\|(3) now offers a version 2 \s-1API\s0 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). .PP The Python plugin now prints readable stack traces when an exception is thrown (Nir Soffer). .PP New methods implemented in the Python plugin: cache, can_cache, can_zero, can_fast_zero, can_multi_conn, can_fua. .PP In \fBnbdkit\-curl\-plugin\fR\|(1), new options \f(CW\*(C`cainfo\*(C'\fR and \f(CW\*(C`capath\*(C'\fR (Wiktor Gołgowski). .PP \&\fBnbdkit\-split\-plugin\fR\|(1) now supports extents (Eric Blake). .PP In \fBnbdkit\-vddk\-plugin\fR\|(1), \f(CW\*(C`file=\*(C'\fR is now a magic config key, meaning it can be omitted in most circumstances (Eric Blake). .PP The \s-1VDDK\s0 plugin now no longer needs \f(CW$LD_LIBRARY_PATH\fR to be set. The correct library load path is automatically inferred from the \&\f(CW\*(C`libdir\*(C'\fR parameter (Eric Blake). .PP Verbose messages about calls to \s-1VDDK\s0 functions Read and Write can now be suppressed by setting \fI\-D vddk.datapath=0\fR. .SS "Filters" .IX Subsection "Filters" New \fBnbdkit\-ext2\-filter\fR\|(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). .PP New \fBnbdkit\-extentlist\-filter\fR\|(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. .PP New \fBnbdkit\-ip\-filter\fR\|(1) lets you allow and deny incoming connections by client \s-1IP\s0 address, similar to \s-1TCP\s0 wrappers or a firewall. .PP New \fBnbdkit\-nofilter\-filter\fR\|(1) is a null filter, used for testing. .PP 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). .SS "Server" .IX Subsection "Server" New \fI\-\-swap\fR option which allows nbdkit to be safely used to serve swap space to the same machine. .PP Debug flags (\fI\-D\fR) can now be applied to the server core (using \&\fI\-D nbdkit.*\fR). 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 \&\fI\-D nbdkit.backend.controlpath=0\fR and \&\fI\-D nbdkit.backend.datapath=0\fR were added to suppress some very verbose messages when verbose mode is enabled. .SS "\s-1API\s0" .IX Subsection "API" There is a new \f(CW\*(C`.get_ready\*(C'\fR method which is called after \&\f(CW\*(C`.config_complete\*(C'\fR 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 \&\f(CW\*(C`.config_complete\*(C'\fR, but by splitting this into a new method it makes the \s-1API\s0 clearer. (Note that existing plugins may continue to use \&\f(CW\*(C`.config_complete\*(C'\fR for this work if they prefer.) .PP There is a new \f(CW\*(C`.preconnect\*(C'\fR method available which is called just after the client makes a connection but before any \s-1NBD\s0 negotiation or \&\s-1TLS\s0 authentication is done. It can be used for early whitelisting or rate limiting of connections, and in particular is used by the new \&\fBnbdkit\-ip\-filter\fR\|(1). .SS "Bug fixes" .IX Subsection "Bug fixes" In \fBnbdkit\-curl\-plugin\fR\|(1), \f(CW\*(C`CURLINFO_CONTENT_LENGTH_DOWNLOAD_T\*(C'\fR is used (if available) so that file sizes up to 63 bits should now work on all platforms (Pino Toscano and Adrian Ambrożewicz). .PP nbdkit is now compatible with OCaml 4.10. .PP \&\fBnbdkit\-memory\-plugin\fR\|(1) now supports \f(CW\*(C`size=0\*(C'\fR (Eric Blake). .SS "Documentation" .IX Subsection "Documentation" Plugins which were actually added in nbdkit 1.0.0 are now documented as such properly. .PP Improved methods for probing plugins and filters are documented in \&\fBnbdkit\-probing\fR\|(1). .SS "Tests" .IX Subsection "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 \&\fItests/old\-plugins/README\fR for more information about this, including how to delete these tests. .PP Various tests, especially ones which rely on timeouts, have been made more stable so they should not fail on slow or overloaded machines. .PP 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. .PP The \fI\-\-vsock\fR option (added in nbdkit 1.16) can now be tested if the host is running Linux ≥ 5.6 (Stefano Garzarella). .SS "Build" .IX Subsection "Build" You can use \f(CW\*(C`./configure \-\-disable\-nbd\-plugin\*(C'\fR to completely disable the \s-1NBD\s0 plugin. .PP The automake feature \f(CW\*(C`subdir\-objects\*(C'\fR is no longer used, which may improve compatibility on platforms with ancient and buggy automake (\s-1RHEL 7\s0 being one such platform). .SS "Internals" .IX Subsection "Internals" The explicit connection parameter passed around many functions in the server is now fetched from thread-local storage. .PP The server no longer calls the finalize method if prepare fails. Also failing to reopen the plugin from \fBnbdkit\-retry\-filter\fR\|(1) no longer hangs (Eric Blake). .PP \&\f(CW\*(C`git.orderfile\*(C'\fR was enhanced to make patches easier to read (Eric Blake). .PP Internal calls to methods like get_size, can_write will now no longer produce debug messages \fIif\fR the data is simply being returned from the internal cache (but calls into the plugin are still logged). .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBnbdkit\fR\|(1). .SH "AUTHORS" .IX Header "AUTHORS" Authors of nbdkit 1.18: .IP "Adrian Ambrożewicz" 4 .IX Item "Adrian Ambrożewicz" (1 commit) .IP "Eric Blake" 4 .IX Item "Eric Blake" (30 commits) .IP "Wiktor Gołgowski" 4 .IX Item "Wiktor Gołgowski" (1 commit) .IP "Richard W.M. Jones" 4 .IX Item "Richard W.M. Jones" (130 commits) .IP "Nir Soffer" 4 .IX Item "Nir Soffer" (11 commits) .IP "Pino Toscano" 4 .IX Item "Pino Toscano" (1 commit) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (C) 2020 Red Hat Inc. .SH "LICENSE" .IX Header "LICENSE" Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: .IP "\(bu" 4 Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. .IP "\(bu" 4 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. .IP "\(bu" 4 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. .PP \&\s-1THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS\s0 ''\s-1AS IS\s0'' \s-1AND 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\s0 (\s-1INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES\s0; \s-1LOSS OF USE, DATA, OR PROFITS\s0; \s-1OR BUSINESS INTERRUPTION\s0) \s-1HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\s0 (\s-1INCLUDING NEGLIGENCE OR OTHERWISE\s0) \s-1ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\s0