Richard W.M. Jones [Wed, 28 Sep 2011 10:14:06 +0000 (11:14 +0100)]
New APIs: compress-out, compress-device-out.
These APIs let you copy compressed files or devices out from the disk
image.
Compression is useful for large images which are mostly zeroes. We
cannot currently do sparseness detection, and compression gives us a
form of zero detection for free.
Example usage:
$ guestfish --ro -a /dev/vg_pin/F16x64 -i \
compress-out gzip /etc/passwd /tmp/passwd.gz
$ file -z /tmp/passwd.gz
/tmp/passwd.gz: ASCII text (gzip compressed data, was "passwd", from
Unix, last modified: Sun Aug 28 14:40:46 2011)
Richard W.M. Jones [Wed, 28 Sep 2011 13:17:53 +0000 (14:17 +0100)]
daemon: Move useful is_zero function to header file.
Code motion.
Richard W.M. Jones [Mon, 26 Sep 2011 12:34:12 +0000 (13:34 +0100)]
Add no_timer_check to disable faulty test during boot (RHBZ#502058).
See:
https://bugzilla.redhat.com/show_bug.cgi?id=502058#c15
https://bugzilla.redhat.com/show_bug.cgi?id=698842#c8
This updates commit
79e66f89e2f6c27486476d7857da58feb491bf5c.
Richard W.M. Jones [Mon, 26 Sep 2011 08:58:46 +0000 (09:58 +0100)]
docs: Show how to use a qemu wrapper to edit the qemu command line.
Richard W.M. Jones [Sat, 24 Sep 2011 21:32:46 +0000 (22:32 +0100)]
Version 1.13.14.
Richard W.M. Jones [Sat, 24 Sep 2011 17:50:00 +0000 (18:50 +0100)]
Update to latest gnulib.
Richard W.M. Jones [Thu, 22 Sep 2011 13:41:46 +0000 (14:41 +0100)]
erlang: Use the official autoconf macros.
Richard W.M. Jones [Wed, 21 Sep 2011 21:28:11 +0000 (22:28 +0100)]
todo: Suggestion to improve Erlang bindings.
Richard W.M. Jones [Wed, 21 Sep 2011 18:31:10 +0000 (19:31 +0100)]
Enable APIC.
Originally this was disabled to work around RHBZ#502058. That bug was
never officially fixed, but it may have fixed itself.
In the meantime, KVM has broken ordinary PIC support (RHBZ#723822).
Since APIC is the most common way that regular Linux and Windows
guests run it makes sense to remove this hack.
Richard W.M. Jones [Wed, 21 Sep 2011 14:12:28 +0000 (15:12 +0100)]
Version 1.13.13.
Richard W.M. Jones [Tue, 20 Sep 2011 17:03:58 +0000 (18:03 +0100)]
Add Erlang bindings.
Richard W.M. Jones [Fri, 16 Sep 2011 14:26:20 +0000 (15:26 +0100)]
inspection: Handle /dev/root in /etc/fstab.
This means "the device that holds /etc/fstab", so map it correctly.
This fixes support for ttylinux and also some other guests that use
/dev/root instead of a real device name.
Richard W.M. Jones [Fri, 16 Sep 2011 14:21:26 +0000 (15:21 +0100)]
inspection: Add support for ttylinux (a minimal Linux).
Richard W.M. Jones [Thu, 15 Sep 2011 21:02:43 +0000 (22:02 +0100)]
Add an optional group ("grub") for the guestfs_grub_install API.
This also improves the documentation for this call, pointing out
several pitfalls in using it.
This unfortunately breaks existing callers that might use
guestfs_grub_install without checking for this new group.
Richard W.M. Jones [Wed, 14 Sep 2011 17:56:38 +0000 (18:56 +0100)]
Version 1.13.12.
Richard Jones [Wed, 14 Sep 2011 12:52:39 +0000 (13:52 +0100)]
test-tool: Display TMPDIR.
Richard Jones [Wed, 14 Sep 2011 12:19:11 +0000 (13:19 +0100)]
test-tool: Refresh libguestfs-test-tool man page.
Richard Jones [Wed, 14 Sep 2011 12:00:34 +0000 (13:00 +0100)]
test-tool: Make the default timeout be 600 seconds (10 minutes).
We could sometimes hit the 120 second timeout, eg. if the appliance
needed to be rebuilt and the machine was very slow and/or under heavy
I/O load. 10 minutes should be enough for any reasonable situation.
Richard Jones [Wed, 14 Sep 2011 11:58:43 +0000 (12:58 +0100)]
test-tool: Document the -t command line option.
Richard Jones [Wed, 14 Sep 2011 11:58:30 +0000 (12:58 +0100)]
test-tool: Use B<...> for command line options in man page.
Richard Jones [Mon, 12 Sep 2011 10:36:00 +0000 (11:36 +0100)]
po-docs: Make podfiles sort stable.
Richard Jones [Mon, 12 Sep 2011 10:33:19 +0000 (11:33 +0100)]
Stable OCaml dependencies.
Richard W.M. Jones [Wed, 7 Sep 2011 14:21:37 +0000 (15:21 +0100)]
docs: Add a section explaining the appliance boot process.
Richard W.M. Jones [Thu, 1 Sep 2011 13:55:18 +0000 (14:55 +0100)]
Version 1.13.11.
Richard W.M. Jones [Thu, 1 Sep 2011 12:37:20 +0000 (13:37 +0100)]
Remove old regression test that mainly tested a buggy API.
The guestfs_ll command currently lists files in the appliance if you
prefix filenames with "/..". However this is a bug, not a feature,
and we should not be testing it.
Richard W.M. Jones [Thu, 1 Sep 2011 12:15:13 +0000 (13:15 +0100)]
debian: Missing build dependency on db4.8-util.
Richard W.M. Jones [Thu, 1 Sep 2011 11:59:15 +0000 (12:59 +0100)]
daemon: Factor out name of virtio serial channel.
This is just code motion.
Richard W.M. Jones [Thu, 1 Sep 2011 11:58:30 +0000 (12:58 +0100)]
Create /sys directory if it doesn't exist already.
Ubuntu 10.04 LTS packages don't create /sys.
Richard W.M. Jones [Sun, 28 Aug 2011 16:58:34 +0000 (17:58 +0100)]
Version 1.13.10.
Richard W.M. Jones [Sun, 28 Aug 2011 16:35:34 +0000 (17:35 +0100)]
cat: Small documentation correction.
Richard W.M. Jones [Sat, 27 Aug 2011 16:53:03 +0000 (17:53 +0100)]
inspector: Use xmlstarlet instead of xpath in examples.
Richard W.M. Jones [Sat, 27 Aug 2011 16:47:10 +0000 (17:47 +0100)]
man pages: Add a standard EXIT STATUS section to most pages.
Richard W.M. Jones [Fri, 26 Aug 2011 21:55:09 +0000 (22:55 +0100)]
Version 1.13.9.
Richard W.M. Jones [Fri, 26 Aug 2011 21:40:27 +0000 (22:40 +0100)]
progress: Make default UTF-8 progress bar less black.
Richard W.M. Jones [Fri, 26 Aug 2011 21:34:49 +0000 (22:34 +0100)]
resize: Add --machine-readable option for machine friendly output.
Richard W.M. Jones [Fri, 26 Aug 2011 21:03:47 +0000 (22:03 +0100)]
progress: Add machine readable flag.
Machine-readable progress bars look like:
0/100
1/100
2/100
Richard W.M. Jones [Fri, 26 Aug 2011 18:21:23 +0000 (19:21 +0100)]
resize: Use guestfish progress bar mini-library.
There are two benefits:
- the progress bars look better
- there is a reasonably accurate estimate of how long each operation
will take
Richard W.M. Jones [Fri, 26 Aug 2011 19:28:20 +0000 (20:28 +0100)]
Add GUESTFS_EVENT_ENTER event.
This event is generated whenever a libguestfs function is called.
Richard W.M. Jones [Fri, 26 Aug 2011 17:17:39 +0000 (18:17 +0100)]
fish: Make progress bars into a mini library.
This library could now be called from other virt tools.
Richard W.M. Jones [Fri, 26 Aug 2011 16:39:06 +0000 (17:39 +0100)]
fish: clarify comment: shared source files are used by virt tools too.
Richard W.M. Jones [Fri, 26 Aug 2011 10:54:05 +0000 (11:54 +0100)]
Version 1.13.8.
Richard W.M. Jones [Thu, 25 Aug 2011 12:56:09 +0000 (13:56 +0100)]
ruby: Check Ruby callback exists before we call it (RHBZ#733297).
Richard W.M. Jones [Thu, 25 Aug 2011 12:25:07 +0000 (13:25 +0100)]
ruby: Use a regular C array to pass the arguments through rb_rescue.
Richard W.M. Jones [Thu, 25 Aug 2011 12:11:28 +0000 (13:11 +0100)]
ruby: Append newline character after printing exception in callback.
Hilko Bengen [Mon, 22 Aug 2011 18:42:09 +0000 (20:42 +0200)]
python: Newer versions want parentheses around arguments of "print"
Hilko Bengen [Mon, 22 Aug 2011 18:42:08 +0000 (20:42 +0200)]
python: Don't build static library
Richard W.M. Jones [Tue, 23 Aug 2011 19:36:52 +0000 (20:36 +0100)]
Version 1.13.7.
Richard W.M. Jones [Tue, 23 Aug 2011 19:21:29 +0000 (20:21 +0100)]
php: Fix bug in PHP tests.
We partitioned the disk, and then tried to create a PV on the whole
disk. LVM gave the error:
Device /dev/vda not found (or ignored by filtering).
It is unclear how this bug persisted for so long. It might be due to
a change in LVM.
Richard W.M. Jones [Tue, 23 Aug 2011 18:50:11 +0000 (19:50 +0100)]
Coverity: fix memory leak along error path.
Richard W.M. Jones [Tue, 23 Aug 2011 18:29:46 +0000 (19:29 +0100)]
Coverity: Initialize msg buffer.
msg_flags was not being initialized and would have been passed to
sendmsg with a random value.
Richard W.M. Jones [Tue, 23 Aug 2011 18:26:35 +0000 (19:26 +0100)]
Coverity: fix memory leak in guestfish.
Richard W.M. Jones [Tue, 23 Aug 2011 18:19:13 +0000 (19:19 +0100)]
Coverity: in daemon, free struct in RStruct, RStructList functions.
Richard W.M. Jones [Tue, 23 Aug 2011 17:56:12 +0000 (18:56 +0100)]
pclose: Fix other places where we only tested pclose == -1.
pclose can return > 0 when the status of the command was non-zero.
Richard W.M. Jones [Tue, 23 Aug 2011 17:53:38 +0000 (18:53 +0100)]
test_qemu: Improve the error message.
Note that errno is probably not set to a useful value here, so there
is not much point recording it.
Richard W.M. Jones [Tue, 23 Aug 2011 17:53:00 +0000 (18:53 +0100)]
test_qemu: pclose may return any != 0 on error.
In particular pclose returns a status > 0 if the command fails.
Richard W.M. Jones [Tue, 23 Aug 2011 17:43:24 +0000 (18:43 +0100)]
qemu detection: Free up previous qemu help/version strings if they exist.
Richard W.M. Jones [Tue, 23 Aug 2011 17:02:24 +0000 (18:02 +0100)]
Coverity: test_qemu: Ensure FILE * is not leaked along error paths.
This refactors the code in test_qemu slightly to ensure that
FILE *fp is not leaked on error paths.
Richard W.M. Jones [Tue, 23 Aug 2011 15:47:18 +0000 (16:47 +0100)]
Coverity: Check guestfs_inspect_get_product_name() != NULL before using.
Richard W.M. Jones [Tue, 23 Aug 2011 15:41:07 +0000 (16:41 +0100)]
rescue: Ignore errno after guestfs_launch.
errno is pretty much random on the error path back from guestfs_launch
so there is nothing useful to be gained by checking it.
We could do with a better way to detect if appliance launch failed.
Richard W.M. Jones [Tue, 23 Aug 2011 15:34:06 +0000 (16:34 +0100)]
Coverity: Ignore return value from guestfs_launch in virt-rescue.
We expect guestfs_launch to fail in this program.
Richard W.M. Jones [Tue, 23 Aug 2011 15:12:27 +0000 (16:12 +0100)]
Coverity: Check return value from sscanf in bindtests calls.
Richard W.M. Jones [Sat, 20 Aug 2011 10:41:10 +0000 (11:41 +0100)]
autobuild: Only add last 100 lines of the log file.
Richard W.M. Jones [Sat, 20 Aug 2011 09:49:35 +0000 (10:49 +0100)]
New autobuild script.
Remove the old top-level autobuild.sh that confused a lot
of people.
Add an autobuild.sh script that builds from the latest tarball.
Richard W.M. Jones [Fri, 19 Aug 2011 20:48:44 +0000 (21:48 +0100)]
configure: Add --with-extra flag to allow setting the extra version string.
Intended use in Fedora and RHEL is to encode the release
string, eg.
./configure [...] --with-extra="-%{release}"
Richard W.M. Jones [Fri, 19 Aug 2011 09:38:30 +0000 (10:38 +0100)]
Version 1.13.6.
Richard W.M. Jones [Thu, 18 Aug 2011 18:13:32 +0000 (19:13 +0100)]
protocol: Fix case where download can fail for small files.
There is another case where downloads of small files could fail if the
library side (writer) fails. In this case the library would send back
a cancellation, but it would be received after the daemon had finished
sending the whole file (because the file is small enough). The daemon
would reenter the main loop and immediately get an unexpected cancel
message, causing the daemon to die.
This commit also makes test-cancellation-download-librarycancels.sh
more robust. We use Monte-Carlo testing with a range of file sizes.
Small file sizes should trigger the error case.
Richard W.M. Jones [Thu, 18 Aug 2011 16:46:50 +0000 (17:46 +0100)]
Escape special/non-printing characters in debug output (RHBZ#731744).
The default event handler in libguestfs was simply writing all debug
output directly to stderr. However if the output contains
non-printable characters such as terminal control codes then these
would also be sent directly.
With newer SeaBIOS there is a lame attempt to implement a splash
screen using terminal control codes, thus when libguestfs tries to
display debugging output it would cause the screen to clear and debug
output to be lost.
This commit causes all non-printing characters to be escaped.
(\n and \r characters from the appliance are treated somewhat
specially).
Furthermore, instead of using write(2), use buffered stderr calls.
Richard W.M. Jones [Thu, 18 Aug 2011 16:41:09 +0000 (17:41 +0100)]
Remove guestfs___print_timestamped_argv.
This function was used to print the qemu and
febootstrap-supermin-helper command lines.
Unfortunately in the qemu case it was used incorrectly: it called the
internal debug function (ie. event API callback) from the forked qemu
subprocess, which meant that higher level event callbacks might have
been invoked from the child process.
To fix this, convert the qemu case into a new function called
print_qemu_command line which just prints the command line directly to
stderr. This is called after stderr has been redirected into the pipe
to the main process. Thus the qemu command line will be marshalled
into the event API along with other qemu and appliance output.
After fixing this, only one use of guestfs___print_timestamped_argv
remained, for printing the febootstrap-supermin-helper command line.
This is converted to a local function print_febootstrap_command_line.
Also print_febootstrap_command_line is now called before we fork
febootstrap-supermin-helper, so that messages no longer overlap.
Hilko Bengen [Wed, 17 Aug 2011 22:14:46 +0000 (00:14 +0200)]
out-of-tree build: generate ./run from template, fix image checks
./run can now be run in a separate build directory. Since some files
needed in the image checks are found in the source tree (but not the
build tree), the source tree location is passed to make-*-img.sh via
an environment variable.
Richard W.M. Jones [Wed, 17 Aug 2011 11:21:35 +0000 (12:21 +0100)]
Version 1.13.5
Richard W.M. Jones [Wed, 17 Aug 2011 11:41:41 +0000 (12:41 +0100)]
fish: Add fish-cmds.h to generator_built.
This updates commit
3064277680ad11f887691646d0fa17bb35f38c19.
Hilko Bengen [Tue, 16 Aug 2011 22:42:00 +0000 (00:42 +0200)]
out-of-tree build: fix make and make install
$(srcdir) is not needed for guestfs_c.c.
*.mli only exists in $(srcdir) and isn't found on "make install" otherwise
Hilko Bengen [Tue, 16 Aug 2011 22:41:59 +0000 (00:41 +0200)]
out-of-tree build: fix documentation generation II
Hilko Bengen [Tue, 16 Aug 2011 22:41:58 +0000 (00:41 +0200)]
out-of-tree build: remove unneeded explicit paths
Richard W.M. Jones [Tue, 16 Aug 2011 11:39:28 +0000 (12:39 +0100)]
Improve zeroing and detection of zeroes.
This code modifies zero, zero-device, is-zero, is-zero-device.
zero and zero-device are modified so that if the blocks of the device
already contain zeroes, then we don't write zeroes. The reason for
this is to avoid unnecessarily making the underlying storage
non-sparse or (in the qcow2 case) growing it.
is-zero and is-zero-device are modified so that zero detection is
faster. This is a nice side effect of making the first change.
Since avoiding unnecessary zeroing involves reading the blocks before
writing them, whereas before we just blindly wrote, this can be
slower. As you can see from the tests below, in the case where the
disk is sparse, it actually turns out to be faster, because we avoid
allocating the underlying blocks.
However in the case where the disk is non-sparse and full of existing
data, it is much slower. There might be a case for an API flag to
adjust whether or not we perform the zero check. I did not add this
flag because it is unlikely that the caller would have enough
information to be able to set the flag correctly.
(Elapsed time in seconds)
Format Test case Before After
Raw Sparse 16.4 5.3
Preallocated zero 17.0 18.8
Preallocated random 16.0 41.3
Qcow2 preallocation=off 18.7 5.6
preallocation=metadata 17.4 5.8
The current code uses a fixed block size of 4K for reading and
writing. I also tried the same tests with a block size of 64K but it
didn't make any significant difference.
(Thanks to Federico Simoncelli for suggesting this change)
Richard W.M. Jones [Mon, 15 Aug 2011 13:55:10 +0000 (14:55 +0100)]
recipes: Remove two C file dependencies which are not actually used in the POD.
Hilko Bengen [Sun, 14 Aug 2011 08:58:13 +0000 (10:58 +0200)]
out-of-tree build: fix building library
Hilko Bengen [Sun, 14 Aug 2011 08:58:12 +0000 (10:58 +0200)]
out-of-tree build: Fix up OCaml bindings and generator
Hilko Bengen [Sun, 14 Aug 2011 08:58:11 +0000 (10:58 +0200)]
out-of-tree build: fix appliance
Hilko Bengen [Sun, 14 Aug 2011 08:58:08 +0000 (10:58 +0200)]
out-of-tree build: fix documentation generation
Richard W.M. Jones [Sun, 14 Aug 2011 21:07:54 +0000 (22:07 +0100)]
ruby: Fix typo in Ruby bindings file.
Richard W.M. Jones [Fri, 12 Aug 2011 10:17:16 +0000 (11:17 +0100)]
Note that additional memory may be required to typecheck Augeas lenses (RHBZ#729887).
Richard W.M. Jones [Fri, 12 Aug 2011 10:08:57 +0000 (11:08 +0100)]
fish: Document that remote run in cmd substitution context hangs.
This documents bug 592910.
Richard W.M. Jones [Thu, 11 Aug 2011 21:52:06 +0000 (22:52 +0100)]
Version 1.13.4.
Richard W.M. Jones [Thu, 11 Aug 2011 10:45:25 +0000 (11:45 +0100)]
Fix 'unknown filesystem' warnings in old inspection code (RHBZ#678231 RHBZ#666578).
This is a comprehensive fix for the warnings from the old (and
obsolete) Perl inspection code. For a full description and
reproducer, see:
https://bugzilla.redhat.com/show_bug.cgi?id=678231#c5
Richard W.M. Jones [Mon, 8 Aug 2011 17:52:23 +0000 (18:52 +0100)]
inspection: Better checking for Windows root disks (RHBZ#729075).
Previously any disk that had /autoexec.bat or /boot.ini or /ntldr
would be picked up as a candidate for a Windows root disk. If further
checking could not find any systemroot (eg. /windows) then this would
result in complete failure of inspection.
In particular, this got confused by Hp_recovery partitions which have
/autoexec.bat, but don't have a systemroot in one of the usual places
(they have /MiniNT instead).
What we do now is to properly investigate all possible systemroot
places before deciding this is a Windows systemroot, so the subsequent
failure cannot occur.
(Thanks to lorimar for reporting this bug).
Richard W.M. Jones [Mon, 8 Aug 2011 11:41:54 +0000 (12:41 +0100)]
build: Set TMPDIR for local testing.
This avoids conflicts with the globally installed libguestfs
appliance, or lets us build in multiple local directories at the same
time without conflicts.
Richard W.M. Jones [Sun, 7 Aug 2011 22:11:37 +0000 (23:11 +0100)]
Version 1.13.3.
Richard W.M. Jones [Sun, 7 Aug 2011 22:10:50 +0000 (23:10 +0100)]
daemon: Don't include .gitignore in EXTRA_DIST.
This updates commit
60d5a50f4d3d9e2c2f5a7d42a6859de709bda3f6.
Richard W.M. Jones [Sun, 7 Aug 2011 20:05:13 +0000 (21:05 +0100)]
fish: Add setenv and unsetenv commands.
These commands allow you to manipulate the environment within
guestfish.
Richard W.M. Jones [Sun, 7 Aug 2011 20:04:00 +0000 (21:04 +0100)]
fish: Declare run_* functions in a generated header file.
Calls to these functions are generated, so there is no need to declare
the functions by hand.
Richard W.M. Jones [Sat, 6 Aug 2011 15:04:36 +0000 (16:04 +0100)]
docs: Move deprecation notice up to the top in C man page.
Richard W.M. Jones [Sat, 6 Aug 2011 15:00:01 +0000 (16:00 +0100)]
docs: Emphasize deprecation notice in man pages.
Richard W.M. Jones [Sat, 6 Aug 2011 14:57:21 +0000 (15:57 +0100)]
docs: Fix function names in deprecation notices.
Richard W.M. Jones [Sat, 6 Aug 2011 14:53:15 +0000 (15:53 +0100)]
docs: guestfs_set_out_of_memory_handler returns void, not int.
It always has done. The documentation was wrong.
Richard W.M. Jones [Sat, 6 Aug 2011 14:49:55 +0000 (15:49 +0100)]
docs: Clarify error handler example.
Richard W.M. Jones [Fri, 5 Aug 2011 15:39:43 +0000 (16:39 +0100)]
fish: Fix regression tests for new guestfish line numbers.
This updates commit
319e946b92e175c05cdd1fdcb85c9b86f5631011.
Richard W.M. Jones [Fri, 5 Aug 2011 13:58:30 +0000 (14:58 +0100)]
fish: Print input file and line number in error messages.
eg:
*stdin*:37: libguestfs: error: luks_close: Device lukstest is busy.
Richard W.M. Jones [Fri, 5 Aug 2011 13:03:18 +0000 (14:03 +0100)]
gnulib: Add all other libs when linking libguestfs.so.
This updates the previous two commits.
Richard W.M. Jones [Fri, 5 Aug 2011 12:52:42 +0000 (13:52 +0100)]
gnulib: Add $(LIB_CLOCK_GETTIME) when linking libguestfs.so.
We don't use this library (it is only used in the daemon),
but we need to add this to make the linker happy.