1nbdkit-release-notes-1.22(1) NBDKIT nbdkit-release-notes-1.22(1)
2
3
4
6 nbdkit-release-notes-1.22 - release notes for nbdkit 1.22
7
9 These are the release notes for nbdkit stable release 1.22. This
10 describes the major changes since 1.20.
11
12 nbdkit 1.22.0 was released on 27 August 2020.
13
14 Security
15 There were no security issues found. All past security issues and
16 information about how to report new ones can be found in
17 nbdkit-security(1).
18
19 Plugins
20 New nbdkit-cdi-plugin(1) (Containerized Data Importer) lets you export
21 a single layer from a container image, allowing you to access disk
22 images distributed using container registry infrastructure.
23
24 New nbdkit-ondemand-plugin(1) creates filesystems for clients on
25 demand.
26
27 New nbdkit-torrent-plugin(1) serves a BitTorrent file or magnet link
28 over NBD.
29
30 nbdkit-data-plugin(1) and nbdkit-memory-plugin(1) have a new
31 "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.
35
36 nbdkit-data-plugin(1) data format now supports strings and alignment.
37 The "disk2data.pl" script has been enhanced to detect repeated
38 sequences and produce a more compact output.
39
40 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.
45
46 nbdkit-curl-plugin(1) now supports HTTP/2 servers (David Edmondson,
47 Pino Toscano, Zi Liu).
48
49 nbdkit-curl-plugin(1) adds support for the "User-Agent" header.
50
51 nbdkit-file-plugin(1) can export multiple files in a directory as
52 separate exports (Eric Blake).
53
54 nbdkit-file-plugin(1) supports new "cache=none" and
55 "fadvise=normal|random|sequential" parameters which can be used to
56 optimize access patterns and avoid filling the page cache.
57
58 nbdkit-nbd-plugin(1) supports proxying to another NBD server over
59 "AF_VSOCK" (Eric Blake).
60
61 nbdkit-nbd-plugin(1) supports new "command=" and "socket-fd="
62 parameters which allow you to run a subordinate NBD server as a command
63 directly from the plugin, or pass in an already connected NBD endpoint.
64
65 nbdkit-streaming-plugin(1) supports streaming to and from local pipes.
66
67 nbdkit-vddk-plugin(1) now has support for VDDK 7.0. A new and useless
68 "error" message printed by VDDK 7 has been suppressed (thanks Ming Xie,
69 Pino Toscano).
70
71 nbdkit-ext2-plugin has been removed. It was deprecated in
72 nbdkit 1.17.8. All existing uses can be replaced with
73 nbdkit-ext2-filter(1).
74
75 The "-" character is now permitted within plugin and filter names (Eric
76 Blake).
77
78 Filters
79 New nbdkit-ddrescue-filter(1) lets you test disk images recovered by
80 ddrescue(1) (François Revol).
81
82 New nbdkit-gzip-filter(1) can decompress a plugin that contains gzip-
83 compressed data. It replaces nbdkit-gzip-plugin which is deprecated
84 and will be removed in nbdkit 1.26.
85
86 New nbdkit-pause-filter(1) can temporarily stop and later resume NBD
87 requests. This can be used when taking snapshots.
88
89 New nbdkit-swab-filter(1) swaps bytes in the underlying plugin, which
90 can be used to adjust images that have an incorrect byte order
91 (François Revol).
92
93 New nbdkit-tar-filter(1) reads and writes files inside a tar file in
94 the underlying plugin. It replaces nbdkit-tar-plugin which is
95 deprecated and will be removed in nbdkit 1.26.
96
97 New nbdkit-tls-fallback-filter(1) provides alternate content when a
98 client connects without using TLS to a server that permits but does not
99 require TLS (Eric Blake).
100
101 nbdkit-fua-filter(1) has new option "fuamode=pass" to pass through FUA
102 and flush requests unchanged (disabling the filter). A new, unsafe
103 "fuamode=discard" mode was added which discards FUA and flush requests.
104
105 Language bindings
106 New nbdkit-cc-plugin(3) lets you write small nbdkit plugins as inline
107 C, C++ or OCaml "scripts" (and potentially other ahead-of-time compiled
108 programming languages).
109
110 nbdkit-rust-plugin(3) bindings have been replaced by higher level and
111 more idiomatic bindings. These also support a greater range of server
112 features (Alan Somers).
113
114 nbdkit-python-plugin(3) now supports parallel plugins. These cannot
115 run Python code in parallel (because of the Python GIL), but for Python
116 code that blocks, eg. calling out to external services, requests can
117 now be handled in parallel (thanks Nir Soffer).
118
119 nbdkit-python-plugin(3) has a greater range of examples (Nir Soffer).
120
121 nbdkit-python-plugin(3) adds support for getting the client export
122 name, calling "nbdkit_debug", and also for extents.
123
124 Server
125 "nbdkit --dump-config" has new fields: "version_major" and
126 "version_minor" to allow easier version parsing from scripts.
127 "host_cpu" and "host_os" so you can find out if nbdkit was cross-
128 compiled for another platform. "zstd=(yes|no)" so you can find out if
129 nbdkit was compiled with zstd compression support.
130
131 The -e/--exportname option (which never did anything useful previously)
132 is now used to pass the preferred exportname to the --run option. In
133 general you should never use this option except in very limited and
134 exceptional circumstances (Eric Blake).
135
136 API
137 New ".after_fork" callback which can be used for plugins which need to
138 create background threads, since those threads would otherwise be
139 stranded if the server forks into the background. The VDDK plugin now
140 defers VDDK library initialization til ".after_fork" because it is
141 thought that the library creates background threads especially when
142 accessing remote servers.
143
144 New API "nbdkit_extents_aligned" is a helper function for filters that
145 retrieves extents as needed until at least a certain range is covered
146 (Eric Blake).
147
148 New "nbdkit_is_tls" can be called to determine if TLS was negotiated on
149 the connection. Plugins could use this to hide certain exports from
150 non-authenticated/non-encrypted clients (Eric Blake).
151
152 "nbdkit_read_password" with "password=-" will now return an error if
153 the input is not a tty. Also "password=-FD" is disallowed if the file
154 descriptor is 0, 1 or 2.
155
156 Bug fixes
157 The VDDK plugin was extensively refactored to fix many bugs: Reading
158 passwords from a tty should work again. The plugin should now work
159 properly when daemonized or using the --run option. The threading
160 model has been relaxed to "SERIALIZE_REQUESTS" which should give small
161 performance improvements when using multiple connections.
162
163 The "base64" option of nbdkit-data-plugin(1) has been fixed so it sets
164 the implicit size correctly.
165
166 The "<FILE" formatter of nbdkit-data-plugin(1) now works if you use it
167 more than once.
168
169 Documentation
170 New nbdkit-client(1) manual page documents how to mount filesystems
171 from NBD exports on client machines, either directly or using systemd
172 mountpoints.
173
174 Examples now use "NBDKIT_API_VERSION 2" so that the examples match the
175 documentation.
176
177 Tests
178 The tests should now pass on OpenBSD ≥ 6.4.
179
180 tests/Makefile.am was refactored: There is now no longer a single
181 massive "EXTRA_DIST". Creation of test disks was refactored.
182
183 Some tests will now use new libnbd 1.4 tools nbdcopy(1) and nbdinfo(1)
184 if available, and skip the tests otherwise.
185
186 New test functions "requires_plugin" and "requires_filter" allows tests
187 to be skipped if the corresponding plugin/filter was not compiled on a
188 particular platform. So tests should now not fail when an optional
189 external library needed by a plugin/filter is not available.
190
191 Build
192 Honggfuzz may now be used for fuzz testing.
193
194 If nbdkit-python-plugin(3) is enabled, Python ≥ 3.6 must be used.
195
196 Internals
197 The export name is now passed down through filter ".open" callbacks,
198 allowing filters to modify the export name passed through to plugins.
199
200 The final thread model is passed to filter ".get_ready" callbacks.
201
203 nbdkit(1).
204
206 Authors of nbdkit 1.22:
207
208 Alan Somers
209 (7 commits)
210
211 Eric Blake
212 (53 commits)
213
214 François Revol
215 (2 commits)
216
217 Nir Soffer
218 (2 commits)
219
220 Richard W.M. Jones
221 (285 commits)
222
224 Copyright (C) 2020 Red Hat Inc.
225
227 Redistribution and use in source and binary forms, with or without
228 modification, are permitted provided that the following conditions are
229 met:
230
231 • Redistributions of source code must retain the above copyright
232 notice, this list of conditions and the following disclaimer.
233
234 • Redistributions in binary form must reproduce the above copyright
235 notice, this list of conditions and the following disclaimer in the
236 documentation and/or other materials provided with the
237 distribution.
238
239 • Neither the name of Red Hat nor the names of its contributors may
240 be used to endorse or promote products derived from this software
241 without specific prior written permission.
242
243 THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ANY
244 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
245 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
246 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR CONTRIBUTORS BE
247 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
248 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
249 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
250 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
251 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
252 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
253 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
254
255
256
257nbdkit-1.25.8 2021-05-25 nbdkit-release-notes-1.22(1)