libguestfs.git
13 years agoresize: Don't build this directory in parallel.
Richard W.M. Jones [Sun, 10 Apr 2011 19:42:42 +0000 (20:42 +0100)]
resize: Don't build this directory in parallel.

13 years agoresize: Consistent use of 'part' in help output.
Richard W.M. Jones [Sun, 10 Apr 2011 10:12:03 +0000 (11:12 +0100)]
resize: Consistent use of 'part' in help output.

13 years agoresize: Missing \n after version.
Richard W.M. Jones [Sun, 10 Apr 2011 10:06:58 +0000 (11:06 +0100)]
resize: Missing \n after version.

13 years agoresize: Link with local copy of guestfs.
Richard W.M. Jones [Sat, 9 Apr 2011 21:50:15 +0000 (22:50 +0100)]
resize: Link with local copy of guestfs.

13 years agoVersion 1.9.18. 1.9.18
Richard W.M. Jones [Sat, 9 Apr 2011 16:11:57 +0000 (17:11 +0100)]
Version 1.9.18.

13 years agoUpdate POT file.
Richard W.M. Jones [Sat, 9 Apr 2011 18:55:05 +0000 (19:55 +0100)]
Update POT file.

13 years agoInclude po/Makefile.in.in in git, to avoid needing to rerun gettextize.
Richard W.M. Jones [Sat, 9 Apr 2011 17:01:11 +0000 (18:01 +0100)]
Include po/Makefile.in.in in git, to avoid needing to rerun gettextize.

13 years agobuild: virt-resize manpage.
Richard W.M. Jones [Sat, 9 Apr 2011 20:11:47 +0000 (21:11 +0100)]
build: virt-resize manpage.

13 years agoRewrite virt-resize in OCaml.
Richard W.M. Jones [Fri, 8 Apr 2011 13:07:26 +0000 (14:07 +0100)]
Rewrite virt-resize in OCaml.

This is a fairly straightforward translation of Perl virt-resize into
OCaml.  It is bug-for-bug and feature-for-feature identical to the
Perl version, except as noted below.

The motivation is to have a more solid, high-level, statically safe
compiled language to go forwards with fixing some of the harder bugs
in virt-resize.  In particular contracts between different parts of
the program are now handled by statically typed structures checked at
compile time, instead of the very ad-hoc unchecked hash tables used by
the Perl version.

OCaml and the ocaml-pcre library (Perl-Compatible Regular Expressions
bindings for OCaml) are required.

Extra features in this version:

- 32 bit hosts are now supported.

- We try hard to handle the case where the target disk is not "clean"
  (ie. all zeroes).  It usually works for this case, whereas the
  previous version would usually fail.  However it is still
  recommended that the system administrator creates a fresh blank disk
  for the target before running the program.

- User messages are a bit more verbose and helpful.  You can turn
  these off with the -q (--quiet) option.

There is one lost feature:

- Ability to specify >= T (terabytes) sizes in command line size
  expressions has been removed.  This probably didn't work in the Perl
  version.

Other differences:

- The first partition on the target is no longer aligned; instead we
  place it at the same sector as on the source.  I suspect that
  aligning it was causing the bootloader failures.

- Because it's easier, we do more sanity checking on the source disk.
  This might lead to more failures, but they'd be failures you'd want
  to know about.

- The order in which operations are performed has been changed to make
  it more logical.  The user should not notice any functional
  difference, but debug messages will be quite a bit different.

- virt-resize is a compiled binary, not a script.

13 years agoCompile rpcgen-generated files with -fno-strict-aliasing
Matthew Booth [Thu, 7 Apr 2011 14:30:54 +0000 (15:30 +0100)]
Compile rpcgen-generated files with -fno-strict-aliasing

rpcgen generates source which can't be safely compiled with strict-aliasing
enabled.

13 years agotest-tool: Don't use static binary helper program, nor ISO.
Richard W.M. Jones [Wed, 6 Apr 2011 18:45:46 +0000 (19:45 +0100)]
test-tool: Don't use static binary helper program, nor ISO.

This simplifies the libguestfs-test-tool program down to essentials.
Bugs most commonly occur when starting the appliance, so what we
should concentrate on test is just that.

Previously the test tool built a special static binary helper program,
packaged it up in an ISO, then ran this inside the appliance.  None of
this really tested useful failure modes, but they did make the test
tool itself harder to build, harder for users to run, and more
brittle.

This change also adds some more debugging of libguestfs state.

13 years agoUpdate RELEASE-NOTES file.
Richard W.M. Jones [Wed, 6 Apr 2011 10:52:20 +0000 (11:52 +0100)]
Update RELEASE-NOTES file.

13 years agoVersion 1.9.17. 1.9.17
Richard W.M. Jones [Tue, 5 Apr 2011 20:24:51 +0000 (21:24 +0100)]
Version 1.9.17.

13 years agofish: copy-in, copy-out, edit, more commands can use win:... prefix.
Richard W.M. Jones [Tue, 5 Apr 2011 18:44:16 +0000 (19:44 +0100)]
fish: copy-in, copy-out, edit, more commands can use win:... prefix.

13 years agofish: Enhance guestfish win:... parsing to understand drive letters.
Richard W.M. Jones [Tue, 5 Apr 2011 18:43:30 +0000 (19:43 +0100)]
fish: Enhance guestfish win:... parsing to understand drive letters.

13 years agoedit: Allow Windows-style drive letters and paths to be used.
Richard W.M. Jones [Tue, 5 Apr 2011 17:23:39 +0000 (18:23 +0100)]
edit: Allow Windows-style drive letters and paths to be used.

13 years agoNew API: inspect-get-drive-mappings
Richard W.M. Jones [Tue, 5 Apr 2011 13:03:08 +0000 (14:03 +0100)]
New API: inspect-get-drive-mappings

This returns the drive mappings from the Windows Registry.

virt-inspector displays the drive mappings, giving output
similar to this:

  <drive_mappings>
    <drive_mapping name="C">/dev/sda2</drive_mapping>
    <drive_mapping name="E">/dev/sdb1</drive_mapping>
  </drive_mappings>

13 years agoNew API: inspect-get-windows-current-control-set
Richard W.M. Jones [Tue, 5 Apr 2011 11:44:34 +0000 (12:44 +0100)]
New API: inspect-get-windows-current-control-set

This returns the actual registry key corresponding to
CurrentControlSet (eg. it might be "ControlSet001").

Previously the inspection code was hard-coding ControlSet001.  Now we
use the correct control set, and also make it available to callers
through the API.

This commit also updates the virt-dhcp-address example so it uses this
new API.

virt-inspector displays the current control set when available.

13 years agodaemon: Reimplement 'mounts' and 'mountpoints' commands.
Richard W.M. Jones [Tue, 5 Apr 2011 18:42:00 +0000 (19:42 +0100)]
daemon: Reimplement 'mounts' and 'mountpoints' commands.

Reimplement these so they read /proc/mounts instead of trying to parse
the output of the 'mount' external command.

One consequence of this is that these commands now work again for
ntfs-3g filesystems.

13 years agoRename resolve_windows_path_silently to case_sensitive_path_silently.
Richard W.M. Jones [Tue, 5 Apr 2011 17:44:55 +0000 (18:44 +0100)]
Rename resolve_windows_path_silently to case_sensitive_path_silently.

A more accurate description of what this function does.

This is just code motion.

13 years agoedit: Move 'exit 0' to end of file.
Richard W.M. Jones [Tue, 5 Apr 2011 16:46:23 +0000 (17:46 +0100)]
edit: Move 'exit 0' to end of file.

This is just code motion.

13 years agoedit: Let $root == $roots[0].
Richard W.M. Jones [Tue, 5 Apr 2011 16:45:41 +0000 (17:45 +0100)]
edit: Let $root == $roots[0].

This is just code motion.

13 years agocat, edit: Reference guestfish equivalent commands in the manual pages.
Richard W.M. Jones [Tue, 5 Apr 2011 16:44:41 +0000 (17:44 +0100)]
cat, edit: Reference guestfish equivalent commands in the manual pages.

13 years agopython: Convert any iterable argument to a list (RHBZ#693324).
Richard W.M. Jones [Mon, 4 Apr 2011 11:48:02 +0000 (12:48 +0100)]
python: Convert any iterable argument to a list (RHBZ#693324).

Thanks to Erez Shinan.

13 years agofish: Add 'pulse mode' to the progress bar.
Richard W.M. Jones [Sat, 2 Apr 2011 21:32:36 +0000 (22:32 +0100)]
fish: Add 'pulse mode' to the progress bar.

13 years agofish: Move variable decls to top of function.
Richard W.M. Jones [Sat, 2 Apr 2011 21:31:41 +0000 (22:31 +0100)]
fish: Move variable decls to top of function.

This is just code motion.

13 years agodebian: Add missing deps: ocaml-findlib, libstring-shellquote-perl.
Nikita A Menkovich [Sat, 2 Apr 2011 10:05:19 +0000 (11:05 +0100)]
debian: Add missing deps: ocaml-findlib, libstring-shellquote-perl.

13 years agomkisofs is obsolete. Require genisoimage everywhere instead.
Nikita A Menkovich [Sat, 2 Apr 2011 10:04:47 +0000 (11:04 +0100)]
mkisofs is obsolete.  Require genisoimage everywhere instead.

13 years agoPull translations from Transifex.
Richard W.M. Jones [Sat, 2 Apr 2011 08:14:41 +0000 (09:14 +0100)]
Pull translations from Transifex.

New Ukrainian po-docs translation added.

13 years agoVersion 1.9.16. 1.9.16
Richard W.M. Jones [Fri, 1 Apr 2011 19:37:01 +0000 (20:37 +0100)]
Version 1.9.16.

13 years agodu: Add pulse mode progress messages.
Richard W.M. Jones [Fri, 1 Apr 2011 15:03:14 +0000 (16:03 +0100)]
du: Add pulse mode progress messages.

13 years agocpmv: Add pulse mode progress messages.
Richard W.M. Jones [Fri, 1 Apr 2011 17:37:29 +0000 (18:37 +0100)]
cpmv: Add pulse mode progress messages.

13 years agochecksum: Add pulse mode progress messages.
Richard W.M. Jones [Fri, 1 Apr 2011 17:37:39 +0000 (18:37 +0100)]
checksum: Add pulse mode progress messages.

13 years agodaemon: Introduce "pulse mode" progress events.
Richard W.M. Jones [Fri, 1 Apr 2011 14:50:33 +0000 (15:50 +0100)]
daemon: Introduce "pulse mode" progress events.

This introduces a new form of progress event, where we don't know how
much of the operation has taken place, but we nevertheless want to
send back some indication of activity.  Some progress bar indicators
directly support this, eg. GtkProgressBar where it is known as "pulse
mode".

A pulse mode progress message is a special backwards-compatible form
of the ordinary progress message.  No change is required in callers,
unless they want to add support for pulse mode.

The daemon sends:

 - zero or more progress messages with position = 0, total = 1
 - a single final progress message with position = total = 1

Note that the final progress message may not be sent if the call fails
and returns an error.  This is consistent with the behaviour of
ordinary progress messages.

The daemon allows two types of implementation.  Either you can just
call notify_progress (0, 1); ...; notify_progress (1, 1) as usual.

Or you can call the functions pulse_mode_start, pulse_mode_end and/or
pulse_mode_cancel (see documentation in daemon/daemon.h).  For this
second form of call, the guarantee is very weak: it *just* says the
daemon is still capable of doing something, and it doesn't imply that
if there is a subprocess that it is doing anything.  However this does
make it very easy to add pulse mode progress messages to all sorts of
existing calls that depend on long-running external commands.

To do: add a third variant that monitors a subprocess and only sends
back progress messages if it's doing something, where "doing
something" might indicate it's using CPU time or it's printing output.

13 years agodaemon: When running commands, restart select if we receive a signal.
Richard W.M. Jones [Fri, 1 Apr 2011 14:27:46 +0000 (15:27 +0100)]
daemon: When running commands, restart select if we receive a signal.

13 years agodaemon: Reset SIGPIPE to default before running subprocesses.
Richard W.M. Jones [Fri, 1 Apr 2011 14:26:46 +0000 (15:26 +0100)]
daemon: Reset SIGPIPE to default before running subprocesses.

13 years agoGenerate progress messages during launch.
Richard W.M. Jones [Fri, 1 Apr 2011 12:30:48 +0000 (13:30 +0100)]
Generate progress messages during launch.

This commit generates approximate progress messages during the
guestfs_launch call.  Currently this code generates:

   0 / 12: launch clock starts
   3 / 12: appliance created
   6 / 12: detected that guest kernel started
   9 / 12: detected that /init script is running
  12 / 12: launch completed successfully

(Note this is not an ABI and may be changed or removed in a future
version).

Progress messages are only generated at all if 5 seconds have elapsed
since the launch, and they are only generated for the ordinary
appliance (not if using attach-method to attach to an existing virtio
serial port).

13 years agoprotocol: Sleep for 1ms before reading log messages.
Richard W.M. Jones [Fri, 1 Apr 2011 12:29:06 +0000 (13:29 +0100)]
protocol: Sleep for 1ms before reading log messages.

As explained in the comment:

  /* QEMU's console emulates a 16550A serial port.  The real 16550A
   * device has a small FIFO buffer (16 bytes) which means here we see
   * lots of small reads of 1-16 bytes in length, usually single
   * bytes.  Sleeping here for a very brief period groups reads
   * together (so we usually get a few lines of output at once) and
   * improves overall throughput, as well as making the event
   * interface a bit more sane for callers.  With a virtio-serial
   * based console (not yet implemented) we may be able to remove
   * this.  XXX
   */

13 years agoShared function to send progress messages.
Richard W.M. Jones [Fri, 1 Apr 2011 11:17:22 +0000 (12:17 +0100)]
Shared function to send progress messages.

This is just code motion.

13 years agoAdd prototype for timeval_diff.
Richard W.M. Jones [Fri, 1 Apr 2011 12:30:24 +0000 (13:30 +0100)]
Add prototype for timeval_diff.

This is just code motion.

13 years agodocs: Progress messages don't necessarily reach 100% in the error case.
Richard W.M. Jones [Fri, 1 Apr 2011 12:54:18 +0000 (13:54 +0100)]
docs: Progress messages don't necessarily reach 100% in the error case.

This should be obvious, and now it is documented to avoid any
confusion.

13 years agodocs: Fix link to progress messages in guestfs(3).
Richard W.M. Jones [Fri, 1 Apr 2011 12:48:14 +0000 (13:48 +0100)]
docs: Fix link to progress messages in guestfs(3).

This updates commit 4e0cf4dbf8a8a96288f70114fdc3939da0aa7ad1.

13 years agoUpdate copyright date on main guestfs(3) man page.
Richard W.M. Jones [Fri, 1 Apr 2011 14:28:42 +0000 (15:28 +0100)]
Update copyright date on main guestfs(3) man page.

13 years agoVersion 1.9.15. 1.9.15
Richard W.M. Jones [Fri, 1 Apr 2011 08:53:53 +0000 (09:53 +0100)]
Version 1.9.15.

13 years agofish: Fix incorrect path passed to perror.
Richard W.M. Jones [Fri, 1 Apr 2011 08:53:44 +0000 (09:53 +0100)]
fish: Fix incorrect path passed to perror.

Fix commit b8e1dee73a1deef1bfd5937e2abfbe9afef7b1ef.

13 years agoAdd libguestfs-tools.conf file to EXTRA_DIST.
Richard W.M. Jones [Fri, 1 Apr 2011 07:50:49 +0000 (08:50 +0100)]
Add libguestfs-tools.conf file to EXTRA_DIST.

13 years agoexamples: Add virt-dhcp-address program.
Richard W.M. Jones [Thu, 31 Mar 2011 19:20:04 +0000 (20:20 +0100)]
examples: Add virt-dhcp-address program.

This is like the mythical 'virt-ifconfig'.  There is not enough
certainty around the right way to be doing this for us to make
a full virt tool for this.  Therefore the code is just an example.

13 years agoexamples: Use WARN_CFLAGS, WERROR_CFLAGS macros instead of -Wall
Richard W.M. Jones [Thu, 31 Mar 2011 19:18:23 +0000 (20:18 +0100)]
examples: Use WARN_CFLAGS, WERROR_CFLAGS macros instead of -Wall

13 years agoexamples: size_t-correctness change in inspect_vm.c
Richard W.M. Jones [Thu, 31 Mar 2011 19:17:02 +0000 (20:17 +0100)]
examples: size_t-correctness change in inspect_vm.c

13 years agocontrib: Fix URLs in README file.
Richard W.M. Jones [Thu, 31 Mar 2011 17:20:08 +0000 (18:20 +0100)]
contrib: Fix URLs in README file.

13 years agoinspect: Detect 32 bit applications running on WOW64 emulator (RHBZ#692545).
Richard W.M. Jones [Thu, 31 Mar 2011 14:51:00 +0000 (15:51 +0100)]
inspect: Detect 32 bit applications running on WOW64 emulator (RHBZ#692545).

These applications are located along a different Registry path.  See
http://support.microsoft.com/kb/896459 for all the details.

Thanks Jinxin Zheng for finding the bug and the solution.

13 years agoAdd /etc/libguestfs-tools.conf configuration file.
Richard W.M. Jones [Wed, 30 Mar 2011 16:03:11 +0000 (17:03 +0100)]
Add /etc/libguestfs-tools.conf configuration file.

This allows the default for --ro or --rw to be controlled for the
three tools guestfish, guestmount and virt-rescue.

13 years agorescue: Add -w|--rw option.
Richard W.M. Jones [Wed, 30 Mar 2011 15:33:14 +0000 (16:33 +0100)]
rescue: Add -w|--rw option.

13 years agofuse: Document -w flag in --help output.
Richard W.M. Jones [Wed, 30 Mar 2011 15:32:33 +0000 (16:32 +0100)]
fuse: Document -w flag in --help output.

13 years agoExclude po-docs directory completely if po4a not available.
Richard W.M. Jones [Tue, 29 Mar 2011 15:07:21 +0000 (16:07 +0100)]
Exclude po-docs directory completely if po4a not available.

Lift the if HAVE_PO4A ... endif completely out of the po-docs
subdirectory, and just exclude the whole subdirectory if the po4a
program is not available.

13 years agotests: Don't fail when compiled without support for NTFS.
Richard W.M. Jones [Tue, 29 Mar 2011 15:03:29 +0000 (16:03 +0100)]
tests: Don't fail when compiled without support for NTFS.

13 years agoperl: Canonicalize /dev/vd* paths in old inspection code (RHBZ#691724).
Richard W.M. Jones [Tue, 29 Mar 2011 11:20:57 +0000 (12:20 +0100)]
perl: Canonicalize /dev/vd* paths in old inspection code (RHBZ#691724).

13 years agoREADME: Note that getfacl, getfattr are optional dependencies.
Richard W.M. Jones [Mon, 28 Mar 2011 16:18:24 +0000 (17:18 +0100)]
README: Note that getfacl, getfattr are optional dependencies.

13 years agoVersion 1.9.14. 1.9.14
Richard W.M. Jones [Mon, 28 Mar 2011 16:11:51 +0000 (17:11 +0100)]
Version 1.9.14.

13 years agofuse: Fix getxattr, listxattr calls and add a regression test (RHBZ#691389).
Richard W.M. Jones [Mon, 28 Mar 2011 13:45:23 +0000 (14:45 +0100)]
fuse: Fix getxattr, listxattr calls and add a regression test (RHBZ#691389).

The documentation for the getxattr and listxattr calls is not very
clear and as a result we were always returning something different
from that which the Linux kernel would usually return.

This fixes these calls, at least far enough that both the 'getfattr'
and 'getfacl' programs now work fine on FUSE-mounted filesystems.

Note that SELinux attrs are *not* passed through.  This appears to be
a known bug between SELinux and FUSE.  For more information see:

http://www.spinics.net/lists/selinux/msg09460.html

13 years agofish: fuse: Add -m dev:mnt:opts to allow mount options to be specified.
Richard W.M. Jones [Mon, 28 Mar 2011 12:35:53 +0000 (13:35 +0100)]
fish: fuse: Add -m dev:mnt:opts to allow mount options to be specified.

This lets you turn on ACLs and xattrs by doing:

  -m /dev/sda1:/:acl,user_xattr

The extra parameter is passed through to mount_options:

  libguestfs: trace: mount_options "acl,user_xattr" "/dev/sda1" "/"

13 years agoroadmap: Move QMP to 'beyond 1.10'.
Richard W.M. Jones [Mon, 28 Mar 2011 09:35:14 +0000 (10:35 +0100)]
roadmap: Move QMP to 'beyond 1.10'.

See: https://www.redhat.com/archives/libguestfs/2011-March/msg00124.html

13 years agoOpen release notes for version 1.10.0.
Richard W.M. Jones [Mon, 28 Mar 2011 09:32:14 +0000 (10:32 +0100)]
Open release notes for version 1.10.0.

13 years agoruby: Don't segfault if callbacks throw exceptions (RHBZ#664558).
Richard W.M. Jones [Mon, 28 Mar 2011 09:03:16 +0000 (10:03 +0100)]
ruby: Don't segfault if callbacks throw exceptions (RHBZ#664558).
(Thanks Chris Lalancette).

See:
https://bugzilla.redhat.com/show_bug.cgi?id=664558#c6

13 years agoRHEL 5: Use mke4fs on RHEL 5 as replacement for mke2fs.
Richard W.M. Jones [Fri, 25 Mar 2011 14:42:40 +0000 (14:42 +0000)]
RHEL 5: Use mke4fs on RHEL 5 as replacement for mke2fs.

13 years agomkfs: Force mke2fs to create a filesystem even on raw IDE device (RHBZ#690819).
Richard W.M. Jones [Fri, 25 Mar 2011 14:34:31 +0000 (14:34 +0000)]
mkfs: Force mke2fs to create a filesystem even on raw IDE device (RHBZ#690819).

13 years agoRename $tmpdir/sock to $tmpdir/guestfsd.sock.
Richard W.M. Jones [Fri, 25 Mar 2011 12:32:08 +0000 (12:32 +0000)]
Rename $tmpdir/sock to $tmpdir/guestfsd.sock.

No functional change; this simply makes the purpose of the
socket clearer.

13 years agoinspector: Add detection of Slackware.
Richard W.M. Jones [Fri, 25 Mar 2011 11:22:38 +0000 (11:22 +0000)]
inspector: Add detection of Slackware.

13 years agoVersion 1.9.13. 1.9.13
Richard W.M. Jones [Thu, 24 Mar 2011 12:23:13 +0000 (12:23 +0000)]
Version 1.9.13.

13 years agoNew API: guestfs_inspect_get_product_variant
Richard W.M. Jones [Wed, 23 Mar 2011 16:00:48 +0000 (16:00 +0000)]
New API: guestfs_inspect_get_product_variant

This returns a product variant for inspected operating systems.  In
practice this is a useful way to distinguish between consumer and
enterprise/server versions of Windows that otherwise have the same
version number.

13 years agofish: Add better quick help to --help output.
Richard W.M. Jones [Tue, 22 Mar 2011 11:50:26 +0000 (11:50 +0000)]
fish: Add better quick help to --help output.

13 years agofish: Add -w|--rw option to --help output.
Richard W.M. Jones [Tue, 22 Mar 2011 11:50:03 +0000 (11:50 +0000)]
fish: Add -w|--rw option to --help output.

13 years agoinspect: Don't fail for Windows guests with multiple disks (RHBZ#674130).
Richard W.M. Jones [Tue, 22 Mar 2011 11:20:38 +0000 (11:20 +0000)]
inspect: Don't fail for Windows guests with multiple disks (RHBZ#674130).

13 years agoinspect: Simplify Windows root heuristic code.
Richard W.M. Jones [Tue, 22 Mar 2011 11:05:21 +0000 (11:05 +0000)]
inspect: Simplify Windows root heuristic code.

Add special is_file_nocase and is_dir_nocase functions and
remove the duplicate checks for files and directories with
different cases.

13 years agoumount-all: Use /proc/mounts instead of output of 'mount' command.
Richard W.M. Jones [Tue, 22 Mar 2011 11:15:21 +0000 (11:15 +0000)]
umount-all: Use /proc/mounts instead of output of 'mount' command.

The particular issue is that ntfs-3g (or FUSE?) no longer appears
to update /etc/mtab, which meant that umount-all was not unmounting
these partitions.  But parsing /proc/mounts is simpler and more
robust in any case.

13 years agoguestfs(3): 'kernel' -> 'supermin appliance'.
Richard W.M. Jones [Sat, 19 Mar 2011 18:41:23 +0000 (18:41 +0000)]
guestfs(3): 'kernel' -> 'supermin appliance'.

13 years agoguestfs(3): Indent line to keep code together.
Richard W.M. Jones [Sat, 19 Mar 2011 18:18:56 +0000 (18:18 +0000)]
guestfs(3): Indent line to keep code together.

13 years agotodo: Add ntfsck.
Richard W.M. Jones [Sat, 19 Mar 2011 12:40:24 +0000 (12:40 +0000)]
todo: Add ntfsck.

13 years agofish: Add all stamp-*.pod files to CLEANFILES.
Richard W.M. Jones [Fri, 18 Mar 2011 20:02:29 +0000 (20:02 +0000)]
fish: Add all stamp-*.pod files to CLEANFILES.

13 years agoVersion 1.9.12. 1.9.12
Richard W.M. Jones [Fri, 18 Mar 2011 19:33:06 +0000 (19:33 +0000)]
Version 1.9.12.

13 years agoproto: Fix both-ends-cancel case.
Richard W.M. Jones [Fri, 18 Mar 2011 18:27:21 +0000 (18:27 +0000)]
proto: Fix both-ends-cancel case.

In the case where both ends cancel at the same time (eg. both ends
realize there are errors before or during the transfer), previously we
skipped sending back an error from the daemon, on the spurious basis
that the library would not need it (the library is cancelling because
of its own error).

However this is wrong: we should always send back an error message
from the daemon in order to preserve synchronization of the protocol.

A simple test case is:

  $ guestfish -N fs -m /dev/sda1 upload nosuchfile /
  libguestfs: error: open: nosuchfile: No such file or directory
  libguestfs: error: unexpected procedure number (66/282)

(Notice two things: there are errors at both ends, and the
loss of synchronization).

After applying this commit, the loss of synchronization does not occur
and we just see the library error:

  $ guestfish -N fs -m /dev/sda1 upload nosuchfile /
  libguestfs: error: open: nosuchfile: No such file or directory

The choice of displaying the library or the daemon error is fairly
arbitrary in this case -- it would be valid to display either or even
to combine them into one error.  Displaying the library error only
makes the code considerably simpler.

This commit also (re-)enables a test for this case.

13 years agoproto: Fix FileIn ops that abort during the chunk upload stage.
Richard W.M. Jones [Fri, 18 Mar 2011 17:17:30 +0000 (17:17 +0000)]
proto: Fix FileIn ops that abort during the chunk upload stage.

As a previous, incorrect attempt to fix RHBZ#576879 we tried to
prevent the daemon from sending an error reply if the daemon had
cancelled the transfer.  This is wrong: the daemon should send an
error reply in these cases.

A simple test case is this:

  guestfish -N fs -m /dev/sda1 upload big-file /

(This fails because the target "/" is a directory, not a file.)
Prior to this commit, libguestfs would hang instead of printing an
error.  With this commit, libguestfs prints an error.

What is happening is:

  (1) Library is uploading
  a file                          (2) In the middle of the long
                                  upload, daemon detects an error.
                                  Daemon cancels.
  (3) Library detects cancel,
  sends cancel chunk, then waits
  for the error reply from the
  daemon.                         (4) Daemon is supposed to send
                                  an error reply message.

Because step (4) wasn't happening, uploads that failed like this would
hang in the library (waiting for the error message, while the daemon
was waiting for the next request).

This also adds a regression test.

This temporarily breaks the "both ends cancel" case (RHBZ#576879c5).
Therefore the test for that is disabled, and this is fixed in the next
patch in the series.

This partially reverts commit dc706a639eec16084c0618baf7bfde00c6565f63.

13 years agoproto: Don't drop outgoing message when daemon cancels (RHBZ#576879).
Richard Jones [Fri, 18 Mar 2011 16:18:37 +0000 (16:18 +0000)]
proto: Don't drop outgoing message when daemon cancels (RHBZ#576879).

This is a (potential) fix for the long standing protocol bug
which causes loss of synchronization when a FileIn action
fails very early on the daemon side.  The canonical example
would be the 'upload' action failing immediately if no filesystem
is mounted.

What's supposed to happen is this:

  (1) library sends
  request message              (2) daemon processes request
  first chunk of data          and sees that it will fail,
                               sends cancellation
                               (3) discards chunks of data
  (4) library sees daemon
  cancellation and stops
  sending chunks

It was going wrong in step (1), in guestfs___send_to_daemon.
In some (timing related) circumstances, send_to_daemon could
receive the cancellation before sending the first chunk, at
which point it would exit, *discarding the first chunk*.
This causes the daemon to fail in step (3) since it reads the
next request as if it was a chunk, thus losing synchronization.
(The protocol specifies that you always have to send at least
one chunk if there is a FileIn or FileOut parameter).

The patch changes guestfs___send_to_daemon so that if it detects
cancellation, it sends the remaining data in its output buffer
instead of discarding it.  (This also fixes another edge case
to do with sending partial data although I don't think we
ever saw that in practice).

13 years agodaemon: Improve protocol debug messages.
Richard Jones [Fri, 18 Mar 2011 16:17:09 +0000 (16:17 +0000)]
daemon: Improve protocol debug messages.

This adds 'guestfsd: ...' prefix before each message, and
also puts a message at the top of the main loop just after
a new message has been received.

The intent is to make it simpler to follow the protocol.

13 years agoregressions: Enable both tests for bug 576879 (not fixed).
Richard W.M. Jones [Fri, 18 Mar 2011 11:22:25 +0000 (11:22 +0000)]
regressions: Enable both tests for bug 576879 (not fixed).

13 years agodaemon: Print error for invalid chunk.cancel field.
Richard W.M. Jones [Fri, 18 Mar 2011 11:21:55 +0000 (11:21 +0000)]
daemon: Print error for invalid chunk.cancel field.

The chunk.cancel field should always be [0|1].  If it is not then
something has gone badly wrong -- probably loss of synchronization.
If this occurs print a debug message and return error from
receive_file function.

13 years agoproto: Improve debug messages.
Richard W.M. Jones [Fri, 18 Mar 2011 11:20:26 +0000 (11:20 +0000)]
proto: Improve debug messages.

13 years agohaskell: Small fixes for ghc 7.
Richard W.M. Jones [Fri, 18 Mar 2011 11:19:31 +0000 (11:19 +0000)]
haskell: Small fixes for ghc 7.

13 years agoregressions: Rename the file we are uploading too.
Richard W.M. Jones [Thu, 17 Mar 2011 12:46:57 +0000 (12:46 +0000)]
regressions: Rename the file we are uploading too.

This updates commit cbd8da6d4dd2e4cbc3b87fbc7cb7d6129eb69172.

13 years agoregressions: Split the test rhbz576879.sh into two halves.
Richard W.M. Jones [Thu, 17 Mar 2011 11:57:40 +0000 (11:57 +0000)]
regressions: Split the test rhbz576879.sh into two halves.

We suspect that there are in fact two separate bugs.  In any
case it makes sense for the two tests to be done separately.

Note that these tests still fail.

13 years agotests: Ignore return value from fwrite.
Richard W.M. Jones [Wed, 16 Mar 2011 11:50:16 +0000 (11:50 +0000)]
tests: Ignore return value from fwrite.

13 years agoVersion 1.9.11. 1.9.11
Richard W.M. Jones [Tue, 15 Mar 2011 21:49:53 +0000 (21:49 +0000)]
Version 1.9.11.

13 years agoruby: Missing files from EXTRA_DIST.
Richard W.M. Jones [Tue, 15 Mar 2011 22:00:54 +0000 (22:00 +0000)]
ruby: Missing files from EXTRA_DIST.

13 years agoperl: Binding and test for guestfs_last_errno (RHBZ#672491).
Richard W.M. Jones [Tue, 15 Mar 2011 16:46:00 +0000 (16:46 +0000)]
perl: Binding and test for guestfs_last_errno (RHBZ#672491).

13 years agoruby: Use ALLOC_N to avoid potential memory leak (RHBZ#667610).
Richard W.M. Jones [Tue, 15 Mar 2011 15:00:58 +0000 (15:00 +0000)]
ruby: Use ALLOC_N to avoid potential memory leak (RHBZ#667610).

13 years agoruby: Remove unnecessary checking around StringValueCStr (RHBZ#667610).
Richard W.M. Jones [Tue, 15 Mar 2011 14:52:03 +0000 (14:52 +0000)]
ruby: Remove unnecessary checking around StringValueCStr (RHBZ#667610).

13 years agoruby: Add rdoc documentation (RHBZ#667610).
Richard W.M. Jones [Tue, 15 Mar 2011 14:48:12 +0000 (14:48 +0000)]
ruby: Add rdoc documentation (RHBZ#667610).

13 years agoNew event API - Ruby bindings (RHBZ#664558).
Richard W.M. Jones [Mon, 14 Mar 2011 22:37:21 +0000 (22:37 +0000)]
New event API - Ruby bindings (RHBZ#664558).

13 years agoNew event API - Perl bindings (RHBZ#664558).
Richard W.M. Jones [Mon, 14 Mar 2011 19:42:47 +0000 (19:42 +0000)]
New event API - Perl bindings (RHBZ#664558).

The methods $h->set_progress_callback and $h->clear_progress_callback
have been removed, and replaced with a complete mechanism for setting
and deleting general-purpose events.

This also updates virt-resize to use the new API.

13 years agoNew event API - OCaml bindings (RHBZ#664558).
Richard W.M. Jones [Mon, 14 Mar 2011 16:44:17 +0000 (16:44 +0000)]
New event API - OCaml bindings (RHBZ#664558).

The functions set_progress_callback and clear_progress_callback have
been removed, and replaced with a complete mechanism for setting and
deleting general-purpose events.