Update Red Hat Copyright Notices
[nbdkit.git] / docs / nbdkit-release-notes-1.22.pod
blob229549b7de5dd6e1175edcae328c05a78a119b0a
1 =head1 NAME
3 nbdkit-release-notes-1.22 - release notes for nbdkit 1.22
5 =head1 DESCRIPTION
7 These are the release notes for nbdkit stable release 1.22.
8 This describes the major changes since 1.20.
10 nbdkit 1.22.0 was released on B<27 August 2020>.
12 =head2 Security
14 There were no security issues found.  All past security issues and
15 information about how to report new ones can be found in
16 L<nbdkit-security(1)>.
18 =head2 Plugins
20 New L<nbdkit-cdi-plugin(1)> (Containerized Data Importer) lets you
21 export a single layer from a container image, allowing you to access
22 disk images distributed using container registry infrastructure.
24 New L<nbdkit-ondemand-plugin(1)> creates filesystems for clients on
25 demand.
27 New L<nbdkit-torrent-plugin(1)> serves a BitTorrent file or magnet
28 link over NBD.
30 L<nbdkit-data-plugin(1)> and L<nbdkit-memory-plugin(1)> have a new
31 C<allocator> parameter giving more fine-grained control over the
32 allocation strategy.  Currently implemented strategies are: sparse
33 array, sparse array with zstd compression, malloc, and malloc with
34 mlock.
36 L<nbdkit-data-plugin(1)> data format now supports strings and
37 alignment.  The C<disk2data.pl> script has been enhanced to detect
38 repeated sequences and produce a more compact output.
40 L<nbdkit-curl-plugin(1)> adds support for arbitrary custom request
41 headers.  Also it now supports scripts for generating cookies and
42 custom request headers.  This is especially useful when accessing web
43 servers that require authentication which has to be renewed
44 periodically.
46 L<nbdkit-curl-plugin(1)> now supports HTTP/2 servers
47 (David Edmondson, Pino Toscano, Zi Liu).
49 L<nbdkit-curl-plugin(1)> adds support for the C<User-Agent> header.
51 L<nbdkit-file-plugin(1)> can export multiple files in a directory as
52 separate exports (Eric Blake).
54 L<nbdkit-file-plugin(1)> supports new C<cache=none> and
55 C<fadvise=normal|random|sequential> parameters which can be used to
56 optimize access patterns and avoid filling the page cache.
58 L<nbdkit-nbd-plugin(1)> supports proxying to another NBD server over
59 C<AF_VSOCK> (Eric Blake).
61 L<nbdkit-nbd-plugin(1)> supports new C<command=> and C<socket-fd=>
62 parameters which allow you to run a subordinate NBD server as a
63 command directly from the plugin, or pass in an already connected NBD
64 endpoint.
66 nbdkit-streaming-plugin(1) supports streaming to and from local
67 pipes.
69 L<nbdkit-vddk-plugin(1)> now has support for VDDK 7.0.  A new and
70 useless "error" message printed by VDDK 7 has been suppressed
71 (thanks Ming Xie, Pino Toscano).
73 nbdkit-ext2-plugin has been removed.  It was deprecated in
74 S<nbdkit 1.17.8>.  All existing uses can be replaced with
75 L<nbdkit-ext2-filter(1)>.
77 The C<-> character is now permitted within plugin and filter names
78 (Eric Blake).
80 =head2 Filters
82 New L<nbdkit-ddrescue-filter(1)> lets you test disk images recovered
83 by L<ddrescue(1)> (François Revol).
85 New L<nbdkit-gzip-filter(1)> can decompress a plugin that contains
86 gzip-compressed data.  It replaces nbdkit-gzip-plugin which is
87 deprecated and will be removed in S<nbdkit 1.26>.
89 New L<nbdkit-pause-filter(1)> can temporarily stop and later resume
90 NBD requests.  This can be used when taking snapshots.
92 New L<nbdkit-swab-filter(1)> swaps bytes in the underlying plugin,
93 which can be used to adjust images that have an incorrect byte order
94 (François Revol).
96 New L<nbdkit-tar-filter(1)> reads and writes files inside a tar file
97 in the underlying plugin.  It replaces nbdkit-tar-plugin which
98 is deprecated and will be removed in S<nbdkit 1.26>.
100 New L<nbdkit-tls-fallback-filter(1)> provides alternate content when a
101 client connects without using TLS to a server that permits but does
102 not require TLS (Eric Blake).
104 L<nbdkit-fua-filter(1)> has new option C<fuamode=pass> to pass through
105 FUA and flush requests unchanged (disabling the filter).  A new,
106 unsafe C<fuamode=discard> mode was added which discards FUA and flush
107 requests.
109 =head2 Language bindings
111 New L<nbdkit-cc-plugin(3)> lets you write small nbdkit plugins as
112 inline C, C++ or OCaml "scripts" (and potentially other ahead-of-time
113 compiled programming languages).
115 L<nbdkit-rust-plugin(3)> bindings have been replaced by higher level
116 and more idiomatic bindings.  These also support a greater range of
117 server features (Alan Somers).
119 L<nbdkit-python-plugin(3)> now supports parallel plugins.  These
120 cannot run Python code in parallel (because of the Python GIL), but
121 for Python code that blocks, eg. calling out to external services,
122 requests can now be handled in parallel (thanks Nir Soffer).
124 L<nbdkit-python-plugin(3)> has a greater range of examples (Nir Soffer).
126 L<nbdkit-python-plugin(3)> adds support for getting the client export
127 name, calling C<nbdkit_debug>, and also for extents.
129 =head2 Server
131 C<nbdkit --dump-config> has new fields: C<version_major> and
132 C<version_minor> to allow easier version parsing from scripts.
133 C<host_cpu> and C<host_os> so you can find out if nbdkit was
134 cross-compiled for another platform.  C<zstd=(yes|no)> so you can find
135 out if nbdkit was compiled with zstd compression support.
137 The I<-e>/I<--exportname> option (which never did anything useful
138 previously) is now used to pass the preferred exportname to the
139 I<--run> option.  In general you should never use this option except
140 in very limited and exceptional circumstances (Eric Blake).
142 =head2 API
144 New C<.after_fork> callback which can be used for plugins which need
145 to create background threads, since those threads would otherwise be
146 stranded if the server forks into the background.  The VDDK plugin now
147 defers VDDK library initialization til C<.after_fork> because it is
148 thought that the library creates background threads especially when
149 accessing remote servers.
151 New API C<nbdkit_extents_aligned> is a helper function for filters
152 that retrieves extents as needed until at least a certain range is
153 covered (Eric Blake).
155 New C<nbdkit_is_tls> can be called to determine if TLS was negotiated
156 on the connection.  Plugins could use this to hide certain exports
157 from non-authenticated/non-encrypted clients (Eric Blake).
159 C<nbdkit_read_password> with C<password=-> will now return an error if
160 the input is not a tty.  Also C<password=-FD> is disallowed if the
161 file descriptor is 0, 1 or 2.
163 =head2 Bug fixes
165 The VDDK plugin was extensively refactored to fix many bugs: Reading
166 passwords from a tty should work again.  The plugin should now work
167 properly when daemonized or using the I<--run> option.  The threading
168 model has been relaxed to C<SERIALIZE_REQUESTS> which should give
169 small performance improvements when using multiple connections.
171 The C<base64> option of L<nbdkit-data-plugin(1)> has been fixed so it
172 sets the implicit size correctly.
174 The C<E<lt>FILE> formatter of L<nbdkit-data-plugin(1)> now works if
175 you use it more than once.
177 =head2 Documentation
179 New L<nbdkit-client(1)> manual page documents how to mount filesystems
180 from NBD exports on client machines, either directly or using systemd
181 mountpoints.
183 Examples now use C<NBDKIT_API_VERSION 2> so that the examples match
184 the documentation.
186 =head2 Tests
188 The tests should now pass on OpenBSD E<ge> 6.4.
190 F<tests/Makefile.am> was refactored: There is now no longer a single
191 massive C<EXTRA_DIST>.  Creation of test disks was refactored.
193 Some tests will now use new libnbd 1.4 tools L<nbdcopy(1)> and
194 L<nbdinfo(1)> if available, and skip the tests otherwise.
196 New test functions C<requires_plugin> and C<requires_filter> allows
197 tests to be skipped if the corresponding plugin/filter was not
198 compiled on a particular platform.  So tests should now not fail when
199 an optional external library needed by a plugin/filter is not
200 available.
202 =head2 Build
204 Honggfuzz may now be used for fuzz testing.
206 If L<nbdkit-python-plugin(3)> is enabled, Python E<ge> 3.6 must be
207 used.
209 =head2 Internals
211 The export name is now passed down through filter C<.open> callbacks,
212 allowing filters to modify the export name passed through to plugins.
214 The final thread model is passed to filter C<.get_ready> callbacks.
216 =head1 SEE ALSO
218 L<nbdkit(1)>.
220 =head1 AUTHORS
222 Authors of nbdkit 1.22:
224 =over 4
226 =item Alan Somers
228 (7 commits)
230 =item Eric Blake
232 (53 commits)
234 =item François Revol
236 (2 commits)
238 =item Nir Soffer
240 (2 commits)
242 =item Richard W.M. Jones
244 (285 commits)
246 =back
248 =head1 COPYRIGHT
250 Copyright Red Hat