nbdkit-release-notes-1.46(1)

πŸ’– nbdkit-release-notes-1.46 πŸ’–

okay bestie, welcome to the nbdkit-release-notes-1.46(1) page from the nbdkit manual ✨ this is the whole tea on what changed in nbdkit 1.46, and I'm gonna walk you through every single crumb, no skips, no "you get the idea". sit down, hydrate, let's go 🫢


🌸 NAME 🌸

nbdkit-release-notes-1.46 β€” release notes for nbdkit 1.46


✨ DESCRIPTION ✨

These are the release notes for the nbdkit stable release 1.46. It covers all the major changes since 1.44, and there are a lot of them. πŸ’…

<nbdkit 1.46.0> was released on 20 December 2025. mark the calendar bestie πŸŽ€


πŸ”’ Security πŸ”’

So here's the serious one, and I need you to actually pay attention because it's giving exposed data energy 😭

On certain types of storage β€” most notably when a disk image lives on an NFS mount β€” nbdkit would truncate zero requests to 64M. And since nbdcopy(1) defaults to a 128M block size, that mismatch could leave parts of a disk unzeroed, which means older content could be exposed. yeah. πŸ’€

This was fixed in 1.44.1, and the fix was backported all the way back to the 1.38 branch. For more details peep the commit:

https://gitlab.com/nbdkit/nbdkit/-/commit/20b23fc9838faeddfd42664a7f497a9b29dc5921

thanks Alex Kalenyuk 🫢

For past security issues, see nbdkit-security(1).


🧩 Plugins 🧩

  • New nbdkit-vram-plugin(1) β€” it turns Video RAM into an NBD disk, using OpenCL. that's literally the plot of a sci-fi movie and I'm obsessed πŸ‘‘
  • nbdkit-vddk-plugin(1) β€” the "export" parameter (which was added back in 1.44) now lets you grab exports from subdirectories on the ESXi server too. thanks Ming Xie ✨
  • nbdkit-data-plugin(1) β€” now supports "base64:..." inside format strings πŸŽ€
  • nbdkit-sh-plugin(3) and nbdkit-extentlist-filter(1) β€” both now allow blank lines and comments in the list of extents. thanks Eric Blake πŸ’œ
  • nbdkit-ssh-plugin(1) β€” can now handle remote block devices properly (thanks trainzkid) 🫢 and also we now display information about the remote SSH server in debug output πŸ‘€
  • nbdkit-random-plugin(1) β€” has a new "fast=true" mode, which trades increased performance for less randomness. pick your fighter πŸ’…
  • nbdkit-pattern-plugin(1) β€” got new "stride" and "upper" parameters:
    • Stride is for creating patterns that align to filesystem or device block boundaries.
    • Upper modifies the upper bits of each pattern, so a different pattern shows up on each run.
    • This plugin also now supports checking writes. slay ✨
  • nbdkit-file-plugin(1) β€” prints more useful debugging (that's when the -v option is used). On Windows this plugin now displays complete error messages instead of just error codes. Also the existing "cache=none" parameter has been renamed to "reduce-memory-pressure=true" to reflect what it actually does β€” but bestie, the old parameter can still be used, so nobody's build breaks 😌

πŸ¦‹ Filters πŸ¦‹

  • nbdkit-cacheextents-filter β€” was already deprecated before, and has been removed in this release of nbdkit. If you used this filter before, the advice is simply to remove it from the filter chain, because it usually wasn't effective anyway. rip but also good riddance πŸ’€
  • New nbdkit-count-filter(1) β€” produces a simple summary of the number of bytes read, written, etc. cute little stats girly πŸ“Š
  • New nbdkit-indexed-gzip-filter(1) β€” can be used to random access gzip files efficiently. thanks Shasheen Ediriweera πŸŽ€
  • New nbdkit-map-filter(1) β€” can remap disk blocks arbitrarily. main character energy honestly πŸ‘‘
  • nbdkit-delay-filter(1) β€” has a new "delay-trigger=FILE" option that lets you enable the filter based on the existence of a file ✨

🐍 Language bindings 🐍

  • Python binding for nbdkit_parse_bool(3) 🫢
  • Fixed a crasher when unloading OCaml plugins (thanks Guillaume Munch-Maccagnoni) 😭 Also, we now document that "nbdkit -s" does not work for OCaml plugins β€” you must use systemd socket activation instead. iykyk πŸ’…

πŸ‘‘ Server πŸ‘‘

  • New nbdkit --name parameter β€” this lets you name your nbdkit instances. Which is genuinely so useful when you've got multiple copies of nbdkit running, especially when they're all writing debug or error messages into a single log file, because now you can actually tell which instance produced a particular message. thanks Ming Xie ✨
  • You can now read nbdkit command line parameters from an external file using the @PATH syntax πŸŽ€
  • nbdkit --long-options and --short-options β€” these are used to implement bash completion. Previously they were hidden, implementation-specific options, but they're useful enough that we now support and document them. glow up πŸ’…
  • During the negotiation phase, we now allow the client to send more than one "OPT_LIST" request. thanks Eric Blake πŸ¦‹
  • Post-Quantum Cryptography (PQC) is now fully supported (thanks Dan Berrange) πŸ”₯
  • New command line option --tls-priority β€” lets you temporarily override the system TLS priority string 🌸

🧚 API 🧚

  • New nbdkit_debug_hexdump(3) function β€” can be used to print a buffer in canonical hexdump format, for debugging ✨

🩹 Bug fixes 🩹

  • nbdkit-file-plugin(1) β€” trimming and zeroing paths were fixed so they should work on a wider range of backing storage 🫢
  • Empty string is now rejected as either a plugin or filter name. This used to make us try to dlopen(""), which actually opens the current executable (apparently a glibc extension 😭). It would fail with a very confusing error. not anymore bestie πŸ’…
  • Fixed nbdkit_parse_delay(3) on i386 without SSE. The previous code used the wrong floating point rounding mode. πŸ’€
  • The way that nbdkit-linuxdisk-plugin(1) parsed the output of du(1) using getline(3) was not POSIX compliant, and a change to glibc broke it. This was fixed in nbdkit β€” and it also caused POSIX to reconsider the wording of the getline standard (thanks Eric Blake) πŸ‘‘ iconic behaviour honestly
  • Fixed our use of mke2fs(8) when creating a test disk for nbdkit-ext2-filter(1). This greatly reduces the amount of disk space used for nbdkit builds. thanks Mykola Ivanets πŸŽ€
  • Fixed crashing bugs in nbdkit-checkwrite-filter(1). thanks Eric Blake ✨
  • Fixed the order of inclusion of the Python header file, because of changes in recent Python 3.14 🐍
  • nbdkit-readonly-filter(1) now advertises the correct readonly status down to plugins. thanks Eric Blake πŸ’œ
  • Reviewed Coverity warnings 🧹

πŸ“š Documentation πŸ“š

  • Documented how to attach NBD devices to QEMU VMs β€” either when using qemu directly, or with libvirt (thanks Vadim Rozenfeld, Peter Krempa) 🫢
  • The TODO and SECURITY files in the git repository now use markdown πŸŽ€

πŸ§ͺ Tests πŸ§ͺ

  • Tests no longer fail if qemu-img(1) is not available at build time βœ…

πŸ› οΈ Build πŸ› οΈ

  • Installed package names are printed by "./configure" ✨

πŸ”§ Internals πŸ”§

  • New ONCE() macro β€” runs code only once. It's used for some informational debug messages where we want the message to be printed once, the first time the situation is encountered πŸ’…
  • Several extensions to the internal vector type, including "vector_uniq", "vector_append_array", "vector_insert_array", "vector_remove_range" πŸ¦‹
  • Fixed the memory allocation behaviour of the internal vector library, which should reduce memory usage in some situations. thanks Eric Blake 🌸
  • New tests functions: "requires_tls", "requires_tls_certificates", "requires_tls_psk" πŸŽ€
  • Use "__attribute__((nonnull))" in more places, and added the "__attribute__((malloc))" annotation on certain functions ✨

🫢 SEE ALSO 🫢

nbdkit(1).


πŸ’œ AUTHORS πŸ’œ

Authors of nbdkit 1.46 β€” give it up for the girlies and guys πŸ‘‘

  • Eric Blake
  • Michael Ablassmeier
  • Mykola Ivanets
  • Richard W.M. Jones
  • Shasheen Ediriweera

Copyright Red Hat


πŸ“œ LICENSE πŸ“œ

okay bestie, here comes the legal bit, and I'm keeping it word for word because you do not mess with license text πŸ’…

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.

and that's the whole page bestie!! 🌈 this lil manual page ships as part of nbdkit-1.48.1, dated 2026-08-29, and yeah it's the nbdkit-release-notes-1.46(1) page in case you got lost in the sauce πŸ’– go forth and upgrade, periodt πŸ’…βœ¨

πŸ“¦ where this page comes from