NAME

guestfs-release-notes - libguestfs Release Notes

RELEASE NOTES FOR LIBGUESTFS 1.22

These release notes only cover the differences from the previous stable/dev branch split (1.20.0). For detailed changelogs, please see the git repository, or the ChangeLog file distributed in the tarball.

New features

API

Remote access to disks:

The SYSLINUX and EXTLINUX bootloaders can now be installed in disk images using the API.

Inspection can now handle filesystems such as btrfs where subvolumes are separately mountable (Matthew Booth).

"Attach methods" are now known as "backends". Compatibility with existing code is preserved.

Filenames can contain ':', as long as newer QEMU is being used.

Tools

Virt-alignment-scan and virt-df scan multiple guests in parallel.

Guestmount now passes errno accurately back to userspace in almost all cases.

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 allow you to specify the filesystem type when mounting, which is more secure (Dave Vasilevsky).

Guestfish is now the "guest filesystem shell".

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.

New tool guestunmount for unmounting FUSE filesystems safely.

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.

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.

Language bindings

The Java API now supports events.

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.

The long-deprecated Perl Sys::Guestfs::Lib library has been removed. https://www.redhat.com/archives/libguestfs/2013-April/msg00001.html

Examples

New example program showing how to enable debugging and capture log messages.

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.

New APIs

 cp-r
 extlinux
 feature-available
 get-program
 is-whole-device
 part-get-gpt-type
 part-set-gpt-type
 rename
 set-program
 syslinux

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.

Enable C compiler warnings in Python, Ruby bindings.

Fail early and clearly if libvirt does not support qemu/KVM (eg. if default libvirt connection is to Xen).

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.

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.

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.

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 in inspect-fs.c in mountable code

https://bugzilla.redhat.com/957772

tar-out and base64-out quoting error

https://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_os

https://bugzilla.redhat.com/948324

inspection fails if libosinfo is not installed

https://bugzilla.redhat.com/928995

file on zero-sized file now produces "empty " instead of "empty"

https://bugzilla.redhat.com/921292

qemu: could not open disk image /tmp/.../snapshot1: Permission denied

https://bugzilla.redhat.com/921040

"error: external command failed, see earlier error messages" message needs to change

https://bugzilla.redhat.com/920225

libguestfs should use --output json (if supported) to safely parse the output of qemu-img command

https://bugzilla.redhat.com/916780

feature request: guestmount --with-cleanup-pipefd

https://bugzilla.redhat.com/914934

oom-killer kills guestfsd when tar-in a lot of data

https://bugzilla.redhat.com/914931

FileIn commands cause segfault if appliance dies during the file copy in

https://bugzilla.redhat.com/913145

Misc leaks in virNetClientProgramCall in libvirt 1.0.2

https://bugzilla.redhat.com/912499

Security context on image file gets reset

https://bugzilla.redhat.com/909836

libguestfs-test-tool --qemu segfaults

https://bugzilla.redhat.com/909624

Unexpected non-tail recursion in recv_from_daemon results in stack overflow in very long-running API calls that send progress messages

https://bugzilla.redhat.com/908322

virt-tar fails 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-cat fails on directory names "/dev/stdout: error in chunked encoding"

https://bugzilla.redhat.com/907554

btrfs causes subsequent ntfs-3g filesystem to fail

https://bugzilla.redhat.com/905341

"No such file or directory" when execute "hivex-commit"

https://bugzilla.redhat.com/903620

btrfs_subvolume_list broken due to change in subvolume list output

https://bugzilla.redhat.com/895910

guestmount: rename() incorrectly follows symbolic links

https://bugzilla.redhat.com/895905

guestmount: link() incorrectly returns ENOENT, when it should be EXDEV

https://bugzilla.redhat.com/895904

checksums-out fail to compute the checksums of all regular files in directory

https://bugzilla.redhat.com/894545

libguestfs FTBFS on Fedora 19 because of new ruby

https://bugzilla.redhat.com/890027

virt-sysprep: Setting hostname, domain name and pretty name on Fedora 18 correctly

https://bugzilla.redhat.com/887971

pvcreate fails if partition contains a swap signature

https://bugzilla.redhat.com/887520

zero_free_space: open: /sysroot//ujqqq135.rd3: Cannot allocate memory

https://bugzilla.redhat.com/886915

libguestfs with libvirt attach-method fails with odd error if default hypervisor is Xen

https://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) character

https://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-2023 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

To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

When reporting a bug, please supply: