contrib: Add libguestfs talk.
[libguestfs.git] / RELEASE-NOTES
1 Release notes for libguestfs 1.14.0
2 -----------------------------------
3
4 These release notes only cover the differences from the previous
5 stable/dev branch split (1.12.0).  For detailed changelogs, please see
6 the git repository, or the ChangeLog file distributed in the tarball.
7
8 New features
9
10   Erlang bindings.
11
12   virt-alignment-scan is a new tool to check the alignment of
13   partitions within virtual machines or disk images.
14
15   virt-sparsify is a new tool to make virtual machine disk images
16   sparse.
17
18   virt-sysprep is a new tool to make cloning guests from a template
19   simpler.
20
21   guestfish:
22
23    - New commands setenv, unsetenv, to set environment variables.
24
25    - The input file and line number is printed in error messages.
26
27    - guestfish progress bars are now a "mini-library" used by other
28      tools too.
29
30   guestmount:
31
32    - the --live option (for access to live VMs) now works.
33
34   virt-cat:
35
36    - virt-cat can now handle Windows paths and drive letters (RHBZ#693359).
37
38   virt-filesystems:
39
40    - the MBR partition type byte is displayed in --long output.
41
42   virt-make-fs:
43
44    - virt-make-fs now sets the MBR partition type byte correctly,
45      improving compatibility with Windows (RHBZ#746295).
46
47   virt-resize:
48
49    - virt-resize can now work with guests using extended and logical
50      partitions, in particular Ubuntu guests.
51
52    - virt-resize can now align the first partition of Windows guests,
53      improving performance.  The new virt-resize --align-first option
54      controls this behaviour.
55
56    - The virt-resize --machine-readable flag makes it possible to use
57      virt-resize from other programs.
58
59    - Partitions are now aligned to 128 sectors (usually 64K) by
60      default.  This improves efficiency on high-end storage.  The new
61      virt-resize --alignment option allows the alignment to be
62      adjusted.
63
64   virt-win-reg:
65
66    - The syntax for deleting registry keys and values is documented
67      in the man page (RHBZ#737944).
68
69   library:
70
71    - non-printing characters are escaped correctly in debug output.
72
73    - GUESTFS_EVENT_ENTER is a new event type generated whenever a
74      libguestfs function is called.
75
76    - the library contains systemtap/DTrace probes.
77
78    - the library can now be compiled without hivex (RHBZ#723474).
79
80   inspection:
81
82    - Improve detection of Windows disks.
83
84    - Adds support for:
85          ttylinux - a minimal Linux
86          Mageia (thanks Michael Scherer)
87          OpenSUSE and zypper (thanks Michael Scherer, Vincent Untz)
88          Ubuntu logos (thanks Michael Scherer)
89          NetBSD and pkgsrc (thanks Michael Scherer)
90
91    - Handle some guest types that use /dev/root in /etc/fstab.
92
93    - Fix handling of guests with > 26 disks (thanks Matthew Booth)
94
95    - Add support for guests with HP Smart Array disks (thanks Matthew Booth)
96
97   febootstrap:
98
99    - FEBOOTSTRAP_KERNEL, FEBOOTSTRAP_MODULES environment variables can
100      be set in order to choose which kernel to use for the appliance.
101
102   misc:
103
104    - ArchLinux support now working with Linux 3.0 (thanks Erik Nolte)
105
106    - libvirt disks marked <readonly/> are now added readonly when
107      using the virt-tools '-d' option.
108
109 Security
110
111   (no security problems were found or fixed in this release)
112
113 New APIs
114
115   compress-out, compress-device-out, copy-device-to-device,
116   copy-device-to-file, copy-file-to-device, copy-file-to-file,
117   get-smp, part-to-partnum, set-smp.
118
119   The mount API no longer implicitly adds -o sync,noatime options.
120
121   add-domain has a new 'readonlydisk' optional parameter to control
122   how <readonly/> disks are handled.
123
124 Internals
125
126  - Coverity was run on the source and more bugs were identified and
127    fixed.
128
129  - PCRE library is now required to build libguestfs.
130
131  - APIC is now the default for the appliance.  You can also enable
132    SMP support in the appliance.
133
134  - OCaml bindings now correctly acquire GC lock during callbacks.
135
136  - Out of tree builds should now work correctly (thanks Hilko Bengen).
137
138  - ./configure --with-extra="..." can be used by packagers to set
139    the extra version string.
140
141  - zero, zero-device APIs: if the blocks already contain zeroes,
142    don't write zeroes, so that we don't unnecessarily make the
143    underlying storage non-sparse.
144
145  - is-zero, is-zero-device APIs: optimize these so zero detection is
146    faster.
147
148 Bugs fixed
149
150  - 748266 libguestfs should detect versions of qemu which require -machine pc option
151  - 747290 libguestfs ignores <readonly/> in libvirt XML
152  - 747287 Misleading error message when permission denied opening a disk image
153  - 746295 virt-make-fs doesn't set partition ID
154  - 744795 guestmount --live is not usable
155  - 737944 virt-win-reg hyphen (delete key) syntax may be wrong, and is not documented
156  - 733297 ruby event handlers fail with "exception in callback: wrong argument type Proc (expected Data)"
157  - 731744 libguestfs should escape special/non-printing characters in debug output
158  - 729887 appliance crashes running aug_init with flags=4
159  - 729075 libguestfs confuses Hp_recovery partition with Windows root filesystem
160  - 727178 error: luks_open: cryptsetup: error while loading shared libraries: libfipscheck.so.1: cannot open shared object file: No such file or directory
161  - 726739 libguestfs: error: aug_get: no matching node, trying to find hostname
162  - 723474 If hivex and/or pcre not installed, libguestfs fails to compile
163  - 693359 virt-cat and virt-edit don't handle case sensitive NTFS paths properly
164  - 678231 virt-inspector reports unknown filesystem UUID
165  - 671082 libguestfs does not work with kernel-rt
166  - 666578 libguestfs: unknown filesystem label SWAP-sda2
167  - 642821 virt-resize falls over on a disk image with a logical swap partition
168
169
170
171 Release notes for libguestfs 1.12.0
172 -----------------------------------
173
174 These release notes only cover the differences from the previous
175 stable/dev branch split (1.10.0).  For detailed changelogs, please see
176 the git repository, or the ChangeLog file distributed in the tarball.
177
178 New features
179
180   guestfish:
181
182    - guestfish strings can use escapes,
183      eg. ><fs> write /foo "line 1\nline 2\n"
184
185    - guestfish write-append command can be used to append to files.
186
187    - Long-running file uploads and downloads can be cancelled through the
188      API or by hitting ^C in guestfish.
189
190    - New guestfish "display" command for displaying graphical files
191      inside guests.
192
193    - In guestfish, tab completion now works on /dev/mapper devices.
194
195   virt-inspector:
196
197    - Inspection API can get an icon or logo for certain guests.
198
199    - virt-inspector includes the logo and hostname for certain guests.
200
201    - virt-inspector can now get the version and release numbers for RPM
202      packages.
203
204    - CentOS and Scientific Linux are now treated as separate distros by
205      the inspection API.
206
207   virt-resize:
208
209    - virt-resize can now handle btrfs.
210
211    - New virt-resize --ntfsresize-force option allows Windows VMs to be
212      resized multiple times.
213
214   other virt tools:
215
216    - guestfish, guestmount, virt-cat, virt-df, virt-edit, virt-filesystems,
217      virt-inspector, virt-ls and virt-rescue now allow you to use
218      "-d UUID" option to specify a guest by UUID.  This makes them more
219      robust to use from other programs.
220
221    - virt-ls -lR option allows complex file iteration and guest analysis.
222
223    - virt-win-reg supports HKEY_USERS\<SID> and HKEY_USERS\<username>.
224
225    - virt-win-reg new option --unsafe-printable-strings allows printable
226      strings to be displayed in the output (unsafely: read the documentation
227      before using).
228
229    - virt-edit has been rewritten in C.
230
231   API and language bindings:
232
233    - Java is now completely supported.
234      See http://libguestfs.org/guestfs-java.3.html
235
236    - JRuby is supported via the Java bindings.
237
238    - guestfs_close now appears in trace messages.
239
240    - Python binding adds explicit g.close() method.
241
242    - Python programs can now use the new event API.
243
244    - Python GIL is released during libguestfs calls, allowing multithreaded
245      Python programs to work properly.
246
247    - 9pfs (Plan 9 filesystems exported from the host) are now supported.
248
249    - Add -DGUESTFS_WARN_DEPRECATED=1 to warn about use of deprecated API
250      functions in C programs.
251
252    - New manual page guestfs-recipes(1) with recipes.
253
254    - mkfs-opts can now set inode size and sector size on created filesystems
255      (thanks Nikita Menkovich).
256
257    - guestfs_last_errno is now accessible from OCaml (as g#last_errno ()).
258
259 Security
260
261  - optargs_bitmask is checked even for calls that have no optional
262    arguments.  This closes a possible exploit in the daemon from
263    untrusted callers.
264
265 New APIs
266
267   btrfs-filesystem-resize, get-pgroup, inspect-get-icon, is-zero,
268   is-zero-device, list-9p, list-dm-devices, mount-9p, ntfsresize-opts,
269   set-pgroup, write-append
270
271 Internals
272
273  - Coverity (a static analysis tool) was run across the codebase and
274    many fixes were made.
275
276  - Generator can handle functions that return RBufferOut and have
277    optional arguments.
278
279  - Compatible with Perl 5.14.
280
281  - Compatible with gcc 4.6.
282
283  - Perform safety checks on QEMU.
284
285  - C API tests can now fully test calls that have optional arguments.
286
287  - Use ./configure --enable-install-daemon to install /usr/sbin/guestfsd.
288
289  - po-docs directory now covers all man pages.
290
291  - stderr from qemu process is now captured by the event subsystem.
292
293 Bugs fixed
294
295  - 602997 part-get-bootable gives wrong result with an unordered part layout
296  - 661280 virt-rescue: panic when shutting down: "/sbin/reboot: No such file or directory"
297  - 700369 qemu-system-x86_64 says 'KVM not supported for this target'
298  - 705200 guestmount attempt results in access denied
299  - 714981 'list-filesystems' does not know about virtio 9p filesystems or detect existing mounts
300  - 717786 libguestfs python bindings should have an explicit close call
301  - 721275 virt-resize in F16 should support btrfs
302
303
304 Release notes for libguestfs 1.10.0
305 -----------------------------------
306
307 These release notes only cover the differences from the previous
308 stable/dev branch split (1.8.0).  For detailed changelogs, please see
309 the git repository, or the ChangeLog file distributed in the tarball.
310
311 New features
312
313  - libguestfs and tools can be used against live virtual machines.
314    See the 'guestfish --live' and 'guestmount --live' options, and (for
315    the low-level interface) the new APIs set-attach-method and
316    get-attach-method.
317
318  - New virt tools:
319    virt-copy-in, virt-copy-out, virt-tar-in, virt-tar-out.
320
321  - libguestfs can get the drive letter mappings for Windows guests.
322
323  - virt-inspector displays drive letter mappings for Windows guests.
324
325  - Drive letters can now be used in virt-edit and guestfish programs
326    when operating on Windows guests.
327
328  - virt-resize now works on 32 bit hosts.
329
330  - You can now inspect the install disks and live CDs of many different
331    operating systems.
332
333  - guestfish <! cmd which executes a shell cmd and inlines the result.
334
335  - guestfish, guestmount, virt-rescue now all support --ro and --rw
336    options, and the default for this can be chosen via a configuration
337    file (/etc/libguestfs-tools.conf).
338
339  - New event API allows more than one callback to be registered for
340    each event, makes it possible to call the API from other languages,
341    and allows nearly all log, debug and trace messages to be rerouted
342    from stderr.
343
344  - Greater FHS compliance for temporary files, including using /var/tmp
345    for large cached files that should survive reboot (instead of /tmp).
346
347  - guestfish, guestmount -m option allows mount options to be passed
348    through to the underlying filesystem.
349
350  - mkfs-opts allows filesystem features to be specified.
351
352  - More intelligent handling of mountpoints, allowing mkmountpoint, mount
353    and umount-all commands to work together properly.
354
355  - Trace messages are prefixed with a distinct string, allowing them to
356    be easily 'grepped' out from debug output.
357
358  - guestfs_launch (guestfish 'run' command) now produces progress
359    messages (a guestfish progress bar) if it takes longer than 5
360    seconds to run.
361
362  - Several long-running commands where we are unable to estimate time
363    to completion generate "pulse mode" progress events.  Progress bar
364    in guestfish has been updated to display these.
365
366  - Publish new example code in: C, Perl, Python, OCaml, Ruby.
367
368  - New virt-dhcp-address example program.
369
370  - The Java and Ruby bindings have been improved greatly.
371
372  - Perl includes a way to get the errno of the last error.
373
374  - Python bindings now compatible with rpyc (thanks Erez Shinan).
375
376  - Transifex is now being used to manage translations.
377    http://www.transifex.net/projects/p/libguestfs/
378
379  - Inspection now supports Red Hat Desktop, Slackware distributions.
380
381  - Inspection no longer fails for Windows guests that have two or
382    more disks.
383
384  - Inspection can now tell the difference between Windows 2008 Server
385    and Windows 7.
386
387  - Inspection can detect 32 bit applications installed in 64 bit
388    Windows, running on the WOW64 emulator.
389
390  - A series of protocol fixes has fixed the old bug RHBZ#576879
391    which used to cause errors during the upload command to lose
392    protocol synchronization.
393
394  - New logo!
395
396 Security
397
398   [none]
399
400 New APIs
401
402   first-private, get-attach-method, inspect-get-drive-mappings,
403   inspect-get-product-variant,
404   inspect-get-windows-current-control-set, next-private, resize2fs-M,
405   set-attach-method.
406
407 Internals
408
409  - The 'HACKING' file is obsolete.  The contents have been moved into
410    a section of the guestfs(3) manual page.
411
412  - libguestfs-test-tool simplified.  It no longer needs the static
413    binary or tries to construct an ISO.
414
415  - rpcgen-generated files are compiled with -fno-strict-aliasing
416    which should be safer (thanks Matt Booth).
417
418  - virt-resize was rewritten in OCaml.
419
420  - guestfish and other tools tested with valgrind; some memory leaks
421    were fixed.
422
423 Bugs fixed
424
425  - 502533 Updated Polish translation of libguestfs
426  - 576879 libguestfs protocol loses synchronization if you 'upload' before mounting disks
427  - 599503 document that mkmountpoint and umount-all cannot be mixed
428  - 617440 guestfish: fails to tilde expand '~' when the $HOME env is unset
429  - 664558 RFE: Allow to set log callback in Ruby bindings
430  - 665358 Punjabi Translation Completed (pa_IN)
431  - 666577 libguestfs: unknown filesystem /dev/fd0
432  - 667610 Multiple bugs, memory leaks in libguestfs ruby bindings
433  - 668112 virt-filesystems command fails on guest with corrupt filesystem label
434  - 668574 guestfish -i is trying to mount all mounts from /etc/fstab and fails with an error when device doesn't exists
435  - 673479 Add a grep-friendly string to LIBGUESTFS_TRACE output
436  - 674130 Inspection code fails for Windows guest with two disks
437  - 682756 libguestfs trace segfaults when list-filesystems returns error
438  - 682979 libguestfs incorrectly detects Red Hat desktop as 'redhat-based' instead of 'redhat'
439  - 690819 mkfs fails creating a filesytem on a disk device when using a disk with 'ide' interface
440  - 691389 Extended attributes don't work over guestmount (FUSE)
441  - 691724 virt-inspector reports unknown filesystem /dev/vda1
442  - 692545 inspect-list-applications fails to detect 32 bit apps installed under WOW64 emulator on 64 bit Windows
443  - 693324 sfdisk's python interface only accepts lists of type 'list' for the lines parameter
444
445 Release notes for libguestfs 1.8.0
446 ----------------------------------
447
448 These release notes only cover the differences from the previous
449 stable/dev branch split (1.6.0).  For detailed changelogs, please see
450 the git repository, or the ChangeLog file distributed in the tarball.
451
452 New features
453
454  - Support and packages for Debian and Ubuntu.
455
456  - Daily builds from git repository on Debian and Ubuntu to reduce risk
457    of regressions.
458
459  - Port to ArchLinux 'pacman' (thanks Thomas S Hatch).
460
461  - The following tools have been rewritten in C (originally in Perl):
462
463      . virt-cat
464      . virt-df
465      . virt-inspector
466      . virt-ls
467      . virt-rescue
468
469  - Some C tools support encrypted guests automatically.  This is
470    supported in: guestfish, guestmount, virt-cat, virt-inspector,
471    virt-ls.
472
473  - New tool virt-filesystems (in C) which is a replacement for
474    virt-list-filesystems and virt-list-partitions, and has a superset
475    of the functionality of those tools.
476
477  - guestfish, guestmount and the C tools use unified command line option
478    parsing, so they support many common options such as '-a disk.img',
479    '-d libvirt-domain', '-x', '-v'.  The old command line option
480    parsing is preserved for compatibility in scripts etc.
481
482  - guestfish no longer has any dependencies on Perl
483
484  - New man pages containing programming examples: guestfs-examples(3) (C/C++),
485    guestfs-ocaml(3), guestfs-python(3), guestfs-ruby(3).
486
487  - Trace mode prints return values from API functions.
488
489  - virt-inspector can list applications installed in Windows guests, along
490    with a great deal of information about those applications.
491
492  - Add support for inspecting: Linux Mint, Mandriva, FreeBSD.
493
494  - guestfish --rw option (with no effect currently) to make potentially
495    dangerous write access explicit.
496
497  - guestfish --listen --csh for compatibility with csh, tcsh (thanks
498    Eric Blake).
499
500  - The first upstream version that introduced each API function is now
501    documented in guestfs(3).
502
503  - guestfs_last_errno allows you to retrieve the errno from the
504    daemon, correctly translated to the local operating system.
505
506  - Functions can now have optional parameters.
507
508  - Progress bars and progress notifications can now happen for upload
509    commands.
510
511  - Appliance builder more careful about not leaving temporary files
512    around in /tmp.
513
514  - getfattr/setfattr commands added to virt-rescue.
515
516  - ROADMAP file covers roadmap and goals for future releases.
517
518 Security
519
520  - New SECURITY section in guestfs(3) API documentation.
521
522  - virt-inspector no longer runs any guest commands.
523
524  - Inspection code is more careful about avoiding very large files
525    from guests which might previously have caused a denial of service.
526
527  - FUSE calls into guestmount are now traced when using guestmount -x.
528
529 New APIs
530
531  - add-domain
532  - add-drive-opts
533  - getxattr
534  - inspect-get-hostname
535  - inspect-get-package-format
536  - inspect-get-package-management
537  - inspect-get-roots
538  - inspect-list-applications
539  - lgetxattr
540  - mkfs-opts
541
542 Internals
543
544  - C programs now only link precisely with the libraries that they use.
545
546  - PCRE, libmagic, hivex and libvirt libraries are now completely
547    optional for building.
548
549  - Multiple memory leaks and file descriptor leaks fixed.
550
551  - Add a POD wrapper to unify generation of man pages and HTML files
552    across all programs.
553
554  - Source includes phony images of Fedora, Debian, Ubuntu and
555    Windows guests.
556
557  - Ruby bindings have 'make install' rule.
558
559  - <guestfs.h> is now a single file.
560
561  - <guestfs.h> does not require XDR headers.
562
563  - ocaml xml-light library is no longer required to build (thanks
564    Maxim Koltsov).
565
566  - ./configure --disable-[...] for each language binding (thanks
567    Maxim Koltsov).
568
569  - Old ocaml-viewer program removed (use guestfs-browser instead).
570
571  - New C API test type 'InitScratchFS' makes the tests run a little
572    more quickly.
573
574  - Excluded packages in the appliance are now listed in a separate
575    file appliance/excludelist.in, and can be customized per-distro.
576
577 Bugs fixed
578
579  - 663407 readlink and readlinklist returns /sysroot/ in some paths
580  - 661280 virt-rescue: panic when shutting down: "/sbin/reboot: No such file or directory"
581  - 657499 checksum: wrong check sum type causes umount to fail
582  - 655554 Whole disk paths are not made canonical by virt-inspector
583  - 654638 openssl updated to 1.0.0b libguestfs depends on exact file names
584  - 652796 ruby bindings not installed by 'make install', hence omitted from the binary distribution
585
586 Release notes for libguestfs 1.6.0
587 ----------------------------------
588
589 These release notes only cover the differences from the previous
590 stable/dev branch split (1.4.0).  For detailed changelogs, please see
591 the git repository, or the ChangeLog file distributed in the tarball.
592
593 New features
594
595  - Use a new method for creating and caching the appliance.  This
596    greatly improves the performance of libguestfs, often by a factor
597    of x 4 to x 5.
598
599  - Support for guest inspection (like virt-inspector) via the ordinary
600    API and all language bindings.  'guestfish -i' option is as a side-
601    effect much quicker.
602
603  - virt-inspector and core inspection API can now detect guests running:
604    Fedora, Debian, Ubuntu, Windows, Red Hat Enterprise Linux, CentOS,
605    Scientific Linux, Gentoo, Pardus, Arch Linux, MeeGo.
606
607  - Support for LUKS whole-disk encryption in guests.
608
609  - PHP bindings.
610
611  - Progress messages (and progress bars in guestfish and virt-resize)
612    for certain long-running operations.
613
614  - virt-df is now much more efficient.  Use '--one-per-guest' to restore
615    the old per-guest isolation behaviour.
616
617  - guestfish 'copy-in' and 'copy-out' commands for copying files and
618    directories recursively in and out of the guest.
619
620  - guestfish 'hexedit' command for doing binary edits to devices and
621    files.
622
623  - Change guestfish -i syntax to allow commands to be specified on the
624    command line (retaining backwards compatibility).
625
626  - guestfish '-d <domain>' for adding disks from libvirt domains.
627
628  - guestfish '-N' option supports several new prepared disk image types:
629          lvfs : disk with LV formatted with filesystem
630            lv : disk with LV
631      bootroot : boot+root
632    bootrootlv : boot and root on LV
633
634  - guestfish 'more' and 'edit' commands now work with arbitrary files.
635
636  - guestfish '--echo-keys' option allows you to echo keys/passphrases
637    while typing them.
638
639  - guestmount now supports -a / -d / -i options, like guestfish.
640
641  - Use virtio-serial for communications with the appliance.  This
642    also has a major performance benefit.
643
644  - virt-edit '-b' option to create a backup of edited files.
645
646  - virt-edit '-e' option for non-interactive edits to files.
647
648  - Ability to capture core dumps from the appliance (thanks Matthew Booth).
649
650  - virt-rescue now shuts down cleanly (thanks Matthew Booth).
651
652  - virt-rescue now has a --network option to enable network access.
653
654  - virt-resize can now handle guests which use GPT partition table format.
655
656  - virt-resize has better support for shrinking guests.
657
658  - virt-resize supports qcow2-format guests.
659
660  - $TMPDIR can be used to override almost all temporary directory usage.
661
662  - OCaml users can use an alternate OO-style of coding, eg. g#launch ()
663
664  - The API supports calls which take optional parameters, eg.
665      $g->add_drive_opts ("disk", readonly => 1);
666
667  - Trace output now escapes and shortens large strings (thanks
668    Matthew Booth).
669
670  - Autosync is now on by default, resulting in more reliable behaviour
671    when the handle is closed.
672
673  - virt-df --uuid option allows you to follow a domain across migration
674    and renaming.
675
676  - Translations of manual pages.
677
678 Security
679
680  - CVE-2010-3851 libguestfs: missing disk format specifier when adding a disk
681    https://www.redhat.com/archives/libguestfs/2010-October/msg00036.html
682    This is comprehensively fixed in this release, and the fix will be
683    backported to the other stable branches after more testing.
684
685  - virt-inspector no longer relies on untrusted guest code to list
686    applications in some guests.
687
688 New APIs
689
690   download-offset, file-architecture, findfs-label, findfs-uuid,
691   inspect-os, inspect-get-arch, inspect-get-distro,
692   inspect-get-filesystems, inspect-get-major-version,
693   inspect-get-minor-version, inspect-get-mountpoints,
694   inspect-get-product-name, inspect-get-type, is-blockdev, is-chardev,
695   is-fifo, is-lv, is-socket, is-symlink, list-filesystems, luks-add-key,
696   luks-close, luks-format, luks-format-cipher, luks-kill-slot,
697   luks-open, luks-open-ro, lvm-clear-filter, lvm-canonical-lv-name,
698   lvm-set-filter, part-to-dev, pread-device, pwrite-device,
699   upload-offset
700
701 Internals
702
703  - Use size_t for loop iterators.
704  - Refactor the library code into separate files.
705  - Refactor the generator code into separate files.
706  - Generate guestfish commands.
707  - guestfish & guestmount options processing is unified.
708  - Protocol changes:
709      error message size increased to 64K
710      send errno to library
711  - Add 'make bindist' to make a binary distribution.
712  - Cleaner behaviour under valgrind.
713  - More testing of the guestfish command line options and libvirt
714    integration.
715  - The Perl inspection code is no longer used by any of the tools.
716
717 Bugs fixed
718
719  - 646822 libguestfs trace mode should not print long binary strings
720  - 646821 virt-df should have --uuid option
721  - 646432 /dev/mapper paths should not be returned from guestfs_mountpoints
722  - 643624 libguestfs tools documentation should describe how to quote guest domain names from shell
723  - 642934 No way to specify disk format when adding a disk to libguestfs
724  - 642933 guestfs_list_filesystems should be used in all possible places
725  - 642932 guestmount options should match guestfish options
726  - 642930 virt-inspector (Sys::Guestfs::Lib) should use C inspection APIs
727  - 642929 C inspection code should ignore /dev/fd* in /etc/fstab
728  - 642826 virt-resize converts any other image format to raw without notifying user, instructions do not account for this
729  - 640961 Document that grub-install might be needed for old Linux guests after virt-resize
730  - 639986 virt-df --csv does not properly quote " in libvirt domain names
731  - 639405 Interrupted cached appliance creation leaves libguestfs unusable
732  - 638901 Appliance filename should not contain repository name
733  - 638899 /dev/mapper paths should not be returned from C inspection APIs
734  - 636918 Updates to Spanish translation
735  - 636061 [abrt] guestfish-1.2.11-1.fc12: malloc_consolidate: Process /usr/bin/guestfish was killed by signal 11 (SIGSEGV)
736  - 635969 glob echo mkfs ext2 /dev/vd[b-t]1 prints garbage
737  - 634246 guestfs_part_get_parttype returns "loop" when run against a partition, LV or filesystem
738  - 633766 virt-resize --shrink fails
739  - 633357 Updates to Spanish translation
740  - 633096 virt-resize calculates block device size incorrectly, doesn't work with qcow2 target
741  - 629593 Dutch translation added
742  - 627556 Updates to Spanish translations of libguestfs
743  - 626843 Updates to Spanish translations
744  - 619793 [RFE] Need a way to determine if a particular block device is a logical volume
745  - 618556 virt-rescue return none zero value when exit
746  - 617200 mount operation failed and hung on some images which running in read-only mode
747  - 610880 libguestfs should set broader read perms on tmpdir, so works in some situations when executed with umask 077
748  - 599503 document that mkmountpoint and umount-all cannot be mixed
749  - 571714 Running virt-df on disk image relabels it, so qemu can no longer write to it.
750  - 502533 Updated Polish translation of libguestfs
751
752 Release notes for libguestfs 1.4.0
753 ----------------------------------
754
755 These release notes only cover the differences from the previous
756 stable/dev branch split (1.2.0).  For detailed changelogs, please see
757 the git repository, or the ChangeLog file distributed in the tarball.
758
759 New features
760
761  - guestfish lets you choose a prepared disk image, eg:
762      guestfish -N fs:ext4
763
764  - Add write support to guestmount (FUSE) module.
765
766  - virt-resize can now resize the content of partitions and logical
767    volumes in the guest, and we have better support for shrinking guests.
768
769  - Bash tab-completion script for guestfish.
770
771  - Add ZFS support to virt-rescue.
772
773  - New tool 'virt-make-fs' for creating filesystems with content.
774
775  - Allow suffixes on any guestfish number parameter, eg. "1M".
776
777  - guestfish 'man' command opens the manual page.
778
779  - guestfish supports a "heredoc" syntax for uploading files:
780      upload -<<_end_ /foo
781      content
782      _end_
783
784  - Some guestfish commands now print their output in octal or hex
785    where appropriate (RHBZ#583242).
786
787  - Allow dash prefix on guestfish command line.  This ignores any
788    error from the second command:                   (RHBZ#578407)
789      guestfish -- cmd1 : -cmd2 : cmd3
790
791  - guestfish -h / help command now returns an error for non-existent
792    commands (RHBZ#597145).
793
794  - New 'supported' command in guestfish to list optional groups of
795    commands which are supported by the daemon / configuration.
796
797  - virt-inspector and guestfish -i now work for filenames which
798    contain spaces (RHBZ#507810).
799
800  - Change the protocol to use link-local addresses, to avoid
801    conflicting with any address that the host might be using
802    (RHBZ#588763).
803
804  - libguestfs now sets the correct time and timezone on filesystem
805    modifications.
806
807  - Sort the domains into alphabetical order in virt-df.
808
809  - Make mkfs-b command work for FAT and NTFS by mapping the blocksize
810    parameter to the cluster size (RHBZ#599464).
811
812  - Add version numbers to Perl modules (RHBZ#521674).
813
814  - Localization now works for all the libguestfs tools (RHBZ#559963).
815
816  - Tools now support filesystem-on-image VMs (RHBZ#590167).
817
818  - virt-list-partitions has a '-t' option to show the total size of disks.
819
820  - Include extra Augeas lenses in the supermin appliance (Matthew Booth).
821
822  - Add error and close callbacks.
823
824  - Add explicit close method in the Perl API.
825
826  - Multiple fixes for RHEL 5 compatibility.
827
828  - Multiple fixes for Debian/Ubuntu compatibility.
829
830  - Multiple revisions to improve the documentation.
831
832 Security
833
834  - Fix a potential DoS in virt-inspector and virt-v2v if a specially
835    crafted disk image contained a char device in place of one of the
836    configuration files that we read under /etc (RHBZ#582484).
837
838 New APIs
839
840  - aug-clear - clear Augeas path
841  - available-all-groups - return a list of all optional groups
842  - base64-in - upload base64-encoded data to file
843  - base64-out - download file and encode as base64
844  - checksum-device - compute checksums on the contents of a device
845  - checksums-out - compute checksums of multiple files in a directory
846  - debug-upload - upload a file to the appliance
847  - fallocate64 - preallocate a file in the guest filesystem
848  - fill-pattern - fill a file with a repeating pattern of bytes
849  - get-umask - get the current umask
850  - lvresize-free - expand an LV to fill free space
851  - ntfsresize - resize an NTFS filesystem
852  - ntfsresize-size - resize an NTFS filesystem (with size)
853  - part-del - delete a partition
854  - part-get-bootable - get the bootable flag of a partition
855  - part-get-mbr-id - get the MBR type byte of a partition
856  - part-set-mbr-id - set the MBR type byte of a partition
857  - pvresize-size - resize a physical volume (with size)
858  - pwrite - write to part of a file
859  - resize2fs-size - resize an ext2/3/4 filesystem (with size)
860  - txz-in - unpack compressed tarball to directory (RHBZ#580556)
861  - txz-out - pack directory into compressed tarball (RHBZ#580556)
862  - vfs-label - get the filesystem label
863  - vfs-uuid - get the filesystem UUID
864  - vgscan - rescan for LVM physical volumes, volume groups and logical volumes
865  - write - create a new file
866  - zero-device - write zeroes to an entire device
867
868 Internals
869
870  - Extend the generator to support testing optional features.
871  - Stricter checks on input parameters to many calls (RHBZ#501893 RHBZ#501894)
872  - Extend the protocol to support sending arbitrary 8 bit data buffers.
873  - Ship 'BUGS' file with releases.  This is a summary of the bugs in
874    the Red Hat Bugzilla database.
875  - Ship 'RELEASE-NOTES' file with releases, containing release notes.
876  - Unify supermin appliance building into one place, in febootstrap 2.7.
877  - Fix the protocol code to handle the case where both ends send cancel
878    messages at the same time.
879
880 Bugs fixed
881
882  - 612178 guestfish: using -m option in conjunction with --listen option causes appliance to die
883  - 610880 libguestfs should set broader read perms on tmpdir, so works in some situations when executed with umask 077
884  - 604691 OCaml bindings are not thread safe
885  - 603870 Updates to Spanish translation
886  - 602592 [RFE] expose guestfs_close in perl bindings
887  - 600977 virt-df -h --csv "Argument .. isn't numeric in printf"
888  - 599464 mkfs-b does not support vfat/ntfs
889  - 598807 add_cdrom does not work in RHEL 6
890  - 598309 part-list and several other cmd failed on libguestfs on RHEL5
891  - 597145 guestfish 'help' command should indicate error in exit status with an unknown command
892  - 597135 guestfish write-file cmd does not check "size" parameter
893  - 597118 A warning should be given in the help of mke2journal-L for the length of label
894  - 597112 get-e2uuid should use blkid instead of "tune2fs -l" to get filesystem UUID
895  - 596776 virt-inspector doesn't discover modprobe aliases on RHEL 3 guests
896  - 596763 Updates to Spanish translation
897  - 593292 Updates to Spanish translation
898  - 592883 can not edit files on  images mounted with guestmount cmd
899  - 592360 Updates to Spanish translation
900  - 591250 virt-tar prints "tar_in: tar subcommand failed on directory" if the archive is compressed or not in the right format
901  - 591155 virt-tar prints "tar_in: tar subcommand failed on directory" if a disk image is not writable
902  - 591142 virt-inspector should give an error for unrecognized disk images
903  - 590167 virt-inspector and other virt tools should be able to handle filesystem-on-image VMs
904  - 589039 guestfish read-file cmd will cause daemon hang when read large files
905  - 588851 guestfs_launch() returns -1, but guestfs_last_error() == NULL
906  - 588763 libguestfs should use non-public or link-local addresses for appliance network
907  - 588733 Updates to Spanish translation
908  - 588651 guestfish 'strings-e' cmd does not give proper error message or hint
909  - 587484 lvresize can't reduce size of a volumn
910  - 585961 Updates to Spanish translation
911  - 585223 ntfsresize should support shrinking filesystems
912  - 585222 pvresize should support shrinking PVs
913  - 585221 resize2fs should support shrinking filesystems
914  - 584038 Updates to Spanish translation
915  - 583554 [FEAT] mknod-mode command is needed to set mode explicitly
916  - 583242 [RFE] guestfish should print outputs in a suitable base (eg. octal for modes)
917  - 582993 guestfish eats words when tab completing case (in)sensitive paths
918  - 582953 Misleading help information about lvcreate command
919  - 582948 mknod command doesn't make block, character or FIFO devices
920  - 582929 mknod doesn't check for invalid mode
921  - 582901 guestfish chmod/umask commands do not check invalid mode value
922  - 582899 guestfish:sparse is missed from command autocomplete list
923  - 582891 [Feature Request] behavior and return value of guestfish umask cmd should be changed
924  - 582548 [mknod] umask shouldn't take effect when mode is set explicitly
925  - 582484 some guestfish sub commands can not handle special files properly
926  - 582252 Updates to Spanish translation
927  - 581501 Updates to Spanish translation
928  - 580650 virt-inspector warns "No grub default specified at /usr/lib/perl5/Sys/Guestfs/Lib.pm at [...]"
929  - 580556 request for libguestfs to support .txz tarballs
930  - 580246 tar-in command hangs if uploading more than available space
931  - 580016 aug-ls in guestfish does not take augeas variable as argument
932  - 579664 guestfish doesn't report error when there is not enough space for image allocation
933  - 579608 multiple commands in guestfish can not work for symbol links
934  - 579155 libguestfs hangs if qemu doesn't start (in null vmchannel mode)
935  - 578407 the prefix '-' in sub-command isn't handled by guestfish in remote control mode
936  - 576879 libguestfs protocol loses synchronization if you 'upload' before mounting disks
937  - 559963 libguestfs Perl programs do set locale, but still localization doesn't work
938  - 521674 Perl modules are unversioned, but should carry version numbers
939  - 516096 Race condition in test_swapon_label_0: /sbin/blockdev: BLKRRPART: Device or resource busy
940  - 507810 guestfish -i / virt-inspector cannot handle spaces in filenames
941  - 502533 Updated Polish translation of libguestfs
942  - 501894 Some String parameters should be OptString
943  - 501893 String parameters should be checked for != NULL
944  - 501889 write-file does not support strings containing ASCII NUL
945  - 484986 grub-install fails on virtio disk
946
947 Release notes for previous versions of libguestfs
948 -------------------------------------------------
949
950 2009-11-10 : 1.0.78
951 https://www.redhat.com/archives/libguestfs/2009-November/msg00095.html
952
953 2009-09-13 : 1.0.67
954 https://www.redhat.com/archives/libguestfs/2009-August/msg00281.html
955
956 2009-07-23 : 1.0.64
957 https://www.redhat.com/archives/libguestfs/2009-July/msg00059.html
958
959 2009-07-14 : 1.0.59
960 https://www.redhat.com/archives/libguestfs/2009-July/msg00023.html
961
962 2009-04-01 : Initial announcement
963 http://rwmj.wordpress.com/2009/04/01/libguestfs-access-and-modify-virtual-machine-disk-images/