GUESTFS-RELEASE-NOTES-1.22(1)
π¦ guestfs-release-notes(1) β libguestfs Release Notes
okay bestie, welcome to the Virtualization Support section of the manual, this is guestfs-release-notes(1) and it's literally the glow-up diary of libguestfs π
β¨ NAME β¨
guestfs-release-notes β libguestfs Release Notes
π RELEASE NOTES FOR LIBGUESTFS 1.22 π
heads up, these notes only cover what's different from the previous stable/dev branch split (1.20.0) β not the whole entire history. if you want the full detailed changelogs, go dig through the git repository, or the ChangeLog file that ships in the tarball π¦
πΈ New features πΈ
π API
Remote access to disks β like, actually remote remote. here's the whole roster:
- Network Block Device (nbd)
- Secure Shell (ssh)
- HTTP and HTTPS
- FTP and FTPS
- iSCSI
- Gluster
- Ceph/rbd (shoutout Mike Kelly π)
- Sheepdog
- TFTP
The SYSLINUX and EXTLINUX bootloaders can now be installed in disk images straight through the API. slay.
Inspection can now handle filesystems such as btrfs where subvolumes are separately mountable (ty Matthew Booth π«Ά).
"Attach methods" got a rebrand and are now known as "backends" β but don't panic, compatibility with existing code is preserved. she ate and left no crumbs.
Filenames can contain ':', as long as you're running a newer QEMU. iykyk.
π¦ Tools
virt-alignment-scan and virt-df now scan multiple guests in parallel. multitasking queen behavior.
guestmount now passes errno accurately back to userspace in almost all cases β no cap, this is huge for debugging.
guestfish and other tools can now use a URI-like syntax to access remote disks, eg:
guestfish -a ssh://example.com/path/to/disk.img
guestfish and guestmount now let you specify the filesystem type when mounting, which is more secure (Dave Vasilevsky π«).
guestfish is now officially the "guest filesystem shell". main character title, honestly.
guestfish allows only 1 "true" "t" "yes" "y" "on" 0 "false" "f" "no" "n" "off" for boolean values (case insensitive), and gives an error for all other strings. so don't try to be cute with it π
New tool guestunmount for unmounting FUSE filesystems safely. safety first, always.
The guestmount --no-fork flag prevents guestmount from daemonizing.
virt-resize now uses sparse copies by default, saving considerable space for guests which are mostly empty. big W for your disk πΎ
Bash tab completion has been rewritten and can now handle most tools, and correctly tab-complete "--long" options. in addition, bash completion scripts are loaded on demand β so it's fast and smart β¨
π Language bindings
The Java API now supports events. we love an evolved king π
The Python object now inherits from the "object" base class.
Python methods which previously returned lists of tuples can now be made to return a Python dict. for backwards compatibility, you have to enable this by using the constructor option guestfs.GuestFS (python_return_dict=True).
The PHP bindings are now tested properly, and have had multiple fixes. glow-up complete π
The long-deprecated Perl Sys::Guestfs::Lib library has been removed. it's gone bestie, we had to. https://www.redhat.com/archives/libguestfs/2013-April/msg00001.html
π Examples
New example program showing how to enable debugging and capture log messages. very demure, very mindful π§
π Other
Distributors can add arbitrary extra packages to the appliance by doing:
./configure --with-extra-packages="list of package names"
Distributors can use:
./configure --with-supermin-extra-options="..."
to add arbitrary extra options to supermin.
π₯ Security π₯
No security issues were found in this release. we stay winning π
π New APIs π
cp-rextlinuxfeature-availableget-programis-whole-devicepart-get-gpt-typepart-set-gpt-typerenameset-programsyslinux
C only:
guestfs_event_to_string
β Internals β
The febootstrap tool has now been renamed to "supermin". libguestfs can use either, but now prefers "supermin". http://people.redhat.com/~rjones/supermin/
libxml2 is required to build libguestfs.
The hivexregedit program (from hivex) is required to build from git.
Internal functions can no longer be used unless the caller defines -DGUESTFS_PRIVATE=1. boundaries, bestie π§
Enable C compiler warnings in Python, Ruby bindings. we love catching problems early.
Fail early and clearly if libvirt does not support qemu/KVM (eg. if the default libvirt connection is to Xen) β no more mysterious vibes-only errors.
make print-subdirs rule, useful for selectively running tests.
Multiple fixes to allow separated (sourcedir != builddir) builds.
Multiple fixes to Haskell bindings.
ln and ln-f APIs now capture errno correctly.
Language binding tests use (mostly) a standard numbering scheme and aim to test the same range of features in each language. also the number of launches required has been reduced so these tests should run much more quickly β‘
Library code internally uses GCC "__attribute__((cleanup))" (if available) to simplify memory allocation. fancy.
Internal header files have been reorganized. see the comments in src/guestfs-internal*.h
Internal code shared between the library and certain tools is now located in a static "libutils" library.
Almost all subdirectories can now use parallel builds, although note that the top-level directories still build in series. (a little patience, it's giving slow burn πΈ)
Use of "PATH_MAX" and "NAME_MAX" has been eliminated from the code.
The Java API now requires JVM β₯ 1.6.
Force use of "serial-tests" with automake β₯ 1.12.
Use of sockets in the library protocol layer is abstracted, allowing other non-POSIX layers to be added in future (see src/conn-socket.c).
"qemu-img info --output json" is used if available, for more secure parsing of the output of this command.
Distros can now use "make INSTALLDIRS=vendor install" to place Ruby bindings in vendordir. this eliminates a non-upstream patch carried by both Fedora and Debian. iconic, honestly π
Valgrind log files are now written to tmp/valgrind-DATE-PID.log
"make clean" cleans the local "tmp/" directory.
The C API tests have been rewritten using a more flexible generator language that allows arbitrary C code to be executing during tests.
π Bugs fixed π
https://bugzilla.redhat.com/961812β Segfault ininspect-fs.cin mountable codehttps://bugzilla.redhat.com/957772βtar-outandbase64-outquoting errorhttps://bugzilla.redhat.com/957380βlibguestfs: error: btrfsvol:/dev/sda2/root: root device not found: only call this function with a root device previously returned by guestfs_inspect_oshttps://bugzilla.redhat.com/948324β inspection fails iflibosinfois not installedhttps://bugzilla.redhat.com/928995βfileon zero-sized file now produces"empty "instead of"empty"https://bugzilla.redhat.com/921292βqemu: could not open disk image /tmp/.../snapshot1: Permission deniedhttps://bugzilla.redhat.com/921040β"error: external command failed, see earlier error messages"message needs to changehttps://bugzilla.redhat.com/920225β libguestfs should use--output json(if supported) to safely parse the output ofqemu-imgcommandhttps://bugzilla.redhat.com/916780β feature request:guestmount --with-cleanup-pipefdhttps://bugzilla.redhat.com/914934β oom-killer killsguestfsdwhentar-ina lot of datahttps://bugzilla.redhat.com/914931βFileIncommands cause segfault if appliance dies during the file copy inhttps://bugzilla.redhat.com/913145β Misc leaks invirNetClientProgramCallin libvirt 1.0.2https://bugzilla.redhat.com/912499β Security context on image file gets resethttps://bugzilla.redhat.com/909836βlibguestfs-test-tool --qemusegfaultshttps://bugzilla.redhat.com/909624β Unexpected non-tail recursion inrecv_from_daemonresults in stack overflow in very long-running API calls that send progress messageshttps://bugzilla.redhat.com/908322βvirt-tarfails on non-existent directory names"error in chunked encoding at /home/rjones/d/libguestfs/tools/virt-tar line 272."https://bugzilla.redhat.com/908321βvirt-catfails on directory names"/dev/stdout: error in chunked encoding"https://bugzilla.redhat.com/907554β btrfs causes subsequentntfs-3gfilesystem to failhttps://bugzilla.redhat.com/905341β"No such file or directory"when execute"hivex-commit"https://bugzilla.redhat.com/903620βbtrfs_subvolume_listbroken due to change in subvolume list outputhttps://bugzilla.redhat.com/895910βguestmount:rename()incorrectly follows symbolic linkshttps://bugzilla.redhat.com/895905βguestmount:link()incorrectly returnsENOENT, when it should beEXDEVhttps://bugzilla.redhat.com/895904βchecksums-outfail to compute the checksums of all regular files in directoryhttps://bugzilla.redhat.com/894545β libguestfs FTBFS on Fedora 19 because of new rubyhttps://bugzilla.redhat.com/890027βvirt-sysprep: Setting hostname, domain name and pretty name on Fedora 18 correctlyhttps://bugzilla.redhat.com/887971βpvcreatefails if partition contains a swap signaturehttps://bugzilla.redhat.com/887520βzero_free_space: open: /sysroot//ujqqq135.rd3: Cannot allocate memoryhttps://bugzilla.redhat.com/886915β libguestfs with libvirt attach-method fails with odd error if default hypervisor is Xenhttps://bugzilla.redhat.com/847549β Adding a zero-length virtio-scsi disk causes:qemu-kvm: hw/scsi-bus.c:1568: scsi_req_complete: Assertion 'req->status == -1' failed.https://bugzilla.redhat.com/811649β libguestfs cannot open disk images which are symlinks to files that contain':'(colon) characterhttps://bugzilla.redhat.com/664558β RFE: Allow to set log callback in Ruby bindings
π SEE ALSO π
guestfs-examples(1), guestfs-faq(1), guestfs-performance(1), guestfs-recipes(1), guestfs-testing(1), guestfs(3), guestfish(1), http://libguestfs.org/
π AUTHOR π
Richard W.M. Jones
π COPYRIGHT π
Copyright (C) 2009-2025 Red Hat Inc.
π LICENSE π
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
π BUGS (yes bestie, bugs happen, we're not mad) π
Okay so if you find a bug in libguestfs β and like, we hope you don't, but also we want to know β here's the whole vibe. π
Wanna peep the bugs that are already out there in the wild? Slay, here's the link:
https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
Wanna report a new bug of your very own? Iconic. That link is right here:
https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
β¨ when you report a bug, pls pls pls include β¨
- The version of libguestfs. π·οΈ Like, which one, bestie, we need to know.
- Where you got libguestfs (eg. which Linux distro, compiled from source, etc). π¦ The way that detail matters β no cap.
- Describe the bug accurately and give a way to reproduce it. π Fr fr, "it broke" is not it. Show us the steps so we can make it happen too.
- Run
libguestfs-test-tool(1)and paste the complete, unedited output into the bug report. π§ͺ This one is highkey the main character of the list β complete, unedited, don't you dare trim it. π
lowkey a whole mood: the more deets you give us, the faster the fix. Do not gatekeep the output. π«Ά
and that's the whole page, you made it to the end π This lil beauty is from libguestfs-1.61.3, dated 2026-09-16, and it's the guestfs-rel...-notes-1.22(1) manual β go forth and report responsibly, mwah πβ¨π¦
π¦ where this page comes from
- centos-stream 10: libguestfs 1:1.61.3-1.el10 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms