[Pkg-libvirt-commits] [SCM] Libguestfs Debian packaging branch, upstream, updated. upstream/1.14.3

Hilko Bengen bengen at debian.org
Wed Nov 23 07:45:48 UTC 2011


The following commit has been merged in the upstream branch:
commit e4f343f44438af112eb77cc58cec2edcfc4b514b
Author: Hilko Bengen <bengen at debian.org>
Date:   Wed Nov 23 08:45:09 2011 +0100

    Imported Upstream version 1.14.3

diff --git a/.gitignore b/.gitignore
index d8f4628..9ebd4c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -88,9 +88,11 @@ erlang/guestfs.erl
 examples/create_disk
 examples/guestfs-examples.3
 examples/guestfs-recipes.1
+examples/guestfs-testing.1
 examples/inspect_vm
 examples/stamp-guestfs-examples.pod
 examples/stamp-guestfs-recipes.pod
+examples/stamp-guestfs-testing.pod
 examples/virt-dhcp-address
 fish/cmds.c
 fish/cmds_gperf.c
@@ -138,6 +140,7 @@ html/guestfs-perl.3.html
 html/guestfs-python.3.html
 html/guestfs-recipes.1.html
 html/guestfs-ruby.3.html
+html/guestfs-testing.1.html
 html/guestmount.1.html
 html/virt-alignment-scan.1.html
 html/virt-cat.1.html
diff --git a/BUGS b/BUGS
index 3fb698b..e9359bb 100644
--- a/BUGS
+++ b/BUGS
@@ -1,5 +1,5 @@
 NOTE: This file is automatically generated from "update-bugs.sh".
-Last updated: 2011-11-09
+Last updated: 2011-11-22
 
 This contains a local list of the bugs that are open against
 libguestfs.  Bugs are tracked in the Red Hat Bugzilla database
@@ -59,6 +59,9 @@ Bugs in NEW or ASSIGNED state are open and waiting for someone to fix.
 745606 NEW https://bugzilla.redhat.com/show_bug.cgi?id=745606
   libguestfs: error: part_list: could not parse row from output of parted print command
 
+755729 NEW https://bugzilla.redhat.com/show_bug.cgi?id=755729
+  Error message for resize2fs-M needs tweaking
+
 563450 NEW https://bugzilla.redhat.com/show_bug.cgi?id=563450
   list-devices returns devices of different types out of order
 
diff --git a/ChangeLog b/ChangeLog
index 354e570..d0f6769 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,59 @@
+2011-11-22  Richard W.M. Jones  <rjones at redhat.com>
+
+	Version 1.14.3.
+
+	df, testing: Add notes on virt-df numbers (thanks Kashyap Chamarthy). (cherry picked from commit 7b3137e664c3f4edf6ac7043a34c4166567e17bd)
+
+	sparsify: Add auto-detection of .vdi files.
+	Note that for this to work properly, it requires a patch to
+	the 'file' command.  See:
+	https://www.redhat.com/archives/libguestfs/2011-November/msg00120.html
+	(cherry picked from commit 342b4a55d056734a0344db8b4bcf1a90104a8a59)
+
+	guestfs-testing: Link to libguestfs-test-tool. (cherry picked from commit 6f39cfaeacda146d0eaa35da6f6413fa6ab3d40a)
+
+2011-11-22  Hilko Bengen  <bengen at hilluzination.de>
+
+	out-of-tree build: ruby (cherry picked from commit 8bc6e9d6a89672bbe1e7469774abe889354deb67)
+
+2011-11-22  Richard W.M. Jones  <rjones at redhat.com>
+
+	Add guestfs-testing(1) man page.
+	This contains suggested manual tests that users can run.
+	(cherry picked from commit a3b24296810d98e47552c6838dcd6ab6845aba03)
+
+2011-11-22  Hilko Bengen  <bengen at hilluzination.de>
+
+	out of tree build: haskell (cherry picked from commit 730fb50780df860474dc1fae16c9891187e99c82)
+
+	java: out-of-tree build, don't build static library (cherry picked from commit a0509ff0715533e341573e24f6888fd7dcf4ba51)
+
+	out of tree build: erlang (cherry picked from commit ddb3fac1bf1b0493779c9425b518598473ef106a)
+
+2011-11-22  Richard Jones  <rjones at redhat.com>
+
+	32 bit: Fix printf off_t. (cherry picked from commit 47963bc9cc0b47af0541010a4fa14260405acaa5)
+
+2011-11-22  Richard W.M. Jones  <rjones at redhat.com>
+
+	32 bit: Use %td for ptrdiff_t (difference between two pointers). (cherry picked from commit 5d48250224fcb140b7e6e17f36b37deab4e0659b)
+
+	df: Disable part of virt-df test.
+	See:
+	https://www.redhat.com/archives/libguestfs/2011-November/msg00051.html
+	(cherry picked from commit 6e6b3ff35f9baafb22d5459ca13c112b1e00ae1b)
+
+	generator: Support testing the output of RHashtable functions.
+	You can use TestOutputHashtable to test the output of RHashtable
+	functions.
+	(cherry picked from commit 5f0b75f040b118c4394466438adc99f38144722d)
+
+	daemon: Define safe ADD_ARG macro for constructing arg lists on the stack. (cherry picked from commit edd502543adbdc2fa5dda0c015ea7c390bb39f64)
+
+2011-11-10  Richard W.M. Jones  <rjones at redhat.com>
+
+	Version 1.14.2.
+
 2011-11-09  Richard W.M. Jones  <rjones at redhat.com>
 
 	ocaml: Fix bindings when a function takes more than 10 parameters.
diff --git a/Makefile.am b/Makefile.am
index 76da59a..de1631f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -145,6 +145,7 @@ HTMLFILES = \
 	html/guestfs-python.3.html \
 	html/guestfs-recipes.1.html \
 	html/guestfs-ruby.3.html \
+	html/guestfs-testing.1.html \
 	html/guestfish.1.html \
 	html/guestmount.1.html \
 	html/virt-alignment-scan.1.html \
diff --git a/Makefile.in b/Makefile.in
index 8729a23..c3fa95f 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1375,6 +1375,7 @@ HTMLFILES = \
 	html/guestfs-python.3.html \
 	html/guestfs-recipes.1.html \
 	html/guestfs-ruby.3.html \
+	html/guestfs-testing.1.html \
 	html/guestfish.1.html \
 	html/guestmount.1.html \
 	html/virt-alignment-scan.1.html \
diff --git a/capitests/tests.c b/capitests/tests.c
index d9d6810..0325300 100644
--- a/capitests/tests.c
+++ b/capitests/tests.c
@@ -100,6 +100,24 @@ md5sum (const char *filename, char *result)
   result[32] = '\0';
 }
 
+#if 0 /* <- Remove this if we add RHashtable tests in 1.14 branch. */
+/* Return the value for a key in a hashtable.
+ * Note: the return value is part of the hash and should not be freed.
+ */
+static const char *
+get_key (char **hash, const char *key)
+{
+  size_t i;
+
+  for (i = 0; hash[i] != NULL; i += 2) {
+    if (STREQ (hash[i], key))
+      return hash[i+1];
+  }
+
+  return NULL; /* key not found */
+}
+#endif
+
 static void no_test_warnings (void)
 {
   fprintf (stderr, "warning: \"guestfs_test0\" has no tests\n");
diff --git a/configure b/configure
index aed418b..7a43c2e 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for libguestfs 1.14.2.
+# Generated by GNU Autoconf 2.68 for libguestfs 1.14.3.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -567,8 +567,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libguestfs'
 PACKAGE_TARNAME='libguestfs'
-PACKAGE_VERSION='1.14.2'
-PACKAGE_STRING='libguestfs 1.14.2'
+PACKAGE_VERSION='1.14.3'
+PACKAGE_STRING='libguestfs 1.14.3'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -2279,7 +2279,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libguestfs 1.14.2 to adapt to many kinds of systems.
+\`configure' configures libguestfs 1.14.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2349,7 +2349,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libguestfs 1.14.2:";;
+     short | recursive ) echo "Configuration of libguestfs 1.14.3:";;
    esac
   cat <<\_ACEOF
 
@@ -2519,7 +2519,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libguestfs configure 1.14.2
+libguestfs configure 1.14.3
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -3261,7 +3261,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libguestfs $as_me 1.14.2, which was
+It was created by libguestfs $as_me 1.14.3, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -4168,7 +4168,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libguestfs'
- VERSION='1.14.2'
+ VERSION='1.14.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4265,8 +4265,8 @@ else
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: libguestfs version 1.14.2$libguestfs_extra" >&5
-$as_echo "$as_me: libguestfs version 1.14.2$libguestfs_extra" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: libguestfs version 1.14.3$libguestfs_extra" >&5
+$as_echo "$as_me: libguestfs version 1.14.3$libguestfs_extra" >&6;}
 
 
 $as_echo "#define PACKAGE_VERSION_MAJOR 1" >>confdefs.h
@@ -4275,7 +4275,7 @@ $as_echo "#define PACKAGE_VERSION_MAJOR 1" >>confdefs.h
 $as_echo "#define PACKAGE_VERSION_MINOR 14" >>confdefs.h
 
 
-$as_echo "#define PACKAGE_VERSION_RELEASE 2" >>confdefs.h
+$as_echo "#define PACKAGE_VERSION_RELEASE 3" >>confdefs.h
 
 
 cat >>confdefs.h <<_ACEOF
@@ -53172,7 +53172,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libguestfs $as_me 1.14.2, which was
+This file was extended by libguestfs $as_me 1.14.3, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -53242,7 +53242,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libguestfs config.status 1.14.2
+libguestfs config.status 1.14.3
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 3d808b7..93a8863 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@
 # freeform string.
 m4_define([libguestfs_major],   [1])
 m4_define([libguestfs_minor],   [14])
-m4_define([libguestfs_release], [2])
+m4_define([libguestfs_release], [3])
 
 AC_INIT([libguestfs],libguestfs_major.libguestfs_minor.libguestfs_release)
 AC_CONFIG_AUX_DIR([build-aux])
diff --git a/daemon/btrfs.c b/daemon/btrfs.c
index 755f47e..a20ee08 100644
--- a/daemon/btrfs.c
+++ b/daemon/btrfs.c
@@ -28,6 +28,8 @@
 #include "actions.h"
 #include "optgroups.h"
 
+#define MAX_ARGS 64
+
 int
 optgroup_btrfs_available (void)
 {
@@ -41,13 +43,13 @@ do_btrfs_filesystem_resize (const char *filesystem, int64_t size)
   char *buf;
   char *err;
   int r;
-  const char *argv[16];
+  const char *argv[MAX_ARGS];
   size_t i = 0;
   char size_str[32];
 
-  argv[i++] = "btrfs";
-  argv[i++] = "filesystem";
-  argv[i++] = "resize";
+  ADD_ARG (argv, i, "btrfs");
+  ADD_ARG (argv, i, "filesystem");
+  ADD_ARG (argv, i, "resize");
 
   if (optargs_bitmask & GUESTFS_BTRFS_FILESYSTEM_RESIZE_SIZE_BITMASK) {
     if (size <= 0) {
@@ -56,10 +58,10 @@ do_btrfs_filesystem_resize (const char *filesystem, int64_t size)
     }
 
     snprintf (size_str, sizeof size_str, "%" PRIi64, size);
-    argv[i++] = size_str;
+    ADD_ARG (argv, i, size_str);
   }
   else
-    argv[i++] = "max";
+    ADD_ARG (argv, i, "max");
 
   buf = sysroot_path (filesystem);
   if (!buf) {
@@ -67,8 +69,8 @@ do_btrfs_filesystem_resize (const char *filesystem, int64_t size)
     return -1;
   }
 
-  argv[i++] = buf;
-  argv[i++] = NULL;
+  ADD_ARG (argv, i, buf);
+  ADD_ARG (argv, i, NULL);
 
   r = commandv (NULL, &err, argv);
   free (buf);
diff --git a/daemon/daemon.h b/daemon/daemon.h
index 6ed68fd..489c38d 100644
--- a/daemon/daemon.h
+++ b/daemon/daemon.h
@@ -212,6 +212,18 @@ is_zero (const char *buffer, size_t size)
   return 1;
 }
 
+/* Helper for building up short lists of arguments.  Your code has to
+ * define MAX_ARGS to a suitable value.
+ */
+#define ADD_ARG(argv,i,v)                                               \
+  do {                                                                  \
+    if ((i) >= MAX_ARGS) {                                              \
+      fprintf (stderr, "%s: %d: internal error: exceeded MAX_ARGS (%zu) when constructing the command line\n", __FILE__, __LINE__, (size_t) MAX_ARGS); \
+      abort ();                                                         \
+    }                                                                   \
+    (argv)[(i)++] = (v);                                                \
+  } while (0)
+
 /* Helper for functions that need a root filesystem mounted.
  * NB. Cannot be used for FileIn functions.
  */
diff --git a/daemon/luks.c b/daemon/luks.c
index bbe6328..02620ef 100644
--- a/daemon/luks.c
+++ b/daemon/luks.c
@@ -26,6 +26,8 @@
 #include "actions.h"
 #include "optgroups.h"
 
+#define MAX_ARGS 64
+
 int
 optgroup_luks_available (void)
 {
@@ -95,17 +97,17 @@ luks_open (const char *device, const char *key, const char *mapname,
   if (!tempfile)
     return -1;
 
-  const char *argv[16];
+  const char *argv[MAX_ARGS];
   size_t i = 0;
 
-  argv[i++] = "cryptsetup";
-  argv[i++] = "-d";
-  argv[i++] = tempfile;
-  if (readonly) argv[i++] = "--readonly";
-  argv[i++] = "luksOpen";
-  argv[i++] = device;
-  argv[i++] = mapname;
-  argv[i++] = NULL;
+  ADD_ARG (argv, i, "cryptsetup");
+  ADD_ARG (argv, i, "-d");
+  ADD_ARG (argv, i, tempfile);
+  if (readonly) ADD_ARG (argv, i, "--readonly");
+  ADD_ARG (argv, i, "luksOpen");
+  ADD_ARG (argv, i, device);
+  ADD_ARG (argv, i, mapname);
+  ADD_ARG (argv, i, NULL);
 
   char *err;
   int r = commandv (NULL, &err, (const char * const *) argv);
@@ -170,23 +172,23 @@ luks_format (const char *device, const char *key, int keyslot,
   if (!tempfile)
     return -1;
 
-  const char *argv[16];
+  const char *argv[MAX_ARGS];
   char keyslot_s[16];
   size_t i = 0;
 
-  argv[i++] = "cryptsetup";
-  argv[i++] = "-q";
+  ADD_ARG (argv, i, "cryptsetup");
+  ADD_ARG (argv, i, "-q");
   if (cipher) {
-    argv[i++] = "--cipher";
-    argv[i++] = cipher;
+    ADD_ARG (argv, i, "--cipher");
+    ADD_ARG (argv, i, cipher);
   }
-  argv[i++] = "--key-slot";
+  ADD_ARG (argv, i, "--key-slot");
   snprintf (keyslot_s, sizeof keyslot_s, "%d", keyslot);
-  argv[i++] = keyslot_s;
-  argv[i++] = "luksFormat";
-  argv[i++] = device;
-  argv[i++] = tempfile;
-  argv[i++] = NULL;
+  ADD_ARG (argv, i, keyslot_s);
+  ADD_ARG (argv, i, "luksFormat");
+  ADD_ARG (argv, i, device);
+  ADD_ARG (argv, i, tempfile);
+  ADD_ARG (argv, i, NULL);
 
   char *err;
   int r = commandv (NULL, &err, (const char * const *) argv);
@@ -232,21 +234,21 @@ do_luks_add_key (const char *device, const char *key, const char *newkey,
     return -1;
   }
 
-  const char *argv[16];
+  const char *argv[MAX_ARGS];
   char keyslot_s[16];
   size_t i = 0;
 
-  argv[i++] = "cryptsetup";
-  argv[i++] = "-q";
-  argv[i++] = "-d";
-  argv[i++] = keyfile;
-  argv[i++] = "--key-slot";
+  ADD_ARG (argv, i, "cryptsetup");
+  ADD_ARG (argv, i, "-q");
+  ADD_ARG (argv, i, "-d");
+  ADD_ARG (argv, i, keyfile);
+  ADD_ARG (argv, i, "--key-slot");
   snprintf (keyslot_s, sizeof keyslot_s, "%d", keyslot);
-  argv[i++] = keyslot_s;
-  argv[i++] = "luksAddKey";
-  argv[i++] = device;
-  argv[i++] = newkeyfile;
-  argv[i++] = NULL;
+  ADD_ARG (argv, i, keyslot_s);
+  ADD_ARG (argv, i, "luksAddKey");
+  ADD_ARG (argv, i, device);
+  ADD_ARG (argv, i, newkeyfile);
+  ADD_ARG (argv, i, NULL);
 
   char *err;
   int r = commandv (NULL, &err, (const char * const *) argv);
@@ -271,19 +273,19 @@ do_luks_kill_slot (const char *device, const char *key, int keyslot)
   if (!tempfile)
     return -1;
 
-  const char *argv[16];
+  const char *argv[MAX_ARGS];
   char keyslot_s[16];
   size_t i = 0;
 
-  argv[i++] = "cryptsetup";
-  argv[i++] = "-q";
-  argv[i++] = "-d";
-  argv[i++] = tempfile;
-  argv[i++] = "luksKillSlot";
-  argv[i++] = device;
+  ADD_ARG (argv, i, "cryptsetup");
+  ADD_ARG (argv, i, "-q");
+  ADD_ARG (argv, i, "-d");
+  ADD_ARG (argv, i, tempfile);
+  ADD_ARG (argv, i, "luksKillSlot");
+  ADD_ARG (argv, i, device);
   snprintf (keyslot_s, sizeof keyslot_s, "%d", keyslot);
-  argv[i++] = keyslot_s;
-  argv[i++] = NULL;
+  ADD_ARG (argv, i, keyslot_s);
+  ADD_ARG (argv, i, NULL);
 
   char *err;
   int r = commandv (NULL, &err, (const char * const *) argv);
diff --git a/daemon/mkfs.c b/daemon/mkfs.c
index d073c07..f3975dc 100644
--- a/daemon/mkfs.c
+++ b/daemon/mkfs.c
@@ -29,7 +29,7 @@
 #include "daemon.h"
 #include "actions.h"
 
-#define MAX_ARGS 16
+#define MAX_ARGS 64
 
 /* Takes optional arguments, consult optargs_bitmask. */
 int
@@ -53,47 +53,47 @@ do_mkfs_opts (const char *fstype, const char *device, int blocksize,
       STREQ (fstype, "ext4")) {
     if (e2prog (mke2fs) == -1)
       return -1;
-    argv[i++] = mke2fs;
+    ADD_ARG (argv, i, mke2fs);
   }
   else
-    argv[i++] = "mkfs";
+    ADD_ARG (argv, i, "mkfs");
 
-  argv[i++] = "-t";
-  argv[i++] = fstype;
+  ADD_ARG (argv, i, "-t");
+  ADD_ARG (argv, i, fstype);
 
   /* Force mke2fs to create a filesystem, even if it thinks it
    * shouldn't (RHBZ#690819).
    */
   if (STREQ (fstype, "ext2") || STREQ (fstype, "ext3") ||
       STREQ (fstype, "ext4"))
-    argv[i++] = "-F";
+    ADD_ARG (argv, i, "-F");
 
   /* mkfs.ntfs requires the -Q argument otherwise it writes zeroes
    * to every block and does bad block detection, neither of which
    * are useful behaviour for virtual devices.
    */
   if (STREQ (fstype, "ntfs"))
-    argv[i++] = "-Q";
+    ADD_ARG (argv, i, "-Q");
 
   /* mkfs.reiserfs produces annoying interactive prompts unless you
    * tell it to be quiet.
    */
   if (STREQ (fstype, "reiserfs"))
-    argv[i++] = "-f";
+    ADD_ARG (argv, i, "-f");
 
   /* Same for JFS. */
   if (STREQ (fstype, "jfs"))
-    argv[i++] = "-f";
+    ADD_ARG (argv, i, "-f");
 
   /* For GFS, GFS2, assume a single node. */
   if (STREQ (fstype, "gfs") || STREQ (fstype, "gfs2")) {
-    argv[i++] = "-p";
-    argv[i++] = "lock_nolock";
+    ADD_ARG (argv, i, "-p");
+    ADD_ARG (argv, i, "lock_nolock");
     /* The man page says this is default, but it doesn't seem to be: */
-    argv[i++] = "-j";
-    argv[i++] = "1";
+    ADD_ARG (argv, i, "-j");
+    ADD_ARG (argv, i, "1");
     /* Don't ask questions: */
-    argv[i++] = "-O";
+    ADD_ARG (argv, i, "-O");
   }
 
   /* Process blocksize parameter if set. */
@@ -121,26 +121,26 @@ do_mkfs_opts (const char *fstype, const char *device, int blocksize,
       }
 
       snprintf (blocksize_str, sizeof blocksize_str, "%d", sectors_per_cluster);
-      argv[i++] = "-s";
-      argv[i++] = blocksize_str;
+      ADD_ARG (argv, i, "-s");
+      ADD_ARG (argv, i, blocksize_str);
     }
     else if (STREQ (fstype, "ntfs")) {
       /* For NTFS map the blocksize into a cluster size. */
       snprintf (blocksize_str, sizeof blocksize_str, "%d", blocksize);
-      argv[i++] = "-c";
-      argv[i++] = blocksize_str;
+      ADD_ARG (argv, i, "-c");
+      ADD_ARG (argv, i, blocksize_str);
     }
     else {
       /* For all other filesystem types, try the -b option. */
       snprintf (blocksize_str, sizeof blocksize_str, "%d", blocksize);
-      argv[i++] = "-b";
-      argv[i++] = blocksize_str;
+      ADD_ARG (argv, i, "-b");
+      ADD_ARG (argv, i, blocksize_str);
     }
   }
 
   if (optargs_bitmask & GUESTFS_MKFS_OPTS_FEATURES_BITMASK) {
-     argv[i++] = "-O";
-     argv[i++] = features;
+    ADD_ARG (argv, i, "-O");
+    ADD_ARG (argv, i, features);
   }
 
   if (optargs_bitmask & GUESTFS_MKFS_OPTS_INODE_BITMASK) {
@@ -156,8 +156,8 @@ do_mkfs_opts (const char *fstype, const char *device, int blocksize,
     }
 
     snprintf (inode_str, sizeof inode_str, "%d", inode);
-    argv[i++] = "-I";
-    argv[i++] = inode_str;
+    ADD_ARG (argv, i, "-I");
+    ADD_ARG (argv, i, inode_str);
   }
 
   if (optargs_bitmask & GUESTFS_MKFS_OPTS_SECTORSIZE_BITMASK) {
@@ -172,15 +172,12 @@ do_mkfs_opts (const char *fstype, const char *device, int blocksize,
     }
 
     snprintf (sectorsize_str, sizeof sectorsize_str, "%d", sectorsize);
-    argv[i++] = "-S";
-    argv[i++] = sectorsize_str;
+    ADD_ARG (argv, i, "-S");
+    ADD_ARG (argv, i, sectorsize_str);
   }
 
-  argv[i++] = device;
-  argv[i++] = NULL;
-
-  if (i > MAX_ARGS)
-    abort ();
+  ADD_ARG (argv, i, device);
+  ADD_ARG (argv, i, NULL);
 
   r = commandv (NULL, &err, argv);
   if (r == -1) {
diff --git a/daemon/ntfs.c b/daemon/ntfs.c
index 92d2432..076e297 100644
--- a/daemon/ntfs.c
+++ b/daemon/ntfs.c
@@ -28,6 +28,8 @@
 #include "actions.h"
 #include "optgroups.h"
 
+#define MAX_ARGS 64
+
 int
 optgroup_ntfs3g_available (void)
 {
@@ -66,12 +68,12 @@ do_ntfsresize_opts (const char *device, int64_t size, int force)
 {
   char *err;
   int r;
-  const char *argv[16];
+  const char *argv[MAX_ARGS];
   size_t i = 0;
   char size_str[32];
 
-  argv[i++] = "ntfsresize";
-  argv[i++] = "-P";
+  ADD_ARG (argv, i, "ntfsresize");
+  ADD_ARG (argv, i, "-P");
 
   if (optargs_bitmask & GUESTFS_NTFSRESIZE_OPTS_SIZE_BITMASK) {
     if (size <= 0) {
@@ -80,15 +82,15 @@ do_ntfsresize_opts (const char *device, int64_t size, int force)
     }
 
     snprintf (size_str, sizeof size_str, "%" PRIi64, size);
-    argv[i++] = "--size";
-    argv[i++] = size_str;
+    ADD_ARG (argv, i, "--size");
+    ADD_ARG (argv, i, size_str);
   }
 
   if (optargs_bitmask & GUESTFS_NTFSRESIZE_OPTS_FORCE_BITMASK && force)
-    argv[i++] = "--force";
+    ADD_ARG (argv, i, "--force");
 
-  argv[i++] = device;
-  argv[i++] = NULL;
+  ADD_ARG (argv, i, device);
+  ADD_ARG (argv, i, NULL);
 
   r = commandv (NULL, &err, argv);
   if (r == -1) {
diff --git a/debian/changelog b/debian/changelog
index 862659e..56602da 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,6 @@
-libguestfs (1.14.2-1) unstable; urgency=low
+libguestfs (1.14.3-1) unstable; urgency=low
 
-  * release: New upstream version 1.14.2.
+  * release: New upstream version 1.14.3.
 
  -- Richard W.M. Jones <rjones at redhat.com>  Thu,  9 Dec 2010 12:00:00 +0000
 
diff --git a/df/test-virt-df.sh b/df/test-virt-df.sh
index 6878327..38884e1 100755
--- a/df/test-virt-df.sh
+++ b/df/test-virt-df.sh
@@ -61,12 +61,14 @@ fi
 # /dev/dm-2                31729       395     29696   2% /sysroot/lv2
 # /dev/dm-3                63472       144     60052   1% /sysroot/lv3
 #
-# Only test plain 'df' output at the moment (XXX).
+# This test is disabled (XXX).  See:
+# https://www.redhat.com/archives/libguestfs/2011-November/msg00051.html
 
-if [ "$(echo "$output" | sort | awk '/VG.LV[123]/ { print $2 " " $3 " " $4 " " $5 }')" != \
-"31728 28 30064 1%
-31729 395 29696 2%
-63472 144 60052 1%" ]; then
-    echo "$0: error: output of virt-df did not match expected (df) output"
-    exit 1
-fi
+#if [ "$(echo "$output" | sort | awk '/VG.LV[123]/ { print $2 " " $3 " " $4 " " $5 }')" != \
+#"31728 28 30064 1%
+#31729 395 29696 2%
+#63472 144 60052 1%" ]; then
+#    echo "$0: error: output of virt-df did not match expected (df) output"
+#    echo "$output"
+#    exit 1
+#fi
diff --git a/df/virt-df.pod b/df/virt-df.pod
index df58b4c..24b3583 100755
--- a/df/virt-df.pod
+++ b/df/virt-df.pod
@@ -188,6 +188,32 @@ Enable tracing of libguestfs API calls.
 
 =back
 
+=head1 STATVFS NUMBERS
+
+C<virt-df> (and L<df(1)>) get information by issuing a L<statvfs(3)>
+system call.  You can get the same information directly, either from
+the host (using libguestfs) or inside the guest:
+
+=over 4
+
+=item From the host
+
+Run this command:
+
+ guestfish --ro -d GuestName -i statvfs /
+
+(change C</> to see stats for other filesystems).
+
+=item From inside the guest
+
+Run this command:
+
+ python -c 'import os; s = os.statvfs ("/"); print s'
+
+(change C</> to see stats for other filesystems).
+
+=back
+
 =head1 NOTE ABOUT CSV FORMAT
 
 Comma-separated values (CSV) is a deceptive format.  It I<seems> like
diff --git a/erlang/Makefile.am b/erlang/Makefile.am
index f336375..2c9e359 100644
--- a/erlang/Makefile.am
+++ b/erlang/Makefile.am
@@ -32,7 +32,7 @@ erlang_bindir = $(libdir)/erlang/lib/$(PACKAGE_NAME)-$(PACKAGE_VERSION)/ebin
 erlang_bin_DATA = guestfs.beam
 
 guestfs.beam: guestfs.erl
-	$(ERLC) +debug_info guestfs.erl
+	$(ERLC) +debug_info $^
 
 bin_PROGRAMS = erl-guestfs
 
diff --git a/erlang/Makefile.in b/erlang/Makefile.in
index 99e450e..45f4f63 100644
--- a/erlang/Makefile.in
+++ b/erlang/Makefile.in
@@ -1674,7 +1674,7 @@ appliance: force
 	$(MAKE) -C $(top_builddir)/appliance
 
 @HAVE_ERLANG_TRUE at guestfs.beam: guestfs.erl
- at HAVE_ERLANG_TRUE@	$(ERLC) +debug_info guestfs.erl
+ at HAVE_ERLANG_TRUE@	$(ERLC) +debug_info $^
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 8d6accd..d898c99 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -18,11 +18,13 @@
 EXTRA_DIST = \
 	LICENSE \
 	guestfs-examples.pod \
-	guestfs-recipes.pod
+	guestfs-recipes.pod \
+	guestfs-testing.pod
 
 CLEANFILES = \
 	stamp-guestfs-examples.pod \
-	stamp-guestfs-recipes.pod
+	stamp-guestfs-recipes.pod \
+	stamp-guestfs-testing.pod
 
 noinst_PROGRAMS = create_disk inspect_vm
 if HAVE_HIVEX
@@ -57,10 +59,12 @@ virt_dhcp_address_LDADD = \
 
 man_MANS = \
 	guestfs-examples.3 \
-	guestfs-recipes.1
+	guestfs-recipes.1 \
+	guestfs-testing.1
 noinst_DATA = \
 	$(top_builddir)/html/guestfs-examples.3.html \
-	$(top_builddir)/html/guestfs-recipes.1.html
+	$(top_builddir)/html/guestfs-recipes.1.html \
+	$(top_builddir)/html/guestfs-testing.1.html
 
 guestfs-examples.3 $(top_builddir)/html/guestfs-examples.3.html: stamp-guestfs-examples.pod
 
@@ -83,3 +87,13 @@ stamp-guestfs-recipes.pod: guestfs-recipes.pod
 	  --html $(top_builddir)/html/guestfs-recipes.1.html \
 	  $<
 	touch $@
+
+guestfs-testing.1 $(top_builddir)/html/guestfs-testing.1.html: stamp-guestfs-testing.pod
+
+stamp-guestfs-testing.pod: guestfs-testing.pod
+	$(top_builddir)/podwrapper.sh \
+	  --section 1 \
+	  --man guestfs-testing.1 \
+	  --html $(top_builddir)/html/guestfs-testing.1.html \
+	  $<
+	touch $@
diff --git a/examples/Makefile.in b/examples/Makefile.in
index e43d02f..27b03af 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -1257,11 +1257,13 @@ top_srcdir = @top_srcdir@
 EXTRA_DIST = \
 	LICENSE \
 	guestfs-examples.pod \
-	guestfs-recipes.pod
+	guestfs-recipes.pod \
+	guestfs-testing.pod
 
 CLEANFILES = \
 	stamp-guestfs-examples.pod \
-	stamp-guestfs-recipes.pod
+	stamp-guestfs-recipes.pod \
+	stamp-guestfs-testing.pod
 
 create_disk_SOURCES = create_disk.c
 create_disk_CFLAGS = \
@@ -1294,11 +1296,13 @@ virt_dhcp_address_LDADD = \
 
 man_MANS = \
 	guestfs-examples.3 \
-	guestfs-recipes.1
+	guestfs-recipes.1 \
+	guestfs-testing.1
 
 noinst_DATA = \
 	$(top_builddir)/html/guestfs-examples.3.html \
-	$(top_builddir)/html/guestfs-recipes.1.html
+	$(top_builddir)/html/guestfs-recipes.1.html \
+	$(top_builddir)/html/guestfs-testing.1.html
 
 all: all-am
 
@@ -1758,6 +1762,16 @@ stamp-guestfs-recipes.pod: guestfs-recipes.pod
 	  $<
 	touch $@
 
+guestfs-testing.1 $(top_builddir)/html/guestfs-testing.1.html: stamp-guestfs-testing.pod
+
+stamp-guestfs-testing.pod: guestfs-testing.pod
+	$(top_builddir)/podwrapper.sh \
+	  --section 1 \
+	  --man guestfs-testing.1 \
+	  --html $(top_builddir)/html/guestfs-testing.1.html \
+	  $<
+	touch $@
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/examples/guestfs-testing.pod b/examples/guestfs-testing.pod
new file mode 100644
index 0000000..c35c3b8
--- /dev/null
+++ b/examples/guestfs-testing.pod
@@ -0,0 +1,318 @@
+=encoding utf8
+
+=head1 NAME
+
+guestfs-testing - manual testing of libguestfs, you can help!
+
+=head1 DESCRIPTION
+
+This page has manual tests you can try on libguestfs.  Everyone has a
+slightly different combination of platform, hardware and guests, so
+this testing is very valuable.  Thanks for helping out!
+
+These tests require libguestfs E<ge> 1.14.
+
+Tests marked with a B<*> (asterisk) can B<destroy data> if you're not
+careful.  The others are safe and won't modify anything.
+
+You can report bugs you find through this link:
+
+https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
+
+or post on the mailing list (registration is B<not> required, but if
+you're not registered then you'll have to wait for a moderator to
+manually approve your message):
+
+https://www.redhat.com/mailman/listinfo/libguestfs
+
+=head1 TESTS
+
+=head2 Check KVM acceleration is being used.
+
+If your host has hardware virt acceleration, then with a hot cache
+libguestfs should be able to start up in a few seconds.  Run the
+following command a few times:
+
+ time guestfish -a /dev/null run
+
+After a few runs, the time should settle down to a few seconds (under
+5 seconds on fast 64 bit hardware).
+
+How to check for hardware virt:
+
+http://virt-tools.org/learning/check-hardware-virt/
+
+If the command above does not work at all, use
+L<libguestfs-test-tool(1)>.
+
+=head2 Run virt-alignment-scan on all your guests.
+
+Run L<virt-alignment-scan(1)> on guests or disk images:
+
+ virt-alignment-scan -a /path/to/disk.img
+
+or:
+
+ virt-alignment-scan -d Guest
+
+Does the alignment report match how the guest partitions are aligned?
+
+=head2 Run virt-cat on some files in guests.
+
+L<virt-cat(1)> can display files from guests.  For a Linux guest, try:
+
+ virt-cat LinuxGuest /etc/passwd
+
+A recent feature is support for Windows paths, for example:
+
+ virt-cat WindowsGuest 'c:\windows\win.ini'
+
+An even better test is if you have a Windows guest with multiple
+drives.  Do C<D:>, C<E:> etc paths work correctly?
+
+=head2 B<*> Copy some files into a B<shut off> guest.
+
+L<virt-copy-in(1)> can recursively copy files and directories
+into a guest or disk image.
+
+ virt-copy-in -d Guest /etc /tmp
+
+This should copy local directory C</etc> to C</tmp/etc> in the guest
+(recursively).  If you boot the guest, can you see all of the copied
+files and directories?
+
+Shut the guest down and try copying multiple files and directories:
+
+ virt-copy-in -d Guest /home /etc/issue /tmp
+
+=head2 Copy some files out of a guest.
+
+L<virt-copy-out(1)> can recursively copy files and directories
+out of a guest or disk image.
+
+ virt-copy-out -d Guest /home .
+
+Note the final space and period in the command is not a typo.
+
+This should copy C</home> from the guest into the current directory.
+
+=head2 Run virt-df.
+
+L<virt-df(1)> lists disk space.  Run:
+
+ virt-df
+
+You can try comparing this to the results from L<df(1)> inside the
+guest, but there are some provisos:
+
+=over 4
+
+=item *
+
+The guest must be idle.
+
+=item *
+
+The guest disks must be synched using L<sync(1)>.
+
+=item *
+
+Any action such as booting the guest will write log files causing the
+numbers to change.
+
+=back
+
+We don't guarantee that the numbers will be identical even under these
+circumstances.  They should be similar.  It would indicate a bug if
+you saw greatly differing numbers.
+
+=head2 Try importing virt-df CSV output into a spreadsheet or database.
+
+Run:
+
+ virt-df --csv > /tmp/report.csv
+
+Now try to load this into your favorite spreadsheet or database.  Are
+the results reproduced faithfully in the spreadsheet/database?
+
+http://www.postgresql.org/docs/8.1/static/sql-copy.html
+http://dev.mysql.com/doc/refman/5.1/en/load-data.html
+
+=head2 B<*> Edit a file in a B<shut off> guest.
+
+L<virt-edit(1)> can edit files in guests.  Try this command on
+a RHEL or Fedora guest:
+
+ virt-edit LinuxGuest /etc/sysconfig/network
+
+On other Linux guests try editing other files such as:
+
+ virt-edit LinuxGuest /etc/motd
+
+Are the changes seen inside the guest when it is booted?
+
+=head2 Display the filesystems / partitions / LVs in a guest.
+
+L<virt-filesystems(1)> can be used to display filesystems in
+a guest.  Try this command on any disk image or guest:
+
+ virt-filesystems -a /path/to/disk.img --all --long -h
+
+or:
+
+ virt-filesystems -d Guest --all --long -h
+
+Do the results match what is seen in the guest?
+
+=head2 Run virt-inspector on all your guests.
+
+Use L<virt-inspector(1)> to get a report on all of your guests or disk
+images:
+
+ virt-inspector -a /path/to/disk.img | less
+
+or:
+
+ virt-inspector -d Guest | less
+
+Do the results match what is actually in the guest?
+
+=head2 Try the auditing features of virt-ls on all your guests.
+
+List all setuid or setgid programs in a Linux virtual machine:
+
+ virt-ls -lR -d Guest / | grep '^- [42]'
+
+List all public-writable directories in a Linux virtual machine:
+
+ virt-ls -lR -d Guest / | grep '^d ...7'
+
+List all Unix domain sockets in a Linux virtual machine:
+
+ virt-ls -lR -d Guest / | grep '^s'
+
+List all regular files with filenames ending in '.png':
+
+ virt-ls -lR -d Guest / | grep -i '^-.*\.png$'
+
+Display files larger than 10MB in home directories:
+
+ virt-ls -lR -d Guest /home | awk '$3 > 10*1024*1024'
+
+Find everything modified in the last 7 days:
+
+ virt-ls -lR -d Guest --time-days / | awk '$6 <= 7'
+
+Find regular files modified in the last 24 hours:
+
+ virt-ls -lR -d Guest --time-days / | grep '^-' | awk '$6 < 1'
+
+Do the results match what is in the guest?
+
+=head2 Create a disk image from a tarball.
+
+Use L<virt-make-fs(1)> to create a disk image from any tarball
+that you happen to have:
+
+ virt-make-fs --partition=mbr --type=vfat /any/tarball.tar.gz output.img
+
+Add 'output.img' as a raw disk to an existing guest.  Check the guest
+can see the files.  This test is particularly useful if you try it
+with a Windows guest.
+
+Try other partitioning schemes, eg. I<--partition=gpt>.
+
+Try other filesystem formats, eg. I<--type=ntfs>, I<--type=ext2>.
+
+=head2 B<*> Run virt-rescue on a B<shut off> disk image or guest.
+
+Use L<virt-rescue(1)> to examine, rescue or repair a B<shut off> guest
+or disk image:
+
+ virt-rescue -a /path/to/disk.img
+
+or:
+
+ virt-rescue -d Guest
+
+Can you use ordinary shell commands to examine the guest?
+
+=head2 B<*> Resize your guests.
+
+Use L<virt-resize(1)> to give a guest some more disk space.  For
+example, if you have a disk image that is smaller than 30G, increase
+it to 30G by doing:
+
+ truncate -s 30G newdisk.img
+ virt-filesystems -a /path/to/olddisk.img --all --long -h
+ virt-resize /path/to/olddisk.img newdisk.img --expand /dev/sda1
+ qemu-kvm -m 1024 -hda newdisk.img
+
+Does the guest still boot?  Try expanding other partitions.
+
+=head2 B<*> Sparsify a guest disk.
+
+Using L<virt-sparsify(1)>, make a disk image more sparse:
+
+ virt-sparsify /path/to/olddisk.img newdisk.img
+
+Is C<newdisk.img> still bootable after sparsifying?  Is the resulting
+disk image smaller (use C<du> to check)?
+
+=head2 B<*> "sysprep" a B<shut off> Linux guest.
+
+Note that this really will mess up an existing guest, so it's better
+to clone the guest before trying this.
+
+ virt-sysprep --hostname newhost.example.com -a /path/to/disk.img
+
+Was the sysprep successful?  After booting, what changes were made and
+were they successful?
+
+=head2 Dump the Windows Registry from your Windows guests.
+
+Use L<virt-win-reg(1)> to dump out the Windows Registry from
+any Windows guests that you have.
+
+ virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\Software' |
+   less
+
+ virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\System' |
+   less
+
+Does the output match running C<regedit> inside the guest?
+
+A recent feature is the ability to dump user registries, so try this,
+replacing I<username> with the name of a local user in the guest:
+
+ virt-win-reg --unsafe-printable-strings WindowsGuest 'HKEY_USERS\username' |
+   less
+
+=head1 SEE ALSO
+
+L<guestfs(3)>,
+L<guestfish(1)>,
+L<guestfs-examples(3)>,
+L<http://libguestfs.org/>.
+
+=head1 AUTHORS
+
+Richard W.M. Jones (C<rjones at redhat dot com>)
+
+=head1 COPYRIGHT
+
+Copyright (C) 2011 Red Hat Inc. L<http://libguestfs.org/>
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+This library 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
diff --git a/fuse/guestmount.c b/fuse/guestmount.c
index bfd8174..54ed947 100644
--- a/fuse/guestmount.c
+++ b/fuse/guestmount.c
@@ -595,7 +595,7 @@ static int
 fg_read (const char *path, char *buf, size_t size, off_t offset,
          struct fuse_file_info *fi)
 {
-  TRACE_CALL ("%s, %p, %zu, %ld", path, buf, size, offset);
+  TRACE_CALL ("%s, %p, %zu, %ld", path, buf, size, (long) offset);
              
   char *r;
   size_t rsize;
@@ -632,7 +632,7 @@ static int
 fg_write (const char *path, const char *buf, size_t size,
           off_t offset, struct fuse_file_info *fi)
 {
-  TRACE_CALL ("%s, %p, %zu, %ld", path, buf, size, offset);
+  TRACE_CALL ("%s, %p, %zu, %ld", path, buf, size, (long) offset);
 
   if (read_only) return -EROFS;
 
diff --git a/generator/generator_capitests.ml b/generator/generator_capitests.ml
index 7bfd87c..fefc6e2 100644
--- a/generator/generator_capitests.ml
+++ b/generator/generator_capitests.ml
@@ -113,6 +113,24 @@ md5sum (const char *filename, char *result)
   result[32] = '\\0';
 }
 
+#if 0 /* <- Remove this if we add RHashtable tests in 1.14 branch. */
+/* Return the value for a key in a hashtable.
+ * Note: the return value is part of the hash and should not be freed.
+ */
+static const char *
+get_key (char **hash, const char *key)
+{
+  size_t i;
+
+  for (i = 0; hash[i] != NULL; i += 2) {
+    if (STREQ (hash[i], key))
+      return hash[i+1];
+  }
+
+  return NULL; /* key not found */
+}
+#endif
+
 ";
 
   (* Generate a list of commands which are not tested anywhere. *)
@@ -695,6 +713,28 @@ and generate_one_test_body name i test_name init test =
       in
       List.iter (generate_test_command_call test_name) seq;
       generate_test_command_call ~test test_name last
+  | TestOutputHashtable (seq, fields) ->
+      pr "  /* TestOutputHashtable for %s (%d) */\n" name i;
+      pr "  const char *key, *expected, *value;\n";
+      let seq, last = get_seq_last seq in
+      let test () =
+        List.iter (
+          fun (key, value) ->
+            pr "    key = \"%s\";\n" (c_quote key);
+            pr "    expected = \"%s\";\n" (c_quote value);
+            pr "    value = get_key (r, key);\n";
+            pr "    if (value == NULL) {\n";
+            pr "      fprintf (stderr, \"%s: key \\\"%%s\\\" not found in hash: expecting \\\"%%s\\\"\\n\", key, expected);\n" test_name;
+            pr "      return -1;\n";
+            pr "    }\n";
+            pr "    if (STRNEQ (value, expected)) {\n";
+            pr "      fprintf (stderr, \"%s: key \\\"%%s\\\": expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", key, expected, value);\n" test_name;
+            pr "      return -1;\n";
+            pr "    }\n";
+        ) fields
+      in
+      List.iter (generate_test_command_call test_name) seq;
+      generate_test_command_call ~test test_name last
   | TestLastFail seq ->
       pr "  /* TestLastFail for %s (%d) */\n" name i;
       let seq, last = get_seq_last seq in
diff --git a/generator/generator_types.ml b/generator/generator_types.ml
index 9da7e45..9459299 100644
--- a/generator/generator_types.ml
+++ b/generator/generator_types.ml
@@ -290,6 +290,12 @@ and test =
      *)
   | TestOutputDevice of seq * string
 
+    (* Run the command sequence and expect a hashtable.  Check
+     * one of more fields in the hashtable against known good
+     * strings.
+     *)
+  | TestOutputHashtable of seq * (string * string) list
+
   (* Run the command sequence and expect the final command (only)
    * to fail.
    *)
diff --git a/generator/generator_utils.ml b/generator/generator_utils.ml
index 4180c0d..aa7fcba 100644
--- a/generator/generator_utils.ml
+++ b/generator/generator_utils.ml
@@ -264,6 +264,7 @@ let seq_of_test = function
   | TestOutputStruct (s, _)
   | TestOutputFileMD5 (s, _)
   | TestOutputDevice (s, _)
+  | TestOutputHashtable (s, _)
   | TestLastFail s -> s
 
 let c_quote str =
diff --git a/haskell/Makefile.am b/haskell/Makefile.am
index 1fa8c0b..5c1ff98 100644
--- a/haskell/Makefile.am
+++ b/haskell/Makefile.am
@@ -37,23 +37,23 @@ TESTS = run-bindtests Guestfs005Load Guestfs010Basic
 
 check_DATA = Bindtests
 
-GHCFLAGS = -I$(top_builddir)/src -L$(top_builddir)/src/.libs
+GHCFLAGS = -I$(top_builddir)/src -L$(top_builddir)/src/.libs -i$(srcdir)
 
 all_targets = Bindtests Guestfs005Load Guestfs010Basic
 $(all_targets): $(top_builddir)/src/libguestfs.la
 
 all: $(all_targets)
 
-Guestfs.o: Guestfs.hs
-	$(GHC)  $(GHCFLAGS) -c $<
+Guestfs.o: $(srcdir)/Guestfs.hs
+	$(GHC)  $(GHCFLAGS) -c $< -o $@
 
-Bindtests: Bindtests.hs Guestfs.o
+Bindtests: $(srcdir)/Bindtests.hs Guestfs.o
 	$(GHC)  $(GHCFLAGS) -main-is $(shell basename $@) --make -o $@ $< -lguestfs
 
-Guestfs005Load: Guestfs005Load.hs Guestfs.o
+Guestfs005Load: $(srcdir)/Guestfs005Load.hs Guestfs.o
 	$(GHC)  $(GHCFLAGS) -main-is $(shell basename $@) --make -o $@ $< -lguestfs
 
-Guestfs010Basic: Guestfs010Basic.hs Guestfs.o
+Guestfs010Basic: $(srcdir)/Guestfs010Basic.hs Guestfs.o
 	$(GHC)  $(GHCFLAGS) -main-is $(shell basename $@) --make -o $@ $< -lguestfs
 
 CLEANFILES = $(all_targets) *~ *.hi *.o
diff --git a/haskell/Makefile.in b/haskell/Makefile.in
index 8e9f043..8cc73df 100644
--- a/haskell/Makefile.in
+++ b/haskell/Makefile.in
@@ -1207,7 +1207,7 @@ EXTRA_DIST = $(generator_built) *.hs run-bindtests
 
 @HAVE_HASKELL_TRUE at TESTS = run-bindtests Guestfs005Load Guestfs010Basic
 @HAVE_HASKELL_TRUE at check_DATA = Bindtests
- at HAVE_HASKELL_TRUE@GHCFLAGS = -I$(top_builddir)/src -L$(top_builddir)/src/.libs
+ at HAVE_HASKELL_TRUE@GHCFLAGS = -I$(top_builddir)/src -L$(top_builddir)/src/.libs -i$(srcdir)
 @HAVE_HASKELL_TRUE at all_targets = Bindtests Guestfs005Load Guestfs010Basic
 @HAVE_HASKELL_TRUE at CLEANFILES = $(all_targets) *~ *.hi *.o
 all: all-am
@@ -1516,16 +1516,16 @@ appliance: force
 
 @HAVE_HASKELL_TRUE at all: $(all_targets)
 
- at HAVE_HASKELL_TRUE@Guestfs.o: Guestfs.hs
- at HAVE_HASKELL_TRUE@	$(GHC)  $(GHCFLAGS) -c $<
+ at HAVE_HASKELL_TRUE@Guestfs.o: $(srcdir)/Guestfs.hs
+ at HAVE_HASKELL_TRUE@	$(GHC)  $(GHCFLAGS) -c $< -o $@
 
- at HAVE_HASKELL_TRUE@Bindtests: Bindtests.hs Guestfs.o
+ at HAVE_HASKELL_TRUE@Bindtests: $(srcdir)/Bindtests.hs Guestfs.o
 @HAVE_HASKELL_TRUE@	$(GHC)  $(GHCFLAGS) -main-is $(shell basename $@) --make -o $@ $< -lguestfs
 
- at HAVE_HASKELL_TRUE@Guestfs005Load: Guestfs005Load.hs Guestfs.o
+ at HAVE_HASKELL_TRUE@Guestfs005Load: $(srcdir)/Guestfs005Load.hs Guestfs.o
 @HAVE_HASKELL_TRUE@	$(GHC)  $(GHCFLAGS) -main-is $(shell basename $@) --make -o $@ $< -lguestfs
 
- at HAVE_HASKELL_TRUE@Guestfs010Basic: Guestfs010Basic.hs Guestfs.o
+ at HAVE_HASKELL_TRUE@Guestfs010Basic: $(srcdir)/Guestfs010Basic.hs Guestfs.o
 @HAVE_HASKELL_TRUE@	$(GHC)  $(GHCFLAGS) -main-is $(shell basename $@) --make -o $@ $< -lguestfs
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/java/Makefile.am b/java/Makefile.am
index 7686047..a96d304 100644
--- a/java/Makefile.am
+++ b/java/Makefile.am
@@ -73,7 +73,7 @@ libguestfs_jni_la_SOURCES = \
 	com_redhat_et_libguestfs_GuestFS.c
 
 libguestfs_jni_la_LIBADD = $(top_builddir)/src/libguestfs.la
-libguestfs_jni_la_LDFLAGS = -version-info $(JNI_VERSION_INFO)
+libguestfs_jni_la_LDFLAGS = -version-info $(JNI_VERSION_INFO) -shared
 libguestfs_jni_la_CFLAGS = \
   $(WARN_CFLAGS) $(WERROR_CFLAGS) \
   -I$(top_srcdir)/src -I$(top_builddir)/src \
@@ -112,10 +112,11 @@ TESTS_ENVIRONMENT = \
 noinst_DATA = Bindtests.class $(java_tests:.java=.class)
 
 t/%.class: t/%.java
-	$(JAVAC) $(JAVAC_FLAGS) -classpath libguestfs-$(VERSION).jar $<
+	mkdir -p t
+	$(JAVAC) $(JAVAC_FLAGS) -classpath libguestfs-$(VERSION).jar -d $(builddir)/t $<
 
 Bindtests.class: Bindtests.java
-	$(JAVAC) $(JAVAC_FLAGS) -classpath libguestfs-$(VERSION).jar $<
+	$(JAVAC) $(JAVAC_FLAGS) -classpath libguestfs-$(VERSION).jar -d $(builddir) $<
 
 endif
 
diff --git a/java/Makefile.in b/java/Makefile.in
index b900c4b..ea9a6bf 100644
--- a/java/Makefile.in
+++ b/java/Makefile.in
@@ -1335,7 +1335,7 @@ CLEANFILES = doc-stamp $(builddir)/com/redhat/et/libguestfs/*.class com_redhat_e
 @HAVE_JAVA_TRUE@	com_redhat_et_libguestfs_GuestFS.c
 
 @HAVE_JAVA_TRUE at libguestfs_jni_la_LIBADD = $(top_builddir)/src/libguestfs.la
- at HAVE_JAVA_TRUE@libguestfs_jni_la_LDFLAGS = -version-info $(JNI_VERSION_INFO)
+ at HAVE_JAVA_TRUE@libguestfs_jni_la_LDFLAGS = -version-info $(JNI_VERSION_INFO) -shared
 @HAVE_JAVA_TRUE at libguestfs_jni_la_CFLAGS = \
 @HAVE_JAVA_TRUE@  $(WARN_CFLAGS) $(WERROR_CFLAGS) \
 @HAVE_JAVA_TRUE@  -I$(top_srcdir)/src -I$(top_builddir)/src \
@@ -1840,10 +1840,11 @@ builddir ?= $(top_builddir)/java
 @HAVE_JAVA_TRUE@	cp -a api/* $(DESTDIR)$(datadir)/javadoc/$(PACKAGE_NAME)-java-$(PACKAGE_VERSION)
 
 @HAVE_JAVA_TRUE at t/%.class: t/%.java
- at HAVE_JAVA_TRUE@	$(JAVAC) $(JAVAC_FLAGS) -classpath libguestfs-$(VERSION).jar $<
+ at HAVE_JAVA_TRUE@	mkdir -p t
+ at HAVE_JAVA_TRUE@	$(JAVAC) $(JAVAC_FLAGS) -classpath libguestfs-$(VERSION).jar -d $(builddir)/t $<
 
 @HAVE_JAVA_TRUE at Bindtests.class: Bindtests.java
- at HAVE_JAVA_TRUE@	$(JAVAC) $(JAVAC_FLAGS) -classpath libguestfs-$(VERSION).jar $<
+ at HAVE_JAVA_TRUE@	$(JAVAC) $(JAVAC_FLAGS) -classpath libguestfs-$(VERSION).jar -d $(builddir) $<
 
 # Tell version 3.79 and up of GNU make to not build goals in this
 # directory in parallel.
diff --git a/libguestfs.pc b/libguestfs.pc
index 36c80c7..56f66c6 100644
--- a/libguestfs.pc
+++ b/libguestfs.pc
@@ -4,7 +4,7 @@ libdir=${exec_prefix}/lib
 includedir=${prefix}/include
 
 Name: libguestfs
-Version: 1.14.2
+Version: 1.14.3
 Description: libguestfs library for accessing and modifying VM images
 Requires:
 Cflags:
diff --git a/po-docs/ja.po b/po-docs/ja.po
index b4901b9..35bb9f6 100644
--- a/po-docs/ja.po
+++ b/po-docs/ja.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: libguestfs at redhat.com\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:15+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Japanese <trans-ja at lists.fedoraproject.org>\n"
@@ -24,15 +24,16 @@ msgstr ""
 #: ../cat/virt-filesystems.pod:3 ../cat/virt-ls.pod:3
 #: ../clone/virt-sysprep.pod:3 ../df/virt-df.pod:3 ../edit/virt-edit.pod:3
 #: ../erlang/examples/guestfs-erlang.pod:3 ../examples/guestfs-examples.pod:3
-#: ../examples/guestfs-recipes.pod:14 ../fish/guestfish.pod:3
-#: ../fish/virt-copy-in.pod:3 ../fish/virt-copy-out.pod:3
-#: ../fish/virt-tar-in.pod:3 ../fish/virt-tar-out.pod:3
-#: ../fuse/guestmount.pod:3 ../inspector/virt-inspector.pod:3
-#: ../java/examples/guestfs-java.pod:3 ../ocaml/examples/guestfs-ocaml.pod:3
-#: ../perl/examples/guestfs-perl.pod:3 ../python/examples/guestfs-python.pod:3
-#: ../rescue/virt-rescue.pod:3 ../resize/virt-resize.pod:3
-#: ../ruby/examples/guestfs-ruby.pod:3 ../sparsify/virt-sparsify.pod:3
-#: ../src/guestfs.pod:3 ../test-tool/libguestfs-test-tool.pod:3
+#: ../examples/guestfs-recipes.pod:14 ../examples/guestfs-testing.pod:3
+#: ../fish/guestfish.pod:3 ../fish/virt-copy-in.pod:3
+#: ../fish/virt-copy-out.pod:3 ../fish/virt-tar-in.pod:3
+#: ../fish/virt-tar-out.pod:3 ../fuse/guestmount.pod:3
+#: ../inspector/virt-inspector.pod:3 ../java/examples/guestfs-java.pod:3
+#: ../ocaml/examples/guestfs-ocaml.pod:3 ../perl/examples/guestfs-perl.pod:3
+#: ../python/examples/guestfs-python.pod:3 ../rescue/virt-rescue.pod:3
+#: ../resize/virt-resize.pod:3 ../ruby/examples/guestfs-ruby.pod:3
+#: ../sparsify/virt-sparsify.pod:3 ../src/guestfs.pod:3
+#: ../test-tool/libguestfs-test-tool.pod:3
 #: ../tools/virt-list-filesystems.pl:30 ../tools/virt-list-partitions.pl:30
 #: ../tools/virt-make-fs.pl:35 ../tools/virt-tar.pl:31
 #: ../tools/virt-win-reg.pl:35
@@ -86,11 +87,12 @@ msgstr ""
 #: ../clone/virt-sysprep.pod:13 ../df/virt-df.pod:21 ../edit/virt-edit.pod:27
 #: ../erlang/examples/guestfs-erlang.pod:16
 #: ../examples/guestfs-examples.pod:19 ../examples/guestfs-recipes.pod:18
-#: ../fish/guestfish.pod:30 ../fish/virt-copy-in.pod:19
-#: ../fish/virt-copy-out.pod:13 ../fish/virt-tar-in.pod:21
-#: ../fish/virt-tar-out.pod:15 ../fuse/guestmount.pod:20
-#: ../inspector/virt-inspector.pod:19 ../java/examples/guestfs-java.pod:15
-#: ../ocaml/examples/guestfs-ocaml.pod:25 ../perl/examples/guestfs-perl.pod:18
+#: ../examples/guestfs-testing.pod:7 ../fish/guestfish.pod:30
+#: ../fish/virt-copy-in.pod:19 ../fish/virt-copy-out.pod:13
+#: ../fish/virt-tar-in.pod:21 ../fish/virt-tar-out.pod:15
+#: ../fuse/guestmount.pod:20 ../inspector/virt-inspector.pod:19
+#: ../java/examples/guestfs-java.pod:15 ../ocaml/examples/guestfs-ocaml.pod:25
+#: ../perl/examples/guestfs-perl.pod:18
 #: ../python/examples/guestfs-python.pod:14 ../rescue/virt-rescue.pod:29
 #: ../resize/virt-resize.pod:13 ../ruby/examples/guestfs-ruby.pod:15
 #: ../sparsify/virt-sparsify.pod:11 ../src/guestfs.pod:23
@@ -487,13 +489,13 @@ msgstr ""
 
 #. type: =item
 #: ../align/virt-alignment-scan.pod:147 ../resize/virt-resize.pod:491
-#: ../sparsify/virt-sparsify.pod:153
+#: ../sparsify/virt-sparsify.pod:152
 msgid "B<-q>"
 msgstr ""
 
 #. type: =item
 #: ../align/virt-alignment-scan.pod:149 ../resize/virt-resize.pod:493
-#: ../sparsify/virt-sparsify.pod:155
+#: ../sparsify/virt-sparsify.pod:154
 msgid "B<--quiet>"
 msgstr ""
 
@@ -510,7 +512,7 @@ msgstr ""
 #: ../clone/virt-sysprep.pod:138 ../df/virt-df.pod:173
 #: ../edit/virt-edit.pod:161 ../fish/guestfish.pod:390
 #: ../fuse/guestmount.pod:266 ../inspector/virt-inspector.pod:119
-#: ../rescue/virt-rescue.pod:182 ../sparsify/virt-sparsify.pod:159
+#: ../rescue/virt-rescue.pod:182 ../sparsify/virt-sparsify.pod:158
 msgid "B<-v>"
 msgstr ""
 
@@ -520,7 +522,7 @@ msgstr ""
 #: ../clone/virt-sysprep.pod:140 ../df/virt-df.pod:175
 #: ../edit/virt-edit.pod:163 ../fish/guestfish.pod:392
 #: ../fuse/guestmount.pod:268 ../inspector/virt-inspector.pod:121
-#: ../rescue/virt-rescue.pod:184 ../sparsify/virt-sparsify.pod:161
+#: ../rescue/virt-rescue.pod:184 ../sparsify/virt-sparsify.pod:160
 msgid "B<--verbose>"
 msgstr ""
 
@@ -529,7 +531,7 @@ msgstr ""
 #: ../cat/virt-filesystems.pod:265 ../cat/virt-ls.pod:429
 #: ../clone/virt-sysprep.pod:142 ../df/virt-df.pod:177
 #: ../edit/virt-edit.pod:165 ../inspector/virt-inspector.pod:123
-#: ../rescue/virt-rescue.pod:186 ../sparsify/virt-sparsify.pod:163
+#: ../rescue/virt-rescue.pod:186 ../sparsify/virt-sparsify.pod:162
 msgid "Enable verbose messages for debugging."
 msgstr ""
 
@@ -540,7 +542,7 @@ msgstr ""
 #: ../edit/virt-edit.pod:167 ../fish/guestfish.pod:397
 #: ../fuse/guestmount.pod:272 ../inspector/virt-inspector.pod:125
 #: ../rescue/virt-rescue.pod:188 ../resize/virt-resize.pod:561
-#: ../sparsify/virt-sparsify.pod:165
+#: ../sparsify/virt-sparsify.pod:164
 msgid "B<-V>"
 msgstr ""
 
@@ -551,7 +553,7 @@ msgstr ""
 #: ../edit/virt-edit.pod:169 ../fish/guestfish.pod:399
 #: ../fuse/guestmount.pod:274 ../inspector/virt-inspector.pod:127
 #: ../rescue/virt-rescue.pod:190 ../resize/virt-resize.pod:563
-#: ../sparsify/virt-sparsify.pod:167 ../tools/virt-list-filesystems.pl:69
+#: ../sparsify/virt-sparsify.pod:166 ../tools/virt-list-filesystems.pl:69
 #: ../tools/virt-list-partitions.pl:70 ../tools/virt-make-fs.pl:169
 #: ../tools/virt-tar.pl:119 ../tools/virt-win-reg.pl:112
 msgid "B<--version>"
@@ -563,7 +565,7 @@ msgstr ""
 #: ../clone/virt-sysprep.pod:148 ../df/virt-df.pod:183
 #: ../edit/virt-edit.pod:171 ../inspector/virt-inspector.pod:129
 #: ../rescue/virt-rescue.pod:192 ../resize/virt-resize.pod:565
-#: ../sparsify/virt-sparsify.pod:169 ../tools/virt-list-filesystems.pl:71
+#: ../sparsify/virt-sparsify.pod:168 ../tools/virt-list-filesystems.pl:71
 #: ../tools/virt-list-partitions.pl:72 ../tools/virt-make-fs.pl:171
 #: ../tools/virt-tar.pl:121 ../tools/virt-win-reg.pl:114
 msgid "Display version number and exit."
@@ -575,7 +577,7 @@ msgstr ""
 #: ../clone/virt-sysprep.pod:150 ../df/virt-df.pod:185
 #: ../edit/virt-edit.pod:173 ../fish/guestfish.pod:412
 #: ../fuse/guestmount.pod:287 ../inspector/virt-inspector.pod:131
-#: ../rescue/virt-rescue.pod:203 ../sparsify/virt-sparsify.pod:171
+#: ../rescue/virt-rescue.pod:203 ../sparsify/virt-sparsify.pod:170
 #: ../tools/virt-tar.pl:158
 msgid "B<-x>"
 msgstr ""
@@ -585,7 +587,7 @@ msgstr ""
 #: ../cat/virt-filesystems.pod:283 ../cat/virt-ls.pod:439
 #: ../clone/virt-sysprep.pod:152 ../df/virt-df.pod:187
 #: ../edit/virt-edit.pod:175 ../inspector/virt-inspector.pod:133
-#: ../rescue/virt-rescue.pod:205 ../sparsify/virt-sparsify.pod:173
+#: ../rescue/virt-rescue.pod:205 ../sparsify/virt-sparsify.pod:172
 msgid "Enable tracing of libguestfs API calls."
 msgstr ""
 
@@ -859,7 +861,7 @@ msgstr ""
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:311 ../cat/virt-cat.pod:231
 #: ../cat/virt-filesystems.pod:373 ../cat/virt-ls.pod:483
-#: ../clone/virt-sysprep.pod:475 ../df/virt-df.pod:215
+#: ../clone/virt-sysprep.pod:475 ../df/virt-df.pod:241
 #: ../edit/virt-edit.pod:342 ../inspector/virt-inspector.pod:367
 #: ../rescue/virt-rescue.pod:266 ../resize/virt-resize.pod:676
 #: ../tools/virt-list-filesystems.pl:188 ../tools/virt-list-partitions.pl:258
@@ -871,7 +873,7 @@ msgstr ""
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:313 ../cat/virt-cat.pod:233
 #: ../cat/virt-filesystems.pod:375 ../cat/virt-ls.pod:485
-#: ../clone/virt-sysprep.pod:477 ../df/virt-df.pod:217
+#: ../clone/virt-sysprep.pod:477 ../df/virt-df.pod:243
 #: ../edit/virt-edit.pod:344 ../inspector/virt-inspector.pod:369
 #: ../rescue/virt-rescue.pod:268 ../resize/virt-resize.pod:678
 #: ../tools/virt-list-filesystems.pl:190 ../tools/virt-list-partitions.pl:260
@@ -887,10 +889,10 @@ msgstr ""
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:318 ../cat/virt-cat.pod:238
 #: ../cat/virt-filesystems.pod:380 ../cat/virt-ls.pod:490
-#: ../clone/virt-sysprep.pod:482 ../df/virt-df.pod:222
+#: ../clone/virt-sysprep.pod:482 ../df/virt-df.pod:248
 #: ../edit/virt-edit.pod:349 ../fish/guestfish.pod:1114
 #: ../fuse/guestmount.pod:312 ../inspector/virt-inspector.pod:390
-#: ../resize/virt-resize.pod:683 ../sparsify/virt-sparsify.pod:227
+#: ../resize/virt-resize.pod:683 ../sparsify/virt-sparsify.pod:226
 #: ../test-tool/libguestfs-test-tool.pod:90
 msgid "EXIT STATUS"
 msgstr ""
@@ -919,65 +921,66 @@ msgstr ""
 #: ../examples/guestfs-recipes.pod:137 ../examples/guestfs-recipes.pod:227
 #: ../examples/guestfs-recipes.pod:231 ../examples/guestfs-recipes.pod:235
 #: ../examples/guestfs-recipes.pod:239 ../examples/guestfs-recipes.pod:243
-#: ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20
-#: ../fish/guestfish-actions.pod:441 ../fish/guestfish-actions.pod:449
-#: ../fish/guestfish-actions.pod:456 ../fish/guestfish-actions.pod:463
-#: ../fish/guestfish-actions.pod:1262 ../fish/guestfish-actions.pod:1266
-#: ../fish/guestfish-actions.pod:1270 ../fish/guestfish-actions.pod:1274
-#: ../fish/guestfish-actions.pod:1282 ../fish/guestfish-actions.pod:1286
-#: ../fish/guestfish-actions.pod:1290 ../fish/guestfish-actions.pod:1300
-#: ../fish/guestfish-actions.pod:1304 ../fish/guestfish-actions.pod:1308
-#: ../fish/guestfish-actions.pod:1398 ../fish/guestfish-actions.pod:1402
-#: ../fish/guestfish-actions.pod:1407 ../fish/guestfish-actions.pod:1412
-#: ../fish/guestfish-actions.pod:1454 ../fish/guestfish-actions.pod:1458
-#: ../fish/guestfish-actions.pod:1463 ../fish/guestfish-actions.pod:1719
-#: ../fish/guestfish-actions.pod:1726 ../fish/guestfish-actions.pod:1733
-#: ../fish/guestfish-actions.pod:2136 ../fish/guestfish-actions.pod:2142
-#: ../fish/guestfish-actions.pod:2150 ../fish/guestfish-actions.pod:2157
-#: ../fish/guestfish-actions.pod:2164 ../fish/guestfish.pod:445
-#: ../fish/guestfish.pod:449 ../fish/guestfish.pod:453
-#: ../fish/guestfish.pod:457 ../inspector/virt-inspector.pod:408
-#: ../inspector/virt-inspector.pod:412 ../resize/virt-resize.pod:359
-#: ../resize/virt-resize.pod:363 ../resize/virt-resize.pod:372
-#: ../resize/virt-resize.pod:378 ../sparsify/virt-sparsify.pod:32
-#: ../sparsify/virt-sparsify.pod:39 ../sparsify/virt-sparsify.pod:43
-#: ../sparsify/virt-sparsify.pod:49 ../sparsify/virt-sparsify.pod:54
-#: ../sparsify/virt-sparsify.pod:58 ../sparsify/virt-sparsify.pod:64
-#: ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:29
-#: ../src/guestfs-actions.pod:641 ../src/guestfs-actions.pod:649
-#: ../src/guestfs-actions.pod:656 ../src/guestfs-actions.pod:663
-#: ../src/guestfs-actions.pod:2079 ../src/guestfs-actions.pod:2083
-#: ../src/guestfs-actions.pod:2087 ../src/guestfs-actions.pod:2091
-#: ../src/guestfs-actions.pod:2099 ../src/guestfs-actions.pod:2103
-#: ../src/guestfs-actions.pod:2107 ../src/guestfs-actions.pod:2117
-#: ../src/guestfs-actions.pod:2121 ../src/guestfs-actions.pod:2125
-#: ../src/guestfs-actions.pod:2263 ../src/guestfs-actions.pod:2267
-#: ../src/guestfs-actions.pod:2272 ../src/guestfs-actions.pod:2277
-#: ../src/guestfs-actions.pod:2338 ../src/guestfs-actions.pod:2342
-#: ../src/guestfs-actions.pod:2347 ../src/guestfs-actions.pod:2762
-#: ../src/guestfs-actions.pod:2769 ../src/guestfs-actions.pod:2776
-#: ../src/guestfs-actions.pod:3321 ../src/guestfs-actions.pod:3327
-#: ../src/guestfs-actions.pod:3335 ../src/guestfs-actions.pod:3342
-#: ../src/guestfs-actions.pod:3349 ../src/guestfs.pod:403
-#: ../src/guestfs.pod:408 ../src/guestfs.pod:413 ../src/guestfs.pod:417
-#: ../src/guestfs.pod:422 ../src/guestfs.pod:426 ../src/guestfs.pod:431
-#: ../src/guestfs.pod:436 ../src/guestfs.pod:1109 ../src/guestfs.pod:1113
-#: ../src/guestfs.pod:1117 ../src/guestfs.pod:1122 ../src/guestfs.pod:1130
-#: ../src/guestfs.pod:1149 ../src/guestfs.pod:1157 ../src/guestfs.pod:1179
-#: ../src/guestfs.pod:1183 ../src/guestfs.pod:1187 ../src/guestfs.pod:1191
-#: ../src/guestfs.pod:1195 ../src/guestfs.pod:1199 ../src/guestfs.pod:1689
-#: ../src/guestfs.pod:1694 ../src/guestfs.pod:1698 ../src/guestfs.pod:1800
-#: ../src/guestfs.pod:1805 ../src/guestfs.pod:1809 ../src/guestfs.pod:1819
-#: ../src/guestfs.pod:2108 ../src/guestfs.pod:2113 ../src/guestfs.pod:2119
-#: ../src/guestfs.pod:2127 ../src/guestfs.pod:2645 ../src/guestfs.pod:2651
-#: ../src/guestfs.pod:2656 ../src/guestfs.pod:2662 ../src/guestfs.pod:3062
-#: ../src/guestfs.pod:3067 ../src/guestfs.pod:3071 ../src/guestfs.pod:3075
-#: ../src/guestfs.pod:3079 ../src/guestfs.pod:3093 ../src/guestfs.pod:3098
-#: ../src/guestfs.pod:3329 ../src/guestfs.pod:3333 ../src/guestfs.pod:3337
-#: ../src/guestfs.pod:3341 ../tools/virt-win-reg.pl:197
-#: ../tools/virt-win-reg.pl:202 ../tools/virt-win-reg.pl:208
-#: ../tools/virt-win-reg.pl:721 ../tools/virt-win-reg.pl:727
-#: ../tools/virt-win-reg.pl:733
+#: ../examples/guestfs-testing.pod:110 ../examples/guestfs-testing.pod:114
+#: ../examples/guestfs-testing.pod:118 ../fish/guestfish-actions.pod:13
+#: ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:441
+#: ../fish/guestfish-actions.pod:449 ../fish/guestfish-actions.pod:456
+#: ../fish/guestfish-actions.pod:463 ../fish/guestfish-actions.pod:1262
+#: ../fish/guestfish-actions.pod:1266 ../fish/guestfish-actions.pod:1270
+#: ../fish/guestfish-actions.pod:1274 ../fish/guestfish-actions.pod:1282
+#: ../fish/guestfish-actions.pod:1286 ../fish/guestfish-actions.pod:1290
+#: ../fish/guestfish-actions.pod:1300 ../fish/guestfish-actions.pod:1304
+#: ../fish/guestfish-actions.pod:1308 ../fish/guestfish-actions.pod:1398
+#: ../fish/guestfish-actions.pod:1402 ../fish/guestfish-actions.pod:1407
+#: ../fish/guestfish-actions.pod:1412 ../fish/guestfish-actions.pod:1454
+#: ../fish/guestfish-actions.pod:1458 ../fish/guestfish-actions.pod:1463
+#: ../fish/guestfish-actions.pod:1719 ../fish/guestfish-actions.pod:1726
+#: ../fish/guestfish-actions.pod:1733 ../fish/guestfish-actions.pod:2136
+#: ../fish/guestfish-actions.pod:2142 ../fish/guestfish-actions.pod:2150
+#: ../fish/guestfish-actions.pod:2157 ../fish/guestfish-actions.pod:2164
+#: ../fish/guestfish.pod:445 ../fish/guestfish.pod:449
+#: ../fish/guestfish.pod:453 ../fish/guestfish.pod:457
+#: ../inspector/virt-inspector.pod:408 ../inspector/virt-inspector.pod:412
+#: ../resize/virt-resize.pod:359 ../resize/virt-resize.pod:363
+#: ../resize/virt-resize.pod:372 ../resize/virt-resize.pod:378
+#: ../sparsify/virt-sparsify.pod:32 ../sparsify/virt-sparsify.pod:39
+#: ../sparsify/virt-sparsify.pod:43 ../sparsify/virt-sparsify.pod:49
+#: ../sparsify/virt-sparsify.pod:54 ../sparsify/virt-sparsify.pod:58
+#: ../sparsify/virt-sparsify.pod:64 ../src/guestfs-actions.pod:22
+#: ../src/guestfs-actions.pod:29 ../src/guestfs-actions.pod:641
+#: ../src/guestfs-actions.pod:649 ../src/guestfs-actions.pod:656
+#: ../src/guestfs-actions.pod:663 ../src/guestfs-actions.pod:2079
+#: ../src/guestfs-actions.pod:2083 ../src/guestfs-actions.pod:2087
+#: ../src/guestfs-actions.pod:2091 ../src/guestfs-actions.pod:2099
+#: ../src/guestfs-actions.pod:2103 ../src/guestfs-actions.pod:2107
+#: ../src/guestfs-actions.pod:2117 ../src/guestfs-actions.pod:2121
+#: ../src/guestfs-actions.pod:2125 ../src/guestfs-actions.pod:2263
+#: ../src/guestfs-actions.pod:2267 ../src/guestfs-actions.pod:2272
+#: ../src/guestfs-actions.pod:2277 ../src/guestfs-actions.pod:2338
+#: ../src/guestfs-actions.pod:2342 ../src/guestfs-actions.pod:2347
+#: ../src/guestfs-actions.pod:2762 ../src/guestfs-actions.pod:2769
+#: ../src/guestfs-actions.pod:2776 ../src/guestfs-actions.pod:3321
+#: ../src/guestfs-actions.pod:3327 ../src/guestfs-actions.pod:3335
+#: ../src/guestfs-actions.pod:3342 ../src/guestfs-actions.pod:3349
+#: ../src/guestfs.pod:403 ../src/guestfs.pod:408 ../src/guestfs.pod:413
+#: ../src/guestfs.pod:417 ../src/guestfs.pod:422 ../src/guestfs.pod:426
+#: ../src/guestfs.pod:431 ../src/guestfs.pod:436 ../src/guestfs.pod:1109
+#: ../src/guestfs.pod:1113 ../src/guestfs.pod:1117 ../src/guestfs.pod:1122
+#: ../src/guestfs.pod:1130 ../src/guestfs.pod:1149 ../src/guestfs.pod:1157
+#: ../src/guestfs.pod:1179 ../src/guestfs.pod:1183 ../src/guestfs.pod:1187
+#: ../src/guestfs.pod:1191 ../src/guestfs.pod:1195 ../src/guestfs.pod:1199
+#: ../src/guestfs.pod:1689 ../src/guestfs.pod:1694 ../src/guestfs.pod:1698
+#: ../src/guestfs.pod:1800 ../src/guestfs.pod:1805 ../src/guestfs.pod:1809
+#: ../src/guestfs.pod:1819 ../src/guestfs.pod:2108 ../src/guestfs.pod:2113
+#: ../src/guestfs.pod:2119 ../src/guestfs.pod:2127 ../src/guestfs.pod:2645
+#: ../src/guestfs.pod:2651 ../src/guestfs.pod:2656 ../src/guestfs.pod:2662
+#: ../src/guestfs.pod:3062 ../src/guestfs.pod:3067 ../src/guestfs.pod:3071
+#: ../src/guestfs.pod:3075 ../src/guestfs.pod:3079 ../src/guestfs.pod:3093
+#: ../src/guestfs.pod:3098 ../src/guestfs.pod:3330 ../src/guestfs.pod:3334
+#: ../src/guestfs.pod:3338 ../src/guestfs.pod:3342
+#: ../tools/virt-win-reg.pl:197 ../tools/virt-win-reg.pl:202
+#: ../tools/virt-win-reg.pl:208 ../tools/virt-win-reg.pl:721
+#: ../tools/virt-win-reg.pl:727 ../tools/virt-win-reg.pl:733
 msgid "*"
 msgstr ""
 
@@ -1029,17 +1032,18 @@ msgstr ""
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:352 ../cat/virt-cat.pod:243
 #: ../cat/virt-filesystems.pod:385 ../cat/virt-ls.pod:495
-#: ../clone/virt-sysprep.pod:486 ../df/virt-df.pod:227
+#: ../clone/virt-sysprep.pod:486 ../df/virt-df.pod:253
 #: ../edit/virt-edit.pod:354 ../erlang/examples/guestfs-erlang.pod:97
 #: ../examples/guestfs-examples.pod:33 ../examples/guestfs-recipes.pod:384
-#: ../fish/guestfish.pod:1268 ../fish/virt-copy-in.pod:50
-#: ../fish/virt-copy-out.pod:39 ../fish/virt-tar-in.pod:47
-#: ../fish/virt-tar-out.pod:41 ../fuse/guestmount.pod:317
-#: ../inspector/virt-inspector.pod:395 ../java/examples/guestfs-java.pod:45
-#: ../ocaml/examples/guestfs-ocaml.pod:78 ../perl/examples/guestfs-perl.pod:39
+#: ../examples/guestfs-testing.pod:291 ../fish/guestfish.pod:1268
+#: ../fish/virt-copy-in.pod:50 ../fish/virt-copy-out.pod:39
+#: ../fish/virt-tar-in.pod:47 ../fish/virt-tar-out.pod:41
+#: ../fuse/guestmount.pod:317 ../inspector/virt-inspector.pod:395
+#: ../java/examples/guestfs-java.pod:45 ../ocaml/examples/guestfs-ocaml.pod:78
+#: ../perl/examples/guestfs-perl.pod:39
 #: ../python/examples/guestfs-python.pod:42 ../rescue/virt-rescue.pod:288
 #: ../resize/virt-resize.pod:688 ../ruby/examples/guestfs-ruby.pod:36
-#: ../sparsify/virt-sparsify.pod:251 ../src/guestfs.pod:3270
+#: ../sparsify/virt-sparsify.pod:250 ../src/guestfs.pod:3270
 #: ../test-tool/libguestfs-test-tool.pod:100
 #: ../tools/virt-list-filesystems.pl:195 ../tools/virt-list-partitions.pl:265
 #: ../tools/virt-make-fs.pl:557 ../tools/virt-tar.pl:296
@@ -1057,9 +1061,9 @@ msgstr ""
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:361 ../cat/virt-cat.pod:252
 #: ../cat/virt-filesystems.pod:396 ../cat/virt-ls.pod:507
-#: ../clone/virt-sysprep.pod:501 ../df/virt-df.pod:235
+#: ../clone/virt-sysprep.pod:501 ../df/virt-df.pod:261
 #: ../edit/virt-edit.pod:368 ../rescue/virt-rescue.pod:296
-#: ../resize/virt-resize.pod:711 ../sparsify/virt-sparsify.pod:264
+#: ../resize/virt-resize.pod:711 ../sparsify/virt-sparsify.pod:263
 #: ../tools/virt-list-filesystems.pl:208 ../tools/virt-list-partitions.pl:277
 #: ../tools/virt-make-fs.pl:582 ../tools/virt-tar.pl:311
 #: ../tools/virt-win-reg.pl:783
@@ -1069,10 +1073,10 @@ msgstr ""
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:363 ../cat/virt-cat.pod:254
 #: ../cat/virt-filesystems.pod:398 ../cat/virt-ls.pod:509
-#: ../clone/virt-sysprep.pod:503 ../df/virt-df.pod:237
+#: ../clone/virt-sysprep.pod:503 ../df/virt-df.pod:263
 #: ../edit/virt-edit.pod:370 ../inspector/virt-inspector.pod:410
 #: ../rescue/virt-rescue.pod:298 ../resize/virt-resize.pod:713
-#: ../sparsify/virt-sparsify.pod:266 ../tools/virt-list-filesystems.pl:210
+#: ../sparsify/virt-sparsify.pod:265 ../tools/virt-list-filesystems.pl:210
 #: ../tools/virt-list-partitions.pl:279 ../tools/virt-make-fs.pl:584
 #: ../tools/virt-tar.pl:313 ../tools/virt-win-reg.pl:785
 msgid "Richard W.M. Jones L<http://people.redhat.com/~rjones/>"
@@ -1081,17 +1085,18 @@ msgstr ""
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:365 ../cat/virt-cat.pod:256
 #: ../cat/virt-filesystems.pod:400 ../cat/virt-ls.pod:511
-#: ../clone/virt-sysprep.pod:505 ../df/virt-df.pod:239
+#: ../clone/virt-sysprep.pod:505 ../df/virt-df.pod:265
 #: ../edit/virt-edit.pod:372 ../erlang/examples/guestfs-erlang.pod:114
 #: ../examples/guestfs-examples.pod:49 ../examples/guestfs-recipes.pod:401
-#: ../fish/guestfish.pod:1300 ../fish/virt-copy-in.pod:64
-#: ../fish/virt-copy-out.pod:53 ../fish/virt-tar-in.pod:62
-#: ../fish/virt-tar-out.pod:55 ../fuse/guestmount.pod:332
-#: ../inspector/virt-inspector.pod:418 ../java/examples/guestfs-java.pod:62
-#: ../ocaml/examples/guestfs-ocaml.pod:95 ../perl/examples/guestfs-perl.pod:56
+#: ../examples/guestfs-testing.pod:302 ../fish/guestfish.pod:1300
+#: ../fish/virt-copy-in.pod:64 ../fish/virt-copy-out.pod:53
+#: ../fish/virt-tar-in.pod:62 ../fish/virt-tar-out.pod:55
+#: ../fuse/guestmount.pod:332 ../inspector/virt-inspector.pod:418
+#: ../java/examples/guestfs-java.pod:62 ../ocaml/examples/guestfs-ocaml.pod:95
+#: ../perl/examples/guestfs-perl.pod:56
 #: ../python/examples/guestfs-python.pod:58 ../rescue/virt-rescue.pod:300
 #: ../resize/virt-resize.pod:715 ../ruby/examples/guestfs-ruby.pod:52
-#: ../sparsify/virt-sparsify.pod:268 ../src/guestfs.pod:3352
+#: ../sparsify/virt-sparsify.pod:267 ../src/guestfs.pod:3353
 #: ../test-tool/libguestfs-test-tool.pod:110
 #: ../tools/virt-list-filesystems.pl:212 ../tools/virt-list-partitions.pl:281
 #: ../tools/virt-make-fs.pl:586 ../tools/virt-tar.pl:315
@@ -1101,20 +1106,20 @@ msgstr ""
 
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:367 ../clone/virt-sysprep.pod:507
-#: ../sparsify/virt-sparsify.pod:270
+#: ../sparsify/virt-sparsify.pod:269
 msgid "Copyright (C) 2011 Red Hat Inc."
 msgstr ""
 
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:369 ../cat/virt-cat.pod:260
 #: ../cat/virt-filesystems.pod:404 ../cat/virt-ls.pod:515
-#: ../clone/virt-sysprep.pod:509 ../df/virt-df.pod:243
+#: ../clone/virt-sysprep.pod:509 ../df/virt-df.pod:269
 #: ../edit/virt-edit.pod:376 ../fish/guestfish.pod:1305
 #: ../fish/virt-copy-in.pod:69 ../fish/virt-copy-out.pod:58
 #: ../fish/virt-tar-in.pod:67 ../fish/virt-tar-out.pod:60
 #: ../fuse/guestmount.pod:337 ../inspector/virt-inspector.pod:422
 #: ../rescue/virt-rescue.pod:304 ../resize/virt-resize.pod:719
-#: ../sparsify/virt-sparsify.pod:272 ../test-tool/libguestfs-test-tool.pod:115
+#: ../sparsify/virt-sparsify.pod:271 ../test-tool/libguestfs-test-tool.pod:115
 #: ../tools/virt-list-filesystems.pl:216 ../tools/virt-list-partitions.pl:285
 #: ../tools/virt-make-fs.pl:590 ../tools/virt-tar.pl:319
 #: ../tools/virt-win-reg.pl:791
@@ -1128,13 +1133,13 @@ msgstr ""
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:374 ../cat/virt-cat.pod:265
 #: ../cat/virt-filesystems.pod:409 ../cat/virt-ls.pod:520
-#: ../clone/virt-sysprep.pod:514 ../df/virt-df.pod:248
+#: ../clone/virt-sysprep.pod:514 ../df/virt-df.pod:274
 #: ../edit/virt-edit.pod:381 ../fish/guestfish.pod:1310
 #: ../fish/virt-copy-in.pod:74 ../fish/virt-copy-out.pod:63
 #: ../fish/virt-tar-in.pod:72 ../fish/virt-tar-out.pod:65
 #: ../fuse/guestmount.pod:342 ../inspector/virt-inspector.pod:427
 #: ../rescue/virt-rescue.pod:309 ../resize/virt-resize.pod:724
-#: ../sparsify/virt-sparsify.pod:277 ../test-tool/libguestfs-test-tool.pod:120
+#: ../sparsify/virt-sparsify.pod:276 ../test-tool/libguestfs-test-tool.pod:120
 #: ../tools/virt-list-filesystems.pl:221 ../tools/virt-list-partitions.pl:290
 #: ../tools/virt-make-fs.pl:595 ../tools/virt-tar.pl:324
 #: ../tools/virt-win-reg.pl:796
@@ -1148,13 +1153,13 @@ msgstr ""
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:379 ../cat/virt-cat.pod:270
 #: ../cat/virt-filesystems.pod:414 ../cat/virt-ls.pod:525
-#: ../clone/virt-sysprep.pod:519 ../df/virt-df.pod:253
+#: ../clone/virt-sysprep.pod:519 ../df/virt-df.pod:279
 #: ../edit/virt-edit.pod:386 ../fish/guestfish.pod:1315
 #: ../fish/virt-copy-in.pod:79 ../fish/virt-copy-out.pod:68
 #: ../fish/virt-tar-in.pod:77 ../fish/virt-tar-out.pod:70
 #: ../fuse/guestmount.pod:347 ../inspector/virt-inspector.pod:432
 #: ../rescue/virt-rescue.pod:314 ../resize/virt-resize.pod:729
-#: ../sparsify/virt-sparsify.pod:282 ../test-tool/libguestfs-test-tool.pod:125
+#: ../sparsify/virt-sparsify.pod:281 ../test-tool/libguestfs-test-tool.pod:125
 #: ../tools/virt-list-filesystems.pl:226 ../tools/virt-list-partitions.pl:295
 #: ../tools/virt-make-fs.pl:600 ../tools/virt-tar.pl:329
 #: ../tools/virt-win-reg.pl:801
@@ -1539,9 +1544,9 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-cat.pod:240 ../cat/virt-filesystems.pod:382
-#: ../cat/virt-ls.pod:492 ../df/virt-df.pod:224 ../edit/virt-edit.pod:351
+#: ../cat/virt-ls.pod:492 ../df/virt-df.pod:250 ../edit/virt-edit.pod:351
 #: ../fuse/guestmount.pod:314 ../inspector/virt-inspector.pod:392
-#: ../resize/virt-resize.pod:685 ../sparsify/virt-sparsify.pod:229
+#: ../resize/virt-resize.pod:685 ../sparsify/virt-sparsify.pod:228
 msgid ""
 "This program returns 0 if successful, or non-zero if there was an error."
 msgstr ""
@@ -2152,13 +2157,13 @@ msgstr ""
 
 #. type: =head1
 #: ../cat/virt-filesystems.pod:349 ../cat/virt-ls.pod:459
-#: ../df/virt-df.pod:191
+#: ../df/virt-df.pod:217
 msgid "NOTE ABOUT CSV FORMAT"
 msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:351 ../cat/virt-ls.pod:461
-#: ../df/virt-df.pod:193
+#: ../df/virt-df.pod:219
 msgid ""
 "Comma-separated values (CSV) is a deceptive format.  It I<seems> like it "
 "should be easy to parse, but it is definitely not easy to parse."
@@ -2166,7 +2171,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:354 ../cat/virt-ls.pod:464
-#: ../df/virt-df.pod:196
+#: ../df/virt-df.pod:222
 msgid ""
 "Myth: Just split fields at commas.  Reality: This does I<not> work "
 "reliably.  This example has two columns:"
@@ -2174,7 +2179,7 @@ msgstr ""
 
 #. type: verbatim
 #: ../cat/virt-filesystems.pod:357 ../cat/virt-ls.pod:467
-#: ../df/virt-df.pod:199
+#: ../df/virt-df.pod:225
 #, no-wrap
 msgid ""
 " \"foo,bar\",baz\n"
@@ -2183,7 +2188,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:359 ../cat/virt-ls.pod:469
-#: ../df/virt-df.pod:201
+#: ../df/virt-df.pod:227
 msgid ""
 "Myth: Read the file one line at a time.  Reality: This does I<not> work "
 "reliably.  This example has one row:"
@@ -2191,7 +2196,7 @@ msgstr ""
 
 #. type: verbatim
 #: ../cat/virt-filesystems.pod:362 ../cat/virt-ls.pod:472
-#: ../df/virt-df.pod:204
+#: ../df/virt-df.pod:230
 #, no-wrap
 msgid ""
 " \"foo\n"
@@ -2201,7 +2206,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:365 ../cat/virt-ls.pod:475
-#: ../df/virt-df.pod:207
+#: ../df/virt-df.pod:233
 msgid ""
 "For shell scripts, use C<csvtool> (L<http://merjis.com/developers/csv> also "
 "packaged in major Linux distributions)."
@@ -2209,7 +2214,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:368 ../cat/virt-ls.pod:478
-#: ../df/virt-df.pod:210
+#: ../df/virt-df.pod:236
 msgid ""
 "For other languages, use a CSV processing library (eg. C<Text::CSV> for Perl "
 "or Python's built-in csv library)."
@@ -2217,7 +2222,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:371 ../cat/virt-ls.pod:481
-#: ../df/virt-df.pod:213
+#: ../df/virt-df.pod:239
 msgid "Most spreadsheets and databases can import CSV directly."
 msgstr ""
 
@@ -2319,7 +2324,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:41
+#: ../cat/virt-ls.pod:41 ../examples/guestfs-testing.pod:182
 msgid "List all setuid or setgid programs in a Linux virtual machine:"
 msgstr ""
 
@@ -2332,7 +2337,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:45
+#: ../cat/virt-ls.pod:45 ../examples/guestfs-testing.pod:186
 msgid "List all public-writable directories in a Linux virtual machine:"
 msgstr ""
 
@@ -2345,7 +2350,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:49
+#: ../cat/virt-ls.pod:49 ../examples/guestfs-testing.pod:190
 msgid "List all Unix domain sockets in a Linux virtual machine:"
 msgstr ""
 
@@ -2358,7 +2363,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:53
+#: ../cat/virt-ls.pod:53 ../examples/guestfs-testing.pod:194
 msgid "List all regular files with filenames ending in '.png':"
 msgstr ""
 
@@ -2384,7 +2389,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:61
+#: ../cat/virt-ls.pod:61 ../examples/guestfs-testing.pod:202
 msgid "Find everything modified in the last 7 days:"
 msgstr ""
 
@@ -2397,7 +2402,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:65
+#: ../cat/virt-ls.pod:65 ../examples/guestfs-testing.pod:206
 msgid "Find regular files modified in the last 24 hours:"
 msgstr ""
 
@@ -2983,7 +2988,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:513 ../df/virt-df.pod:241 ../edit/virt-edit.pod:374
+#: ../cat/virt-ls.pod:513 ../df/virt-df.pod:267 ../edit/virt-edit.pod:374
 #: ../rescue/virt-rescue.pod:302
 msgid "Copyright (C) 2009-2011 Red Hat Inc."
 msgstr ""
@@ -3993,8 +3998,57 @@ msgid ""
 "specified."
 msgstr ""
 
+#. type: =head1
+#: ../df/virt-df.pod:191
+msgid "STATVFS NUMBERS"
+msgstr ""
+
+#. type: textblock
+#: ../df/virt-df.pod:193
+msgid ""
+"C<virt-df> (and L<df(1)>) get information by issuing a L<statvfs(3)> system "
+"call.  You can get the same information directly, either from the host "
+"(using libguestfs) or inside the guest:"
+msgstr ""
+
+#. type: =item
+#: ../df/virt-df.pod:199
+msgid "From the host"
+msgstr ""
+
 #. type: textblock
-#: ../df/virt-df.pod:229
+#: ../df/virt-df.pod:201 ../df/virt-df.pod:209
+msgid "Run this command:"
+msgstr ""
+
+#. type: verbatim
+#: ../df/virt-df.pod:203
+#, no-wrap
+msgid ""
+" guestfish --ro -d GuestName -i statvfs /\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../df/virt-df.pod:205 ../df/virt-df.pod:213
+msgid "(change C</> to see stats for other filesystems)."
+msgstr ""
+
+#. type: =item
+#: ../df/virt-df.pod:207
+msgid "From inside the guest"
+msgstr ""
+
+#. type: verbatim
+#: ../df/virt-df.pod:211
+#, no-wrap
+msgid ""
+" python -c 'import os; s = os.statvfs (\"/\"); print s'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../df/virt-df.pod:255
 msgid ""
 "L<df(1)>, L<guestfs(3)>, L<guestfish(1)>, L<virt-filesystems(1)>, L<http://"
 "libguestfs.org/>."
@@ -4516,7 +4570,7 @@ msgstr ""
 
 #. type: =head1
 #: ../edit/virt-edit.pod:329 ../fish/guestfish.pod:1119
-#: ../rescue/virt-rescue.pod:261 ../sparsify/virt-sparsify.pod:232
+#: ../rescue/virt-rescue.pod:261 ../sparsify/virt-sparsify.pod:231
 #: ../src/guestfs.pod:3209 ../test-tool/libguestfs-test-tool.pod:95
 msgid "ENVIRONMENT VARIABLES"
 msgstr ""
@@ -4777,13 +4831,14 @@ msgstr ""
 #. type: =head1
 #: ../erlang/examples/guestfs-erlang.pod:110
 #: ../examples/guestfs-examples.pod:45 ../examples/guestfs-recipes.pod:397
-#: ../fish/guestfish.pod:1296 ../fish/virt-copy-in.pod:60
-#: ../fish/virt-copy-out.pod:49 ../fish/virt-tar-in.pod:58
-#: ../fish/virt-tar-out.pod:51 ../fuse/guestmount.pod:328
-#: ../inspector/virt-inspector.pod:404 ../java/examples/guestfs-java.pod:58
-#: ../ocaml/examples/guestfs-ocaml.pod:91 ../perl/examples/guestfs-perl.pod:52
+#: ../examples/guestfs-testing.pod:298 ../fish/guestfish.pod:1296
+#: ../fish/virt-copy-in.pod:60 ../fish/virt-copy-out.pod:49
+#: ../fish/virt-tar-in.pod:58 ../fish/virt-tar-out.pod:51
+#: ../fuse/guestmount.pod:328 ../inspector/virt-inspector.pod:404
+#: ../java/examples/guestfs-java.pod:58 ../ocaml/examples/guestfs-ocaml.pod:91
+#: ../perl/examples/guestfs-perl.pod:52
 #: ../python/examples/guestfs-python.pod:54
-#: ../ruby/examples/guestfs-ruby.pod:48 ../src/guestfs.pod:3348
+#: ../ruby/examples/guestfs-ruby.pod:48 ../src/guestfs.pod:3349
 #: ../test-tool/libguestfs-test-tool.pod:106
 msgid "AUTHORS"
 msgstr ""
@@ -4791,20 +4846,21 @@ msgstr ""
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:112
 #: ../examples/guestfs-examples.pod:47 ../examples/guestfs-recipes.pod:399
-#: ../fish/guestfish.pod:1298 ../fish/virt-copy-in.pod:62
-#: ../fish/virt-copy-out.pod:51 ../fish/virt-tar-in.pod:60
-#: ../fish/virt-tar-out.pod:53 ../fuse/guestmount.pod:330
-#: ../java/examples/guestfs-java.pod:60 ../ocaml/examples/guestfs-ocaml.pod:93
-#: ../perl/examples/guestfs-perl.pod:54
+#: ../examples/guestfs-testing.pod:300 ../fish/guestfish.pod:1298
+#: ../fish/virt-copy-in.pod:62 ../fish/virt-copy-out.pod:51
+#: ../fish/virt-tar-in.pod:60 ../fish/virt-tar-out.pod:53
+#: ../fuse/guestmount.pod:330 ../java/examples/guestfs-java.pod:60
+#: ../ocaml/examples/guestfs-ocaml.pod:93 ../perl/examples/guestfs-perl.pod:54
 #: ../python/examples/guestfs-python.pod:56
-#: ../ruby/examples/guestfs-ruby.pod:50 ../src/guestfs.pod:3350
+#: ../ruby/examples/guestfs-ruby.pod:50 ../src/guestfs.pod:3351
 #: ../test-tool/libguestfs-test-tool.pod:108
 msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
 msgstr ""
 
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:116
-#: ../java/examples/guestfs-java.pod:64 ../perl/examples/guestfs-perl.pod:58
+#: ../examples/guestfs-testing.pod:304 ../java/examples/guestfs-java.pod:64
+#: ../perl/examples/guestfs-perl.pod:58
 msgid "Copyright (C) 2011 Red Hat Inc. L<http://libguestfs.org/>"
 msgstr ""
 
@@ -4823,11 +4879,11 @@ msgstr ""
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:121
 #: ../examples/guestfs-examples.pod:56 ../examples/guestfs-recipes.pod:408
-#: ../java/examples/guestfs-java.pod:69
+#: ../examples/guestfs-testing.pod:306 ../java/examples/guestfs-java.pod:69
 #: ../ocaml/examples/guestfs-ocaml.pod:102
 #: ../perl/examples/guestfs-perl.pod:63
 #: ../python/examples/guestfs-python.pod:65
-#: ../ruby/examples/guestfs-ruby.pod:59 ../src/guestfs.pod:3357
+#: ../ruby/examples/guestfs-ruby.pod:59 ../src/guestfs.pod:3358
 msgid ""
 "This library is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -4838,11 +4894,11 @@ msgstr ""
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:126
 #: ../examples/guestfs-examples.pod:61 ../examples/guestfs-recipes.pod:413
-#: ../java/examples/guestfs-java.pod:74
+#: ../examples/guestfs-testing.pod:311 ../java/examples/guestfs-java.pod:74
 #: ../ocaml/examples/guestfs-ocaml.pod:107
 #: ../perl/examples/guestfs-perl.pod:68
 #: ../python/examples/guestfs-python.pod:70
-#: ../ruby/examples/guestfs-ruby.pod:64 ../src/guestfs.pod:3362
+#: ../ruby/examples/guestfs-ruby.pod:64 ../src/guestfs.pod:3363
 msgid ""
 "This library is distributed in the hope that it will be useful, but WITHOUT "
 "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
@@ -4853,11 +4909,11 @@ msgstr ""
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:131
 #: ../examples/guestfs-examples.pod:66 ../examples/guestfs-recipes.pod:418
-#: ../java/examples/guestfs-java.pod:79
+#: ../examples/guestfs-testing.pod:316 ../java/examples/guestfs-java.pod:79
 #: ../ocaml/examples/guestfs-ocaml.pod:112
 #: ../perl/examples/guestfs-perl.pod:73
 #: ../python/examples/guestfs-python.pod:75
-#: ../ruby/examples/guestfs-ruby.pod:69 ../src/guestfs.pod:3367
+#: ../ruby/examples/guestfs-ruby.pod:69 ../src/guestfs.pod:3368
 msgid ""
 "You should have received a copy of the GNU Lesser General Public License "
 "along with this library; if not, write to the Free Software Foundation, "
@@ -5197,7 +5253,7 @@ msgid ""
 msgstr ""
 
 #. type: verbatim
-#: ../examples/guestfs-recipes.pod:126
+#: ../examples/guestfs-recipes.pod:126 ../examples/guestfs-testing.pod:93
 #, no-wrap
 msgid ""
 " virt-copy-out -d Guest /home .\n"
@@ -5763,6 +5819,710 @@ msgstr ""
 msgid "Copyright (C) 2009-2011 Red Hat Inc. L<http://libguestfs.org/>"
 msgstr ""
 
+#. type: textblock
+#: ../examples/guestfs-testing.pod:5
+msgid "guestfs-testing - manual testing of libguestfs, you can help!"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:9
+msgid ""
+"This page has manual tests you can try on libguestfs.  Everyone has a "
+"slightly different combination of platform, hardware and guests, so this "
+"testing is very valuable.  Thanks for helping out!"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:13
+msgid "These tests require libguestfs E<ge> 1.14."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:15
+msgid ""
+"Tests marked with a B<*> (asterisk) can B<destroy data> if you're not "
+"careful.  The others are safe and won't modify anything."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:18
+msgid "You can report bugs you find through this link:"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:20
+msgid ""
+"https://bugzilla.redhat.com/enter_bug.cgi?"
+"component=libguestfs&product=Virtualization+Tools"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:22
+msgid ""
+"or post on the mailing list (registration is B<not> required, but if you're "
+"not registered then you'll have to wait for a moderator to manually approve "
+"your message):"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:26
+msgid "https://www.redhat.com/mailman/listinfo/libguestfs"
+msgstr ""
+
+#. type: =head1
+#: ../examples/guestfs-testing.pod:28
+msgid "TESTS"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:30
+msgid "Check KVM acceleration is being used."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:32
+msgid ""
+"If your host has hardware virt acceleration, then with a hot cache "
+"libguestfs should be able to start up in a few seconds.  Run the following "
+"command a few times:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:36
+#, no-wrap
+msgid ""
+" time guestfish -a /dev/null run\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:38
+msgid ""
+"After a few runs, the time should settle down to a few seconds (under 5 "
+"seconds on fast 64 bit hardware)."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:41
+msgid "How to check for hardware virt:"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:43
+msgid "http://virt-tools.org/learning/check-hardware-virt/"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:45
+msgid ""
+"If the command above does not work at all, use L<libguestfs-test-tool(1)>."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:48
+msgid "Run virt-alignment-scan on all your guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:50
+msgid "Run L<virt-alignment-scan(1)> on guests or disk images:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:52
+#, no-wrap
+msgid ""
+" virt-alignment-scan -a /path/to/disk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:54 ../examples/guestfs-testing.pod:161
+#: ../examples/guestfs-testing.pod:174 ../examples/guestfs-testing.pod:234
+#: ../src/guestfs.pod:2792
+msgid "or:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:56
+#, no-wrap
+msgid ""
+" virt-alignment-scan -d Guest\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:58
+msgid "Does the alignment report match how the guest partitions are aligned?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:60
+msgid "Run virt-cat on some files in guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:62
+msgid "L<virt-cat(1)> can display files from guests.  For a Linux guest, try:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:64
+#, no-wrap
+msgid ""
+" virt-cat LinuxGuest /etc/passwd\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:66
+msgid "A recent feature is support for Windows paths, for example:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:68
+#, no-wrap
+msgid ""
+" virt-cat WindowsGuest 'c:\\windows\\win.ini'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:70
+msgid ""
+"An even better test is if you have a Windows guest with multiple drives.  Do "
+"C<D:>, C<E:> etc paths work correctly?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:73
+msgid "B<*> Copy some files into a B<shut off> guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:75
+msgid ""
+"L<virt-copy-in(1)> can recursively copy files and directories into a guest "
+"or disk image."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:78
+#, no-wrap
+msgid ""
+" virt-copy-in -d Guest /etc /tmp\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:80
+msgid ""
+"This should copy local directory C</etc> to C</tmp/etc> in the guest "
+"(recursively).  If you boot the guest, can you see all of the copied files "
+"and directories?"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:84
+msgid "Shut the guest down and try copying multiple files and directories:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:86
+#, no-wrap
+msgid ""
+" virt-copy-in -d Guest /home /etc/issue /tmp\n"
+"\n"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:88
+msgid "Copy some files out of a guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:90
+msgid ""
+"L<virt-copy-out(1)> can recursively copy files and directories out of a "
+"guest or disk image."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:95
+msgid "Note the final space and period in the command is not a typo."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:97
+msgid "This should copy C</home> from the guest into the current directory."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:99
+msgid "Run virt-df."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:101
+msgid "L<virt-df(1)> lists disk space.  Run:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:103
+#, no-wrap
+msgid ""
+" virt-df\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:105
+msgid ""
+"You can try comparing this to the results from L<df(1)> inside the guest, "
+"but there are some provisos:"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:112
+msgid "The guest must be idle."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:116
+msgid "The guest disks must be synched using L<sync(1)>."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:120
+msgid ""
+"Any action such as booting the guest will write log files causing the "
+"numbers to change."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:125
+msgid ""
+"We don't guarantee that the numbers will be identical even under these "
+"circumstances.  They should be similar.  It would indicate a bug if you saw "
+"greatly differing numbers."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:129
+msgid "Try importing virt-df CSV output into a spreadsheet or database."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:131 ../src/guestfs.pod:3083
+msgid "Run:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:133
+#, no-wrap
+msgid ""
+" virt-df --csv > /tmp/report.csv\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:135
+msgid ""
+"Now try to load this into your favorite spreadsheet or database.  Are the "
+"results reproduced faithfully in the spreadsheet/database?"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:138
+msgid ""
+"http://www.postgresql.org/docs/8.1/static/sql-copy.html http://dev.mysql.com/"
+"doc/refman/5.1/en/load-data.html"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:141
+msgid "B<*> Edit a file in a B<shut off> guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:143
+msgid ""
+"L<virt-edit(1)> can edit files in guests.  Try this command on a RHEL or "
+"Fedora guest:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:146
+#, no-wrap
+msgid ""
+" virt-edit LinuxGuest /etc/sysconfig/network\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:148
+msgid "On other Linux guests try editing other files such as:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:150
+#, no-wrap
+msgid ""
+" virt-edit LinuxGuest /etc/motd\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:152
+msgid "Are the changes seen inside the guest when it is booted?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:154
+msgid "Display the filesystems / partitions / LVs in a guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:156
+msgid ""
+"L<virt-filesystems(1)> can be used to display filesystems in a guest.  Try "
+"this command on any disk image or guest:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:159
+#, no-wrap
+msgid ""
+" virt-filesystems -a /path/to/disk.img --all --long -h\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:163
+#, no-wrap
+msgid ""
+" virt-filesystems -d Guest --all --long -h\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:165
+msgid "Do the results match what is seen in the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:167
+msgid "Run virt-inspector on all your guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:169
+msgid ""
+"Use L<virt-inspector(1)> to get a report on all of your guests or disk "
+"images:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:172
+#, no-wrap
+msgid ""
+" virt-inspector -a /path/to/disk.img | less\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:176
+#, no-wrap
+msgid ""
+" virt-inspector -d Guest | less\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:178
+msgid "Do the results match what is actually in the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:180
+msgid "Try the auditing features of virt-ls on all your guests."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:184
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest / | grep '^- [42]'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:188
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest / | grep '^d ...7'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:192
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest / | grep '^s'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:196
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest / | grep -i '^-.*\\.png$'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:198
+msgid "Display files larger than 10MB in home directories:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:200
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest /home | awk '$3 > 10*1024*1024'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:204
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest --time-days / | awk '$6 <= 7'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:208
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest --time-days / | grep '^-' | awk '$6 < 1'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:210
+msgid "Do the results match what is in the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:212
+msgid "Create a disk image from a tarball."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:214
+msgid ""
+"Use L<virt-make-fs(1)> to create a disk image from any tarball that you "
+"happen to have:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:217
+#, no-wrap
+msgid ""
+" virt-make-fs --partition=mbr --type=vfat /any/tarball.tar.gz output.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:219
+msgid ""
+"Add 'output.img' as a raw disk to an existing guest.  Check the guest can "
+"see the files.  This test is particularly useful if you try it with a "
+"Windows guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:223
+msgid "Try other partitioning schemes, eg. I<--partition=gpt>."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:225
+msgid "Try other filesystem formats, eg. I<--type=ntfs>, I<--type=ext2>."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:227
+msgid "B<*> Run virt-rescue on a B<shut off> disk image or guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:229
+msgid ""
+"Use L<virt-rescue(1)> to examine, rescue or repair a B<shut off> guest or "
+"disk image:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:232
+#, no-wrap
+msgid ""
+" virt-rescue -a /path/to/disk.img\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:236
+#, no-wrap
+msgid ""
+" virt-rescue -d Guest\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:238
+msgid "Can you use ordinary shell commands to examine the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:240
+msgid "B<*> Resize your guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:242
+msgid ""
+"Use L<virt-resize(1)> to give a guest some more disk space.  For example, if "
+"you have a disk image that is smaller than 30G, increase it to 30G by doing:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:246
+#, no-wrap
+msgid ""
+" truncate -s 30G newdisk.img\n"
+" virt-filesystems -a /path/to/olddisk.img --all --long -h\n"
+" virt-resize /path/to/olddisk.img newdisk.img --expand /dev/sda1\n"
+" qemu-kvm -m 1024 -hda newdisk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:251
+msgid "Does the guest still boot? Try expanding other partitions."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:253
+msgid "B<*> Sparsify a guest disk."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:255
+msgid "Using L<virt-sparsify(1)>, make a disk image more sparse:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:257
+#, no-wrap
+msgid ""
+" virt-sparsify /path/to/olddisk.img newdisk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:259
+msgid ""
+"Is C<newdisk.img> still bootable after sparsifying? Is the resulting disk "
+"image smaller (use C<du> to check)?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:262
+msgid "B<*> \"sysprep\" a B<shut off> Linux guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:264
+msgid ""
+"Note that this really will mess up an existing guest, so it's better to "
+"clone the guest before trying this."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:267
+#, no-wrap
+msgid ""
+" virt-sysprep --hostname newhost.example.com -a /path/to/disk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:269
+msgid ""
+"Was the sysprep successful? After booting, what changes were made and were "
+"they successful?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:272
+msgid "Dump the Windows Registry from your Windows guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:274
+msgid ""
+"Use L<virt-win-reg(1)> to dump out the Windows Registry from any Windows "
+"guests that you have."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:277
+#, no-wrap
+msgid ""
+" virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\\Software' |\n"
+"   less\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:280
+#, no-wrap
+msgid ""
+" virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\\System' |\n"
+"   less\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:283
+msgid "Does the output match running C<regedit> inside the guest?"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:285
+msgid ""
+"A recent feature is the ability to dump user registries, so try this, "
+"replacing I<username> with the name of a local user in the guest:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:288
+#, no-wrap
+msgid ""
+" virt-win-reg --unsafe-printable-strings WindowsGuest 'HKEY_USERS\\username' |\n"
+"   less\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:293
+msgid ""
+"L<guestfs(3)>, L<guestfish(1)>, L<guestfs-examples(3)>, L<http://libguestfs."
+"org/>."
+msgstr ""
+
 #. type: =head2
 #: ../fish/guestfish-actions.pod:1
 msgid "add-cdrom"
@@ -20682,7 +21442,7 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../fish/guestfish.pod:1196 ../sparsify/virt-sparsify.pod:236
+#: ../fish/guestfish.pod:1196 ../sparsify/virt-sparsify.pod:235
 #: ../src/guestfs.pod:3257
 msgid "TMPDIR"
 msgstr ""
@@ -20843,7 +21603,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../fish/guestfish.pod:1302 ../src/guestfs.pod:3354
+#: ../fish/guestfish.pod:1302 ../src/guestfs.pod:3355
 #: ../test-tool/libguestfs-test-tool.pod:112
 msgid "Copyright (C) 2009-2011 Red Hat Inc.  L<http://libguestfs.org/>"
 msgstr ""
@@ -21739,7 +22499,7 @@ msgstr ""
 
 #. type: textblock
 #: ../inspector/virt-inspector.pod:111 ../resize/virt-resize.pod:391
-#: ../resize/virt-resize.pod:483 ../sparsify/virt-sparsify.pod:132
+#: ../resize/virt-resize.pod:483 ../sparsify/virt-sparsify.pod:131
 #: ../tools/virt-list-filesystems.pl:101 ../tools/virt-list-partitions.pl:102
 #: ../tools/virt-tar.pl:151 ../tools/virt-win-reg.pl:152
 msgid ""
@@ -22925,7 +23685,7 @@ msgstr ""
 
 #. type: =item
 #: ../resize/virt-resize.pod:31 ../resize/virt-resize.pod:597
-#: ../sparsify/virt-sparsify.pod:203 ../src/guestfs.pod:484
+#: ../sparsify/virt-sparsify.pod:202 ../src/guestfs.pod:484
 #: ../src/guestfs.pod:1302 ../src/guestfs.pod:1441 ../src/guestfs.pod:2690
 msgid "1."
 msgstr ""
@@ -22965,7 +23725,7 @@ msgstr ""
 
 #. type: =item
 #: ../resize/virt-resize.pod:44 ../resize/virt-resize.pod:604
-#: ../sparsify/virt-sparsify.pod:210 ../src/guestfs.pod:490
+#: ../sparsify/virt-sparsify.pod:209 ../src/guestfs.pod:490
 #: ../src/guestfs.pod:1306 ../src/guestfs.pod:1445 ../src/guestfs.pod:2715
 msgid "2."
 msgstr ""
@@ -22988,7 +23748,7 @@ msgstr ""
 
 #. type: =item
 #: ../resize/virt-resize.pod:52 ../resize/virt-resize.pod:610
-#: ../sparsify/virt-sparsify.pod:216 ../src/guestfs.pod:501
+#: ../sparsify/virt-sparsify.pod:215 ../src/guestfs.pod:501
 #: ../src/guestfs.pod:1451
 msgid "3."
 msgstr ""
@@ -23617,7 +24377,7 @@ msgstr ""
 
 #. type: textblock
 #: ../resize/virt-resize.pod:343 ../resize/virt-resize.pod:404
-#: ../resize/virt-resize.pod:531 ../sparsify/virt-sparsify.pod:145
+#: ../resize/virt-resize.pod:531 ../sparsify/virt-sparsify.pod:144
 msgid "You can give this option multiple times."
 msgstr ""
 
@@ -23685,14 +24445,14 @@ msgid "Note that you cannot use I<--expand> and I<--shrink> together."
 msgstr ""
 
 #. type: =item
-#: ../resize/virt-resize.pod:386 ../sparsify/virt-sparsify.pod:125
+#: ../resize/virt-resize.pod:386 ../sparsify/virt-sparsify.pod:124
 #: ../tools/virt-list-filesystems.pl:91 ../tools/virt-list-partitions.pl:92
 #: ../tools/virt-tar.pl:141 ../tools/virt-win-reg.pl:142
 msgid "B<--format> raw"
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:388 ../sparsify/virt-sparsify.pod:129
+#: ../resize/virt-resize.pod:388 ../sparsify/virt-sparsify.pod:128
 msgid ""
 "Specify the format of the input disk image.  If this flag is not given then "
 "it is auto-detected from the image itself."
@@ -23771,12 +24531,12 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../resize/virt-resize.pod:429 ../sparsify/virt-sparsify.pod:147
+#: ../resize/virt-resize.pod:429 ../sparsify/virt-sparsify.pod:146
 msgid "B<--machine-readable>"
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:431 ../sparsify/virt-sparsify.pod:149
+#: ../resize/virt-resize.pod:431 ../sparsify/virt-sparsify.pod:148
 msgid ""
 "This option is used to make the output more machine friendly when being "
 "parsed by other programs.  See L</MACHINE READABLE OUTPUT> below."
@@ -24033,7 +24793,7 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../resize/virt-resize.pod:569 ../sparsify/virt-sparsify.pod:177
+#: ../resize/virt-resize.pod:569 ../sparsify/virt-sparsify.pod:176
 msgid "MACHINE READABLE OUTPUT"
 msgstr ""
 
@@ -24046,7 +24806,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:575 ../sparsify/virt-sparsify.pod:183
+#: ../resize/virt-resize.pod:575 ../sparsify/virt-sparsify.pod:182
 msgid "There are two ways to use this option."
 msgstr ""
 
@@ -24071,33 +24831,33 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:587 ../sparsify/virt-sparsify.pod:193
+#: ../resize/virt-resize.pod:587 ../sparsify/virt-sparsify.pod:192
 msgid ""
 "A list of features is printed, one per line, and the program exits with "
 "status 0."
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:590 ../sparsify/virt-sparsify.pod:196
+#: ../resize/virt-resize.pod:590 ../sparsify/virt-sparsify.pod:195
 msgid ""
 "Secondly use the option in conjunction with other options to make the "
 "regular program output more machine friendly."
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:593 ../sparsify/virt-sparsify.pod:199
+#: ../resize/virt-resize.pod:593 ../sparsify/virt-sparsify.pod:198
 msgid "At the moment this means:"
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:599 ../sparsify/virt-sparsify.pod:205
+#: ../resize/virt-resize.pod:599 ../sparsify/virt-sparsify.pod:204
 msgid ""
 "Progress bar messages can be parsed from stdout by looking for this regular "
 "expression:"
 msgstr ""
 
 #. type: verbatim
-#: ../resize/virt-resize.pod:602 ../sparsify/virt-sparsify.pod:208
+#: ../resize/virt-resize.pod:602 ../sparsify/virt-sparsify.pod:207
 #, no-wrap
 msgid ""
 " ^[0-9]+/[0-9]+$\n"
@@ -24105,7 +24865,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:606 ../sparsify/virt-sparsify.pod:212
+#: ../resize/virt-resize.pod:606 ../sparsify/virt-sparsify.pod:211
 msgid ""
 "The calling program should treat messages sent to stdout (except for "
 "progress bar messages) as status messages.  They can be logged and/or "
@@ -24463,59 +25223,60 @@ msgstr ""
 
 #. type: textblock
 #: ../sparsify/virt-sparsify.pod:116
-msgid "Supported and known-working output formats are: C<raw>, C<qcow2>."
+msgid ""
+"Supported and known-working output formats are: C<raw>, C<qcow2>, C<vdi>."
 msgstr ""
 
 #. type: textblock
 #: ../sparsify/virt-sparsify.pod:118
 msgid ""
 "You can also use any format supported by the L<qemu-img(1)> program, eg. "
-"C<vdi> or C<vmdk>, but support for other formats is reliant on qemu."
+"C<vmdk>, but support for other formats is reliant on qemu."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:122
+#: ../sparsify/virt-sparsify.pod:121
 msgid ""
 "Specifying the I<--convert> option is usually a good idea, because then virt-"
 "sparsify doesn't need to try to guess the input format."
 msgstr ""
 
 #. type: =item
-#: ../sparsify/virt-sparsify.pod:127
+#: ../sparsify/virt-sparsify.pod:126
 msgid "B<--format> qcow2"
 msgstr ""
 
 #. type: =item
-#: ../sparsify/virt-sparsify.pod:135
+#: ../sparsify/virt-sparsify.pod:134
 msgid "B<--ignore> filesystem"
 msgstr ""
 
 #. type: =item
-#: ../sparsify/virt-sparsify.pod:137
+#: ../sparsify/virt-sparsify.pod:136
 msgid "B<--ignore> volgroup"
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:139
+#: ../sparsify/virt-sparsify.pod:138
 msgid ""
 "Ignore the named filesystem.  Free space on the filesystem will not be "
 "zeroed, but existing blocks of zeroes will still be sparsified."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:142
+#: ../sparsify/virt-sparsify.pod:141
 msgid ""
 "In the second form, this ignores the named volume group.  Use the volume "
 "group name without the C</dev/> prefix, eg. I<--ignore vg_foo>"
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:157
+#: ../sparsify/virt-sparsify.pod:156
 msgid "This disables progress bars and other unnecessary output."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:179
+#: ../sparsify/virt-sparsify.pod:178
 msgid ""
 "The I<--machine-readable> option can be used to make the output more machine "
 "friendly, which is useful when calling virt-sparsify from other programs, "
@@ -24523,14 +25284,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:185
+#: ../sparsify/virt-sparsify.pod:184
 msgid ""
 "Firstly use the option on its own to query the capabilities of the virt-"
 "sparsify binary.  Typical output looks like this:"
 msgstr ""
 
 #. type: verbatim
-#: ../sparsify/virt-sparsify.pod:188
+#: ../sparsify/virt-sparsify.pod:187
 #, no-wrap
 msgid ""
 " $ virt-sparsify --machine-readable\n"
@@ -24541,7 +25302,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:218
+#: ../sparsify/virt-sparsify.pod:217
 msgid ""
 "The calling program should treat messages sent to stderr as error messages.  "
 "In addition, virt-sparsify exits with a non-zero status code if there was a "
@@ -24549,21 +25310,21 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:224
+#: ../sparsify/virt-sparsify.pod:223
 msgid ""
 "All versions of virt-sparsify have supported the I<--machine-readable> "
 "option."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:238
+#: ../sparsify/virt-sparsify.pod:237
 msgid ""
 "Location of the temporary directory used for the potentially large temporary "
 "overlay file."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:241
+#: ../sparsify/virt-sparsify.pod:240
 msgid ""
 "You should ensure there is enough free space in the worst case for a full "
 "copy of the source disk (I<virtual> size), or else set C<$TMPDIR> to point "
@@ -24571,18 +25332,18 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:245
+#: ../sparsify/virt-sparsify.pod:244
 msgid "This defaults to C</tmp>."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:249
+#: ../sparsify/virt-sparsify.pod:248
 msgid ""
 "For other environment variables, see L<guestfs(3)/ENVIRONMENT VARIABLES>."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:253
+#: ../sparsify/virt-sparsify.pod:252
 msgid ""
 "L<virt-filesystems(1)>, L<virt-df(1)>, L<virt-resize(1)>, L<virt-rescue(1)>, "
 "L<guestfs(3)>, L<guestfish(1)>, L<truncate(1)>, L<fallocate(1)>, L<qemu-img"
@@ -39488,11 +40249,6 @@ msgstr ""
 msgid "eg: C<SKIP_TEST_COMMAND_3=1> skips test #3 of L</guestfs_command>."
 msgstr ""
 
-#. type: textblock
-#: ../src/guestfs.pod:2792
-msgid "or:"
-msgstr ""
-
 #. type: verbatim
 #: ../src/guestfs.pod:2794
 #, no-wrap
@@ -40111,11 +40867,6 @@ msgstr ""
 msgid "Push and pull from Transifex."
 msgstr ""
 
-#. type: textblock
-#: ../src/guestfs.pod:3083
-msgid "Run:"
-msgstr ""
-
 #. type: verbatim
 #: ../src/guestfs.pod:3085
 #, no-wrap
@@ -40401,70 +41152,70 @@ msgid ""
 "L<virt-filesystems(1)>, L<virt-inspector(1)>, L<virt-list-filesystems(1)>, "
 "L<virt-list-partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)>, L<virt-rescue"
 "(1)>, L<virt-resize(1)>, L<virt-sparsify(1)>, L<virt-sysprep(1)>, L<virt-tar"
-"(1)>, L<virt-tar-in(1)>, L<virt-tar-out(1)>, L<virt-win-reg(1)>, L<qemu(1)>, "
-"L<febootstrap(1)>, L<febootstrap-supermin-helper(8)>, L<hivex(3)>, L<stap(1)"
-">, L<http://libguestfs.org/>."
+"(1)>, L<virt-tar-in(1)>, L<virt-tar-out(1)>, L<virt-win-reg(1)>, L<guestfs-"
+"testing(1)>, L<qemu(1)>, L<febootstrap(1)>, L<febootstrap-supermin-helper(8)"
+">, L<hivex(3)>, L<stap(1)>, L<http://libguestfs.org/>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3308
+#: ../src/guestfs.pod:3309
 msgid ""
 "Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, L<lvm"
 "(8)>, L<disktype(1)>."
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:3315 ../tools/virt-make-fs.pl:571
+#: ../src/guestfs.pod:3316 ../tools/virt-make-fs.pl:571
 #: ../tools/virt-win-reg.pl:772
 msgid "BUGS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3317
+#: ../src/guestfs.pod:3318
 msgid "To get a list of bugs against libguestfs use this link:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3319
+#: ../src/guestfs.pod:3320
 msgid ""
 "L<https://bugzilla.redhat.com/buglist.cgi?"
 "component=libguestfs&product=Virtualization+Tools>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3321
+#: ../src/guestfs.pod:3322
 msgid "To report a new bug against libguestfs use this link:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3323
+#: ../src/guestfs.pod:3324
 msgid ""
 "L<https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3325
+#: ../src/guestfs.pod:3326
 msgid "When reporting a bug, please check:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3331
+#: ../src/guestfs.pod:3332
 msgid "That the bug hasn't been reported already."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3335
+#: ../src/guestfs.pod:3336
 msgid "That you are testing a recent version."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3339
+#: ../src/guestfs.pod:3340
 msgid "Describe the bug accurately, and give a way to reproduce it."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3343
+#: ../src/guestfs.pod:3344
 msgid ""
 "Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
 "bug report."
diff --git a/po-docs/ja/guestfish.1 b/po-docs/ja/guestfish.1
index 4d73681..0d5ba1e 100644
--- a/po-docs/ja/guestfish.1
+++ b/po-docs/ja/guestfish.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "guestfish 1"
-.TH guestfish 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH guestfish 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/guestfs-testing.pod b/po-docs/ja/guestfs-testing.pod
new file mode 100644
index 0000000..f03d479
--- /dev/null
+++ b/po-docs/ja/guestfs-testing.pod
@@ -0,0 +1,315 @@
+=encoding utf8
+
+=head1 名前
+
+guestfs-testing - manual testing of libguestfs, you can help!
+
+=head1 DESCRIPTION
+
+This page has manual tests you can try on libguestfs.  Everyone has a
+slightly different combination of platform, hardware and guests, so this
+testing is very valuable.  Thanks for helping out!
+
+These tests require libguestfs E<ge> 1.14.
+
+Tests marked with a B<*> (asterisk) can B<destroy data> if you're not
+careful.  The others are safe and won't modify anything.
+
+You can report bugs you find through this link:
+
+https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
+
+or post on the mailing list (registration is B<not> required, but if you're
+not registered then you'll have to wait for a moderator to manually approve
+your message):
+
+https://www.redhat.com/mailman/listinfo/libguestfs
+
+=head1 TESTS
+
+=head2 Check KVM acceleration is being used.
+
+If your host has hardware virt acceleration, then with a hot cache
+libguestfs should be able to start up in a few seconds.  Run the following
+command a few times:
+
+ time guestfish -a /dev/null run
+
+After a few runs, the time should settle down to a few seconds (under 5
+seconds on fast 64 bit hardware).
+
+How to check for hardware virt:
+
+http://virt-tools.org/learning/check-hardware-virt/
+
+If the command above does not work at all, use L<libguestfs-test-tool(1)>.
+
+=head2 Run virt-alignment-scan on all your guests.
+
+Run L<virt-alignment-scan(1)> on guests or disk images:
+
+ virt-alignment-scan -a /path/to/disk.img
+
+or:
+
+ virt-alignment-scan -d Guest
+
+Does the alignment report match how the guest partitions are aligned?
+
+=head2 Run virt-cat on some files in guests.
+
+L<virt-cat(1)> can display files from guests.  For a Linux guest, try:
+
+ virt-cat LinuxGuest /etc/passwd
+
+A recent feature is support for Windows paths, for example:
+
+ virt-cat WindowsGuest 'c:\windows\win.ini'
+
+An even better test is if you have a Windows guest with multiple drives.  Do
+C<D:>, C<E:> etc paths work correctly?
+
+=head2 B<*> Copy some files into a B<shut off> guest.
+
+L<virt-copy-in(1)> can recursively copy files and directories into a guest
+or disk image.
+
+ virt-copy-in -d Guest /etc /tmp
+
+This should copy local directory C</etc> to C</tmp/etc> in the guest
+(recursively).  If you boot the guest, can you see all of the copied files
+and directories?
+
+Shut the guest down and try copying multiple files and directories:
+
+ virt-copy-in -d Guest /home /etc/issue /tmp
+
+=head2 Copy some files out of a guest.
+
+L<virt-copy-out(1)> can recursively copy files and directories out of a
+guest or disk image.
+
+ virt-copy-out -d Guest /home .
+
+Note the final space and period in the command is not a typo.
+
+This should copy C</home> from the guest into the current directory.
+
+=head2 Run virt-df.
+
+L<virt-df(1)> lists disk space.  Run:
+
+ virt-df
+
+You can try comparing this to the results from L<df(1)> inside the guest,
+but there are some provisos:
+
+=over 4
+
+=item *
+
+The guest must be idle.
+
+=item *
+
+The guest disks must be synched using L<sync(1)>.
+
+=item *
+
+Any action such as booting the guest will write log files causing the
+numbers to change.
+
+=back
+
+We don't guarantee that the numbers will be identical even under these
+circumstances.  They should be similar.  It would indicate a bug if you saw
+greatly differing numbers.
+
+=head2 Try importing virt-df CSV output into a spreadsheet or database.
+
+Run:
+
+ virt-df --csv > /tmp/report.csv
+
+Now try to load this into your favorite spreadsheet or database.  Are the
+results reproduced faithfully in the spreadsheet/database?
+
+http://www.postgresql.org/docs/8.1/static/sql-copy.html
+http://dev.mysql.com/doc/refman/5.1/en/load-data.html
+
+=head2 B<*> Edit a file in a B<shut off> guest.
+
+L<virt-edit(1)> can edit files in guests.  Try this command on a RHEL or
+Fedora guest:
+
+ virt-edit LinuxGuest /etc/sysconfig/network
+
+On other Linux guests try editing other files such as:
+
+ virt-edit LinuxGuest /etc/motd
+
+Are the changes seen inside the guest when it is booted?
+
+=head2 Display the filesystems / partitions / LVs in a guest.
+
+L<virt-filesystems(1)> can be used to display filesystems in a guest.  Try
+this command on any disk image or guest:
+
+ virt-filesystems -a /path/to/disk.img --all --long -h
+
+or:
+
+ virt-filesystems -d Guest --all --long -h
+
+Do the results match what is seen in the guest?
+
+=head2 Run virt-inspector on all your guests.
+
+Use L<virt-inspector(1)> to get a report on all of your guests or disk
+images:
+
+ virt-inspector -a /path/to/disk.img | less
+
+or:
+
+ virt-inspector -d Guest | less
+
+Do the results match what is actually in the guest?
+
+=head2 Try the auditing features of virt-ls on all your guests.
+
+List all setuid or setgid programs in a Linux virtual machine:
+
+ virt-ls -lR -d Guest / | grep '^- [42]'
+
+List all public-writable directories in a Linux virtual machine:
+
+ virt-ls -lR -d Guest / | grep '^d ...7'
+
+List all Unix domain sockets in a Linux virtual machine:
+
+ virt-ls -lR -d Guest / | grep '^s'
+
+List all regular files with filenames ending in '.png':
+
+ virt-ls -lR -d Guest / | grep -i '^-.*\.png$'
+
+Display files larger than 10MB in home directories:
+
+ virt-ls -lR -d Guest /home | awk '$3 > 10*1024*1024'
+
+Find everything modified in the last 7 days:
+
+ virt-ls -lR -d Guest --time-days / | awk '$6 <= 7'
+
+Find regular files modified in the last 24 hours:
+
+ virt-ls -lR -d Guest --time-days / | grep '^-' | awk '$6 < 1'
+
+Do the results match what is in the guest?
+
+=head2 Create a disk image from a tarball.
+
+Use L<virt-make-fs(1)> to create a disk image from any tarball that you
+happen to have:
+
+ virt-make-fs --partition=mbr --type=vfat /any/tarball.tar.gz output.img
+
+Add 'output.img' as a raw disk to an existing guest.  Check the guest can
+see the files.  This test is particularly useful if you try it with a
+Windows guest.
+
+Try other partitioning schemes, eg. I<--partition=gpt>.
+
+Try other filesystem formats, eg. I<--type=ntfs>, I<--type=ext2>.
+
+=head2 B<*> Run virt-rescue on a B<shut off> disk image or guest.
+
+Use L<virt-rescue(1)> to examine, rescue or repair a B<shut off> guest or
+disk image:
+
+ virt-rescue -a /path/to/disk.img
+
+or:
+
+ virt-rescue -d Guest
+
+Can you use ordinary shell commands to examine the guest?
+
+=head2 B<*> Resize your guests.
+
+Use L<virt-resize(1)> to give a guest some more disk space.  For example, if
+you have a disk image that is smaller than 30G, increase it to 30G by doing:
+
+ truncate -s 30G newdisk.img
+ virt-filesystems -a /path/to/olddisk.img --all --long -h
+ virt-resize /path/to/olddisk.img newdisk.img --expand /dev/sda1
+ qemu-kvm -m 1024 -hda newdisk.img
+
+Does the guest still boot? Try expanding other partitions.
+
+=head2 B<*> Sparsify a guest disk.
+
+Using L<virt-sparsify(1)>, make a disk image more sparse:
+
+ virt-sparsify /path/to/olddisk.img newdisk.img
+
+Is C<newdisk.img> still bootable after sparsifying? Is the resulting disk
+image smaller (use C<du> to check)?
+
+=head2 B<*> "sysprep" a B<shut off> Linux guest.
+
+Note that this really will mess up an existing guest, so it's better to
+clone the guest before trying this.
+
+ virt-sysprep --hostname newhost.example.com -a /path/to/disk.img
+
+Was the sysprep successful? After booting, what changes were made and were
+they successful?
+
+=head2 Dump the Windows Registry from your Windows guests.
+
+Use L<virt-win-reg(1)> to dump out the Windows Registry from any Windows
+guests that you have.
+
+ virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\Software' |
+   less
+
+ virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\System' |
+   less
+
+Does the output match running C<regedit> inside the guest?
+
+A recent feature is the ability to dump user registries, so try this,
+replacing I<username> with the name of a local user in the guest:
+
+ virt-win-reg --unsafe-printable-strings WindowsGuest 'HKEY_USERS\username' |
+   less
+
+=head1 SEE ALSO
+
+L<guestfs(3)>, L<guestfish(1)>, L<guestfs-examples(3)>,
+L<http://libguestfs.org/>.
+
+=head1 AUTHORS
+
+Richard W.M. Jones (C<rjones at redhat dot com>)
+
+=head1 COPYRIGHT
+
+Copyright (C) 2011 Red Hat Inc. L<http://libguestfs.org/>
+
+This library is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+This library 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 Lesser General Public License
+for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this library; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
diff --git a/po-docs/ja/guestfs.3 b/po-docs/ja/guestfs.3
index 47ee87b..c4c7e27 100644
--- a/po-docs/ja/guestfs.3
+++ b/po-docs/ja/guestfs.3
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "guestfs 3"
-.TH guestfs 3 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH guestfs 3 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -11814,7 +11814,7 @@ use in case \f(CW\*(C`/var/tmp\*(C'\fR is not large enough.
 \&\fIvirt\-list\-partitions\fR\|(1), \fIvirt\-ls\fR\|(1), \fIvirt\-make\-fs\fR\|(1),
 \&\fIvirt\-rescue\fR\|(1), \fIvirt\-resize\fR\|(1), \fIvirt\-sparsify\fR\|(1),
 \&\fIvirt\-sysprep\fR\|(1), \fIvirt\-tar\fR\|(1), \fIvirt\-tar\-in\fR\|(1), \fIvirt\-tar\-out\fR\|(1),
-\&\fIvirt\-win\-reg\fR\|(1), \fIqemu\fR\|(1), \fIfebootstrap\fR\|(1),
+\&\fIvirt\-win\-reg\fR\|(1), \fIguestfs\-testing\fR\|(1), \fIqemu\fR\|(1), \fIfebootstrap\fR\|(1),
 \&\fIfebootstrap\-supermin\-helper\fR\|(8), \fIhivex\fR\|(3), \fIstap\fR\|(1),
 <http://libguestfs.org/>.
 .PP
diff --git a/po-docs/ja/guestfs.pod b/po-docs/ja/guestfs.pod
index 2e38280..11bc9d0 100644
--- a/po-docs/ja/guestfs.pod
+++ b/po-docs/ja/guestfs.pod
@@ -3163,7 +3163,7 @@ L<virt-inspector(1)>, L<virt-list-filesystems(1)>,
 L<virt-list-partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)>,
 L<virt-rescue(1)>, L<virt-resize(1)>, L<virt-sparsify(1)>,
 L<virt-sysprep(1)>, L<virt-tar(1)>, L<virt-tar-in(1)>, L<virt-tar-out(1)>,
-L<virt-win-reg(1)>, L<qemu(1)>, L<febootstrap(1)>,
+L<virt-win-reg(1)>, L<guestfs-testing(1)>, L<qemu(1)>, L<febootstrap(1)>,
 L<febootstrap-supermin-helper(8)>, L<hivex(3)>, L<stap(1)>,
 L<http://libguestfs.org/>.
 
diff --git a/po-docs/ja/guestmount.1 b/po-docs/ja/guestmount.1
index 6e6fb3d..53d3073 100644
--- a/po-docs/ja/guestmount.1
+++ b/po-docs/ja/guestmount.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "guestmount 1"
-.TH guestmount 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH guestmount 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/libguestfs-test-tool.1 b/po-docs/ja/libguestfs-test-tool.1
index cc02296..d2f1df0 100644
--- a/po-docs/ja/libguestfs-test-tool.1
+++ b/po-docs/ja/libguestfs-test-tool.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "libguestfs-test-tool 1"
-.TH libguestfs-test-tool 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH libguestfs-test-tool 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-alignment-scan.1 b/po-docs/ja/virt-alignment-scan.1
index 167e810..dcb1fa8 100644
--- a/po-docs/ja/virt-alignment-scan.1
+++ b/po-docs/ja/virt-alignment-scan.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-alignment-scan 1"
-.TH virt-alignment-scan 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-alignment-scan 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-cat.1 b/po-docs/ja/virt-cat.1
index eb5df83..c685851 100644
--- a/po-docs/ja/virt-cat.1
+++ b/po-docs/ja/virt-cat.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-cat 1"
-.TH virt-cat 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-cat 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-copy-in.1 b/po-docs/ja/virt-copy-in.1
index dea78c1..cb6e0bd 100644
--- a/po-docs/ja/virt-copy-in.1
+++ b/po-docs/ja/virt-copy-in.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-copy-in 1"
-.TH virt-copy-in 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-copy-in 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-copy-out.1 b/po-docs/ja/virt-copy-out.1
index 1f59472..6d2acb0 100644
--- a/po-docs/ja/virt-copy-out.1
+++ b/po-docs/ja/virt-copy-out.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-copy-out 1"
-.TH virt-copy-out 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-copy-out 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-df.1 b/po-docs/ja/virt-df.1
index 33704c8..2e0a124 100644
--- a/po-docs/ja/virt-df.1
+++ b/po-docs/ja/virt-df.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-df 1"
-.TH virt-df 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-df 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -256,6 +256,29 @@ Display version number and exit.
 .IP "\fB\-x\fR" 4
 .IX Item "-x"
 Enable tracing of libguestfs \s-1API\s0 calls.
+.SH "STATVFS NUMBERS"
+.IX Header "STATVFS NUMBERS"
+\&\f(CW\*(C`virt\-df\*(C'\fR (and \fIdf\fR\|(1)) get information by issuing a \fIstatvfs\fR\|(3) system
+call.  You can get the same information directly, either from the host
+(using libguestfs) or inside the guest:
+.IP "From the host" 4
+.IX Item "From the host"
+Run this command:
+.Sp
+.Vb 1
+\& guestfish \-\-ro \-d GuestName \-i statvfs /
+.Ve
+.Sp
+(change \f(CW\*(C`/\*(C'\fR to see stats for other filesystems).
+.IP "From inside the guest" 4
+.IX Item "From inside the guest"
+Run this command:
+.Sp
+.Vb 1
+\& python \-c \*(Aqimport os; s = os.statvfs ("/"); print s\*(Aq
+.Ve
+.Sp
+(change \f(CW\*(C`/\*(C'\fR to see stats for other filesystems).
 .SH "NOTE ABOUT CSV FORMAT"
 .IX Header "NOTE ABOUT CSV FORMAT"
 Comma-separated values (\s-1CSV\s0) is a deceptive format.  It \fIseems\fR like it
diff --git a/po-docs/ja/virt-df.pod b/po-docs/ja/virt-df.pod
index a03fa85..f5a1ab2 100644
--- a/po-docs/ja/virt-df.pod
+++ b/po-docs/ja/virt-df.pod
@@ -186,6 +186,32 @@ Enable tracing of libguestfs API calls.
 
 =back
 
+=head1 STATVFS NUMBERS
+
+C<virt-df> (and L<df(1)>) get information by issuing a L<statvfs(3)> system
+call.  You can get the same information directly, either from the host
+(using libguestfs) or inside the guest:
+
+=over 4
+
+=item From the host
+
+Run this command:
+
+ guestfish --ro -d GuestName -i statvfs /
+
+(change C</> to see stats for other filesystems).
+
+=item From inside the guest
+
+Run this command:
+
+ python -c 'import os; s = os.statvfs ("/"); print s'
+
+(change C</> to see stats for other filesystems).
+
+=back
+
 =head1 NOTE ABOUT CSV FORMAT
 
 Comma-separated values (CSV) is a deceptive format.  It I<seems> like it
diff --git a/po-docs/ja/virt-edit.1 b/po-docs/ja/virt-edit.1
index f46ec17..e6e94d5 100644
--- a/po-docs/ja/virt-edit.1
+++ b/po-docs/ja/virt-edit.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-edit 1"
-.TH virt-edit 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-edit 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-filesystems.1 b/po-docs/ja/virt-filesystems.1
index 533418d..3854160 100644
--- a/po-docs/ja/virt-filesystems.1
+++ b/po-docs/ja/virt-filesystems.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-filesystems 1"
-.TH virt-filesystems 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-filesystems 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-inspector.1 b/po-docs/ja/virt-inspector.1
index df05d50..6cc4b24 100644
--- a/po-docs/ja/virt-inspector.1
+++ b/po-docs/ja/virt-inspector.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-inspector 1"
-.TH virt-inspector 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-inspector 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-list-filesystems.1 b/po-docs/ja/virt-list-filesystems.1
index 97f886f..2a3a0d4 100644
--- a/po-docs/ja/virt-list-filesystems.1
+++ b/po-docs/ja/virt-list-filesystems.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-list-filesystems.pl 1"
-.TH virt-list-filesystems.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-list-filesystems.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-list-partitions.1 b/po-docs/ja/virt-list-partitions.1
index 05ed04f..3468e9b 100644
--- a/po-docs/ja/virt-list-partitions.1
+++ b/po-docs/ja/virt-list-partitions.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-list-partitions.pl 1"
-.TH virt-list-partitions.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-list-partitions.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-ls.1 b/po-docs/ja/virt-ls.1
index 4fd909e..3de7213 100644
--- a/po-docs/ja/virt-ls.1
+++ b/po-docs/ja/virt-ls.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-ls 1"
-.TH virt-ls 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-ls 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-make-fs.1 b/po-docs/ja/virt-make-fs.1
index d2af723..4b35e7e 100644
--- a/po-docs/ja/virt-make-fs.1
+++ b/po-docs/ja/virt-make-fs.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-make-fs.pl 1"
-.TH virt-make-fs.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-make-fs.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-rescue.1 b/po-docs/ja/virt-rescue.1
index 3aed463..12dc631 100644
--- a/po-docs/ja/virt-rescue.1
+++ b/po-docs/ja/virt-rescue.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-rescue 1"
-.TH virt-rescue 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-rescue 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-resize.1 b/po-docs/ja/virt-resize.1
index 7a5c87a..76f699e 100644
--- a/po-docs/ja/virt-resize.1
+++ b/po-docs/ja/virt-resize.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-resize 1"
-.TH virt-resize 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-resize 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-sparsify.1 b/po-docs/ja/virt-sparsify.1
index c0977b8..7ef39fe 100644
--- a/po-docs/ja/virt-sparsify.1
+++ b/po-docs/ja/virt-sparsify.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-sparsify 1"
-.TH virt-sparsify 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-sparsify 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -161,10 +161,10 @@ Display help.
 Use \f(CW\*(C`output\-format\*(C'\fR as the format for the destination image.  If this is
 not specified, then the input format is used.
 .Sp
-Supported and known-working output formats are: \f(CW\*(C`raw\*(C'\fR, \f(CW\*(C`qcow2\*(C'\fR.
+Supported and known-working output formats are: \f(CW\*(C`raw\*(C'\fR, \f(CW\*(C`qcow2\*(C'\fR, \f(CW\*(C`vdi\*(C'\fR.
 .Sp
 You can also use any format supported by the \fIqemu\-img\fR\|(1) program,
-eg. \f(CW\*(C`vdi\*(C'\fR or \f(CW\*(C`vmdk\*(C'\fR, but support for other formats is reliant on qemu.
+eg. \f(CW\*(C`vmdk\*(C'\fR, but support for other formats is reliant on qemu.
 .Sp
 Specifying the \fI\-\-convert\fR option is usually a good idea, because then
 virt-sparsify doesn't need to try to guess the input format.
diff --git a/po-docs/ja/virt-sparsify.pod b/po-docs/ja/virt-sparsify.pod
index c5a6954..22f7fdd 100644
--- a/po-docs/ja/virt-sparsify.pod
+++ b/po-docs/ja/virt-sparsify.pod
@@ -109,10 +109,10 @@ Display help.
 Use C<output-format> as the format for the destination image.  If this is
 not specified, then the input format is used.
 
-Supported and known-working output formats are: C<raw>, C<qcow2>.
+Supported and known-working output formats are: C<raw>, C<qcow2>, C<vdi>.
 
 You can also use any format supported by the L<qemu-img(1)> program,
-eg. C<vdi> or C<vmdk>, but support for other formats is reliant on qemu.
+eg. C<vmdk>, but support for other formats is reliant on qemu.
 
 Specifying the I<--convert> option is usually a good idea, because then
 virt-sparsify doesn't need to try to guess the input format.
diff --git a/po-docs/ja/virt-sysprep.1 b/po-docs/ja/virt-sysprep.1
index 0b446f6..daa6d0f 100644
--- a/po-docs/ja/virt-sysprep.1
+++ b/po-docs/ja/virt-sysprep.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-sysprep 1"
-.TH virt-sysprep 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-sysprep 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-tar-in.1 b/po-docs/ja/virt-tar-in.1
index bae54c4..e1839e2 100644
--- a/po-docs/ja/virt-tar-in.1
+++ b/po-docs/ja/virt-tar-in.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-tar-in 1"
-.TH virt-tar-in 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-tar-in 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-tar-out.1 b/po-docs/ja/virt-tar-out.1
index 35ecf75..e4ce5bd 100644
--- a/po-docs/ja/virt-tar-out.1
+++ b/po-docs/ja/virt-tar-out.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-tar-out 1"
-.TH virt-tar-out 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-tar-out 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-tar.1 b/po-docs/ja/virt-tar.1
index f81484b..779a9e4 100644
--- a/po-docs/ja/virt-tar.1
+++ b/po-docs/ja/virt-tar.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-tar.pl 1"
-.TH virt-tar.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-tar.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/ja/virt-win-reg.1 b/po-docs/ja/virt-win-reg.1
index 226a5aa..11d4215 100644
--- a/po-docs/ja/virt-win-reg.1
+++ b/po-docs/ja/virt-win-reg.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-win-reg.pl 1"
-.TH virt-win-reg.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-win-reg.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/libguestfs-docs.pot b/po-docs/libguestfs-docs.pot
index ded7b4d..605a62c 100644
--- a/po-docs/libguestfs-docs.pot
+++ b/po-docs/libguestfs-docs.pot
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: libguestfs 1.14.2\n"
+"Project-Id-Version: libguestfs 1.14.3\n"
 "Report-Msgid-Bugs-To: libguestfs at redhat.com\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -18,7 +18,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 #. type: =head1
-#: ../align/virt-alignment-scan.pod:3 ../cat/virt-cat.pod:3 ../cat/virt-filesystems.pod:3 ../cat/virt-ls.pod:3 ../clone/virt-sysprep.pod:3 ../df/virt-df.pod:3 ../edit/virt-edit.pod:3 ../erlang/examples/guestfs-erlang.pod:3 ../examples/guestfs-examples.pod:3 ../examples/guestfs-recipes.pod:14 ../fish/guestfish.pod:3 ../fish/virt-copy-in.pod:3 ../fish/virt-copy-out.pod:3 ../fish/virt-tar-in.pod:3 ../fish/virt-tar-out.pod:3 ../fuse/guestmount.pod:3 ../inspector/virt-inspector.pod:3 ../java/examples/guestfs-java.pod:3 ../ocaml/examples/guestfs-ocaml.pod:3 ../perl/examples/guestfs-perl.pod:3 ../python/examples/guestfs-python.pod:3 ../rescue/virt-rescue.pod:3 ../resize/virt-resize.pod:3 ../ruby/examples/guestfs-ruby.pod:3 ../sparsify/virt-sparsify.pod:3 ../src/guestfs.pod:3 ../test-tool/libguestfs-test-tool.pod:3 ../tools/virt-list-filesystems.pl:30 ../tools/virt-list-partitions.pl:30 ../tools/virt-make-fs.pl:35 ../tools/virt-tar.pl:31 ../tools/virt-win-reg.pl:35
+#: ../align/virt-alignment-scan.pod:3 ../cat/virt-cat.pod:3 ../cat/virt-filesystems.pod:3 ../cat/virt-ls.pod:3 ../clone/virt-sysprep.pod:3 ../df/virt-df.pod:3 ../edit/virt-edit.pod:3 ../erlang/examples/guestfs-erlang.pod:3 ../examples/guestfs-examples.pod:3 ../examples/guestfs-recipes.pod:14 ../examples/guestfs-testing.pod:3 ../fish/guestfish.pod:3 ../fish/virt-copy-in.pod:3 ../fish/virt-copy-out.pod:3 ../fish/virt-tar-in.pod:3 ../fish/virt-tar-out.pod:3 ../fuse/guestmount.pod:3 ../inspector/virt-inspector.pod:3 ../java/examples/guestfs-java.pod:3 ../ocaml/examples/guestfs-ocaml.pod:3 ../perl/examples/guestfs-perl.pod:3 ../python/examples/guestfs-python.pod:3 ../rescue/virt-rescue.pod:3 ../resize/virt-resize.pod:3 ../ruby/examples/guestfs-ruby.pod:3 ../sparsify/virt-sparsify.pod:3 ../src/guestfs.pod:3 ../test-tool/libguestfs-test-tool.pod:3 ../tools/virt-list-filesystems.pl:30 ../tools/virt-list-partitions.pl:30 ../tools/virt-make-fs.pl:35 ../tools/virt-tar.pl:31 ../tools/virt-win-reg.pl:35
 msgid "NAME"
 msgstr ""
 
@@ -49,7 +49,7 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../align/virt-alignment-scan.pod:13 ../cat/virt-cat.pod:19 ../cat/virt-filesystems.pod:13 ../cat/virt-ls.pod:19 ../clone/virt-sysprep.pod:13 ../df/virt-df.pod:21 ../edit/virt-edit.pod:27 ../erlang/examples/guestfs-erlang.pod:16 ../examples/guestfs-examples.pod:19 ../examples/guestfs-recipes.pod:18 ../fish/guestfish.pod:30 ../fish/virt-copy-in.pod:19 ../fish/virt-copy-out.pod:13 ../fish/virt-tar-in.pod:21 ../fish/virt-tar-out.pod:15 ../fuse/guestmount.pod:20 ../inspector/virt-inspector.pod:19 ../java/examples/guestfs-java.pod:15 ../ocaml/examples/guestfs-ocaml.pod:25 ../perl/examples/guestfs-perl.pod:18 ../python/examples/guestfs-python.pod:14 ../rescue/virt-rescue.pod:29 ../resize/virt-resize.pod:13 ../ruby/examples/guestfs-ruby.pod:15 ../sparsify/virt-sparsify.pod:11 ../src/guestfs.pod:23 ../test-tool/libguestfs-test-tool.pod:11 ../tools/virt-list-filesystems.pl:40 ../tools/virt-list-partitions.pl:40 ../tools/virt-make-fs.pl:47 ../tools/virt-tar.pl:77 ../tools/virt-win-reg.pl:63
+#: ../align/virt-alignment-scan.pod:13 ../cat/virt-cat.pod:19 ../cat/virt-filesystems.pod:13 ../cat/virt-ls.pod:19 ../clone/virt-sysprep.pod:13 ../df/virt-df.pod:21 ../edit/virt-edit.pod:27 ../erlang/examples/guestfs-erlang.pod:16 ../examples/guestfs-examples.pod:19 ../examples/guestfs-recipes.pod:18 ../examples/guestfs-testing.pod:7 ../fish/guestfish.pod:30 ../fish/virt-copy-in.pod:19 ../fish/virt-copy-out.pod:13 ../fish/virt-tar-in.pod:21 ../fish/virt-tar-out.pod:15 ../fuse/guestmount.pod:20 ../inspector/virt-inspector.pod:19 ../java/examples/guestfs-java.pod:15 ../ocaml/examples/guestfs-ocaml.pod:25 ../perl/examples/guestfs-perl.pod:18 ../python/examples/guestfs-python.pod:14 ../rescue/virt-rescue.pod:29 ../resize/virt-resize.pod:13 ../ruby/examples/guestfs-ruby.pod:15 ../sparsify/virt-sparsify.pod:11 ../src/guestfs.pod:23 ../test-tool/libguestfs-test-tool.pod:11 ../tools/virt-list-filesystems.pl:40 ../tools/virt-list-partitions.pl:40 ../tools/virt-make-fs.pl:47 ../tools/virt-tar.pl:77 ../tools/virt-win-reg.pl:63
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -350,12 +350,12 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../align/virt-alignment-scan.pod:147 ../resize/virt-resize.pod:491 ../sparsify/virt-sparsify.pod:153
+#: ../align/virt-alignment-scan.pod:147 ../resize/virt-resize.pod:491 ../sparsify/virt-sparsify.pod:152
 msgid "B<-q>"
 msgstr ""
 
 #. type: =item
-#: ../align/virt-alignment-scan.pod:149 ../resize/virt-resize.pod:493 ../sparsify/virt-sparsify.pod:155
+#: ../align/virt-alignment-scan.pod:149 ../resize/virt-resize.pod:493 ../sparsify/virt-sparsify.pod:154
 msgid "B<--quiet>"
 msgstr ""
 
@@ -367,42 +367,42 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../align/virt-alignment-scan.pod:154 ../cat/virt-cat.pod:134 ../cat/virt-filesystems.pod:261 ../cat/virt-ls.pod:425 ../clone/virt-sysprep.pod:138 ../df/virt-df.pod:173 ../edit/virt-edit.pod:161 ../fish/guestfish.pod:390 ../fuse/guestmount.pod:266 ../inspector/virt-inspector.pod:119 ../rescue/virt-rescue.pod:182 ../sparsify/virt-sparsify.pod:159
+#: ../align/virt-alignment-scan.pod:154 ../cat/virt-cat.pod:134 ../cat/virt-filesystems.pod:261 ../cat/virt-ls.pod:425 ../clone/virt-sysprep.pod:138 ../df/virt-df.pod:173 ../edit/virt-edit.pod:161 ../fish/guestfish.pod:390 ../fuse/guestmount.pod:266 ../inspector/virt-inspector.pod:119 ../rescue/virt-rescue.pod:182 ../sparsify/virt-sparsify.pod:158
 msgid "B<-v>"
 msgstr ""
 
 #. type: =item
-#: ../align/virt-alignment-scan.pod:156 ../cat/virt-cat.pod:136 ../cat/virt-filesystems.pod:263 ../cat/virt-ls.pod:427 ../clone/virt-sysprep.pod:140 ../df/virt-df.pod:175 ../edit/virt-edit.pod:163 ../fish/guestfish.pod:392 ../fuse/guestmount.pod:268 ../inspector/virt-inspector.pod:121 ../rescue/virt-rescue.pod:184 ../sparsify/virt-sparsify.pod:161
+#: ../align/virt-alignment-scan.pod:156 ../cat/virt-cat.pod:136 ../cat/virt-filesystems.pod:263 ../cat/virt-ls.pod:427 ../clone/virt-sysprep.pod:140 ../df/virt-df.pod:175 ../edit/virt-edit.pod:163 ../fish/guestfish.pod:392 ../fuse/guestmount.pod:268 ../inspector/virt-inspector.pod:121 ../rescue/virt-rescue.pod:184 ../sparsify/virt-sparsify.pod:160
 msgid "B<--verbose>"
 msgstr ""
 
 #. type: textblock
-#: ../align/virt-alignment-scan.pod:158 ../cat/virt-cat.pod:138 ../cat/virt-filesystems.pod:265 ../cat/virt-ls.pod:429 ../clone/virt-sysprep.pod:142 ../df/virt-df.pod:177 ../edit/virt-edit.pod:165 ../inspector/virt-inspector.pod:123 ../rescue/virt-rescue.pod:186 ../sparsify/virt-sparsify.pod:163
+#: ../align/virt-alignment-scan.pod:158 ../cat/virt-cat.pod:138 ../cat/virt-filesystems.pod:265 ../cat/virt-ls.pod:429 ../clone/virt-sysprep.pod:142 ../df/virt-df.pod:177 ../edit/virt-edit.pod:165 ../inspector/virt-inspector.pod:123 ../rescue/virt-rescue.pod:186 ../sparsify/virt-sparsify.pod:162
 msgid "Enable verbose messages for debugging."
 msgstr ""
 
 #. type: =item
-#: ../align/virt-alignment-scan.pod:160 ../cat/virt-cat.pod:140 ../cat/virt-filesystems.pod:267 ../cat/virt-ls.pod:431 ../clone/virt-sysprep.pod:144 ../df/virt-df.pod:179 ../edit/virt-edit.pod:167 ../fish/guestfish.pod:397 ../fuse/guestmount.pod:272 ../inspector/virt-inspector.pod:125 ../rescue/virt-rescue.pod:188 ../resize/virt-resize.pod:561 ../sparsify/virt-sparsify.pod:165
+#: ../align/virt-alignment-scan.pod:160 ../cat/virt-cat.pod:140 ../cat/virt-filesystems.pod:267 ../cat/virt-ls.pod:431 ../clone/virt-sysprep.pod:144 ../df/virt-df.pod:179 ../edit/virt-edit.pod:167 ../fish/guestfish.pod:397 ../fuse/guestmount.pod:272 ../inspector/virt-inspector.pod:125 ../rescue/virt-rescue.pod:188 ../resize/virt-resize.pod:561 ../sparsify/virt-sparsify.pod:164
 msgid "B<-V>"
 msgstr ""
 
 #. type: =item
-#: ../align/virt-alignment-scan.pod:162 ../cat/virt-cat.pod:142 ../cat/virt-filesystems.pod:269 ../cat/virt-ls.pod:433 ../clone/virt-sysprep.pod:146 ../df/virt-df.pod:181 ../edit/virt-edit.pod:169 ../fish/guestfish.pod:399 ../fuse/guestmount.pod:274 ../inspector/virt-inspector.pod:127 ../rescue/virt-rescue.pod:190 ../resize/virt-resize.pod:563 ../sparsify/virt-sparsify.pod:167 ../tools/virt-list-filesystems.pl:69 ../tools/virt-list-partitions.pl:70 ../tools/virt-make-fs.pl:169 ../tools/virt-tar.pl:119 ../tools/virt-win-reg.pl:112
+#: ../align/virt-alignment-scan.pod:162 ../cat/virt-cat.pod:142 ../cat/virt-filesystems.pod:269 ../cat/virt-ls.pod:433 ../clone/virt-sysprep.pod:146 ../df/virt-df.pod:181 ../edit/virt-edit.pod:169 ../fish/guestfish.pod:399 ../fuse/guestmount.pod:274 ../inspector/virt-inspector.pod:127 ../rescue/virt-rescue.pod:190 ../resize/virt-resize.pod:563 ../sparsify/virt-sparsify.pod:166 ../tools/virt-list-filesystems.pl:69 ../tools/virt-list-partitions.pl:70 ../tools/virt-make-fs.pl:169 ../tools/virt-tar.pl:119 ../tools/virt-win-reg.pl:112
 msgid "B<--version>"
 msgstr ""
 
 #. type: textblock
-#: ../align/virt-alignment-scan.pod:164 ../cat/virt-cat.pod:144 ../cat/virt-filesystems.pod:271 ../cat/virt-ls.pod:435 ../clone/virt-sysprep.pod:148 ../df/virt-df.pod:183 ../edit/virt-edit.pod:171 ../inspector/virt-inspector.pod:129 ../rescue/virt-rescue.pod:192 ../resize/virt-resize.pod:565 ../sparsify/virt-sparsify.pod:169 ../tools/virt-list-filesystems.pl:71 ../tools/virt-list-partitions.pl:72 ../tools/virt-make-fs.pl:171 ../tools/virt-tar.pl:121 ../tools/virt-win-reg.pl:114
+#: ../align/virt-alignment-scan.pod:164 ../cat/virt-cat.pod:144 ../cat/virt-filesystems.pod:271 ../cat/virt-ls.pod:435 ../clone/virt-sysprep.pod:148 ../df/virt-df.pod:183 ../edit/virt-edit.pod:171 ../inspector/virt-inspector.pod:129 ../rescue/virt-rescue.pod:192 ../resize/virt-resize.pod:565 ../sparsify/virt-sparsify.pod:168 ../tools/virt-list-filesystems.pl:71 ../tools/virt-list-partitions.pl:72 ../tools/virt-make-fs.pl:171 ../tools/virt-tar.pl:121 ../tools/virt-win-reg.pl:114
 msgid "Display version number and exit."
 msgstr ""
 
 #. type: =item
-#: ../align/virt-alignment-scan.pod:166 ../cat/virt-cat.pod:146 ../cat/virt-filesystems.pod:281 ../cat/virt-ls.pod:437 ../clone/virt-sysprep.pod:150 ../df/virt-df.pod:185 ../edit/virt-edit.pod:173 ../fish/guestfish.pod:412 ../fuse/guestmount.pod:287 ../inspector/virt-inspector.pod:131 ../rescue/virt-rescue.pod:203 ../sparsify/virt-sparsify.pod:171 ../tools/virt-tar.pl:158
+#: ../align/virt-alignment-scan.pod:166 ../cat/virt-cat.pod:146 ../cat/virt-filesystems.pod:281 ../cat/virt-ls.pod:437 ../clone/virt-sysprep.pod:150 ../df/virt-df.pod:185 ../edit/virt-edit.pod:173 ../fish/guestfish.pod:412 ../fuse/guestmount.pod:287 ../inspector/virt-inspector.pod:131 ../rescue/virt-rescue.pod:203 ../sparsify/virt-sparsify.pod:170 ../tools/virt-tar.pl:158
 msgid "B<-x>"
 msgstr ""
 
 #. type: textblock
-#: ../align/virt-alignment-scan.pod:168 ../cat/virt-cat.pod:148 ../cat/virt-filesystems.pod:283 ../cat/virt-ls.pod:439 ../clone/virt-sysprep.pod:152 ../df/virt-df.pod:187 ../edit/virt-edit.pod:175 ../inspector/virt-inspector.pod:133 ../rescue/virt-rescue.pod:205 ../sparsify/virt-sparsify.pod:173
+#: ../align/virt-alignment-scan.pod:168 ../cat/virt-cat.pod:148 ../cat/virt-filesystems.pod:283 ../cat/virt-ls.pod:439 ../clone/virt-sysprep.pod:152 ../df/virt-df.pod:187 ../edit/virt-edit.pod:175 ../inspector/virt-inspector.pod:133 ../rescue/virt-rescue.pod:205 ../sparsify/virt-sparsify.pod:172
 msgid "Enable tracing of libguestfs API calls."
 msgstr ""
 
@@ -673,12 +673,12 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../align/virt-alignment-scan.pod:311 ../cat/virt-cat.pod:231 ../cat/virt-filesystems.pod:373 ../cat/virt-ls.pod:483 ../clone/virt-sysprep.pod:475 ../df/virt-df.pod:215 ../edit/virt-edit.pod:342 ../inspector/virt-inspector.pod:367 ../rescue/virt-rescue.pod:266 ../resize/virt-resize.pod:676 ../tools/virt-list-filesystems.pl:188 ../tools/virt-list-partitions.pl:258 ../tools/virt-make-fs.pl:550 ../tools/virt-tar.pl:289 ../tools/virt-win-reg.pl:744
+#: ../align/virt-alignment-scan.pod:311 ../cat/virt-cat.pod:231 ../cat/virt-filesystems.pod:373 ../cat/virt-ls.pod:483 ../clone/virt-sysprep.pod:475 ../df/virt-df.pod:241 ../edit/virt-edit.pod:342 ../inspector/virt-inspector.pod:367 ../rescue/virt-rescue.pod:266 ../resize/virt-resize.pod:676 ../tools/virt-list-filesystems.pl:188 ../tools/virt-list-partitions.pl:258 ../tools/virt-make-fs.pl:550 ../tools/virt-tar.pl:289 ../tools/virt-win-reg.pl:744
 msgid "SHELL QUOTING"
 msgstr ""
 
 #. type: textblock
-#: ../align/virt-alignment-scan.pod:313 ../cat/virt-cat.pod:233 ../cat/virt-filesystems.pod:375 ../cat/virt-ls.pod:485 ../clone/virt-sysprep.pod:477 ../df/virt-df.pod:217 ../edit/virt-edit.pod:344 ../inspector/virt-inspector.pod:369 ../rescue/virt-rescue.pod:268 ../resize/virt-resize.pod:678 ../tools/virt-list-filesystems.pl:190 ../tools/virt-list-partitions.pl:260 ../tools/virt-make-fs.pl:552 ../tools/virt-tar.pl:291 ../tools/virt-win-reg.pl:752
+#: ../align/virt-alignment-scan.pod:313 ../cat/virt-cat.pod:233 ../cat/virt-filesystems.pod:375 ../cat/virt-ls.pod:485 ../clone/virt-sysprep.pod:477 ../df/virt-df.pod:243 ../edit/virt-edit.pod:344 ../inspector/virt-inspector.pod:369 ../rescue/virt-rescue.pod:268 ../resize/virt-resize.pod:678 ../tools/virt-list-filesystems.pl:190 ../tools/virt-list-partitions.pl:260 ../tools/virt-make-fs.pl:552 ../tools/virt-tar.pl:291 ../tools/virt-win-reg.pl:752
 msgid ""
 "Libvirt guest names can contain arbitrary characters, some of which have "
 "meaning to the shell such as C<#> and space.  You may need to quote or "
@@ -687,7 +687,7 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../align/virt-alignment-scan.pod:318 ../cat/virt-cat.pod:238 ../cat/virt-filesystems.pod:380 ../cat/virt-ls.pod:490 ../clone/virt-sysprep.pod:482 ../df/virt-df.pod:222 ../edit/virt-edit.pod:349 ../fish/guestfish.pod:1114 ../fuse/guestmount.pod:312 ../inspector/virt-inspector.pod:390 ../resize/virt-resize.pod:683 ../sparsify/virt-sparsify.pod:227 ../test-tool/libguestfs-test-tool.pod:90
+#: ../align/virt-alignment-scan.pod:318 ../cat/virt-cat.pod:238 ../cat/virt-filesystems.pod:380 ../cat/virt-ls.pod:490 ../clone/virt-sysprep.pod:482 ../df/virt-df.pod:248 ../edit/virt-edit.pod:349 ../fish/guestfish.pod:1114 ../fuse/guestmount.pod:312 ../inspector/virt-inspector.pod:390 ../resize/virt-resize.pod:683 ../sparsify/virt-sparsify.pod:226 ../test-tool/libguestfs-test-tool.pod:90
 msgid "EXIT STATUS"
 msgstr ""
 
@@ -697,7 +697,7 @@ msgid "This program returns:"
 msgstr ""
 
 #. type: =item
-#: ../align/virt-alignment-scan.pod:324 ../align/virt-alignment-scan.pod:330 ../align/virt-alignment-scan.pod:336 ../align/virt-alignment-scan.pod:343 ../cat/virt-cat.pod:177 ../cat/virt-cat.pod:182 ../cat/virt-cat.pod:187 ../cat/virt-cat.pod:198 ../cat/virt-cat.pod:202 ../clone/virt-sysprep.pod:283 ../clone/virt-sysprep.pod:287 ../clone/virt-sysprep.pod:291 ../clone/virt-sysprep.pod:295 ../clone/virt-sysprep.pod:310 ../clone/virt-sysprep.pod:314 ../clone/virt-sysprep.pod:318 ../clone/virt-sysprep.pod:322 ../clone/virt-sysprep.pod:326 ../clone/virt-sysprep.pod:362 ../clone/virt-sysprep.pod:384 ../clone/virt-sysprep.pod:388 ../df/virt-df.pod:148 ../df/virt-df.pod:154 ../edit/virt-edit.pod:266 ../edit/virt-edit.pod:271 ../edit/virt-edit.pod:276 ../edit/virt-edit.pod:287 ../edit/virt-edit.pod:291 ../examples/guestfs-recipes.pod:98 ../examples/guestfs-recipes.pod:102 ../examples/guestfs-recipes.pod:106 ../examples/guestfs-recipes.pod:132 ../examples/guestfs-recipes.pod:137 ../examples/guestfs-recipes.pod:227 ../examples/guestfs-recipes.pod:231 ../examples/guestfs-recipes.pod:235 ../examples/guestfs-recipes.pod:239 ../examples/guestfs-recipes.pod:243 ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:441 ../fish/guestfish-actions.pod:449 ../fish/guestfish-actions.pod:456 ../fish/guestfish-actions.pod:463 ../fish/guestfish-actions.pod:1262 ../fish/guestfish-actions.pod:1266 ../fish/guestfish-actions.pod:1270 ../fish/guestfish-actions.pod:1274 ../fish/guestfish-actions.pod:1282 ../fish/guestfish-actions.pod:1286 ../fish/guestfish-actions.pod:1290 ../fish/guestfish-actions.pod:1300 ../fish/guestfish-actions.pod:1304 ../fish/guestfish-actions.pod:1308 ../fish/guestfish-actions.pod:1398 ../fish/guestfish-actions.pod:1402 ../fish/guestfish-actions.pod:1407 ../fish/guestfish-actions.pod:1412 ../fish/guestfish-actions.pod:1454 ../fish/guestfish-actions.pod:1458 ../fish/guestfish-actions.pod:1463 ../fish/guestfish-actions.pod:1719 ../fish/guestfish-actions.pod:1726 ../fish/guestfish-actions.pod:1733 ../fish/guestfish-actions.pod:2136 ../fish/guestfish-actions.pod:2142 ../fish/guestfish-actions.pod:2150 ../fish/guestfish-actions.pod:2157 ../fish/guestfish-actions.pod:2164 ../fish/guestfish.pod:445 ../fish/guestfish.pod:449 ../fish/guestfish.pod:453 ../fish/guestfish.pod:457 ../inspector/virt-inspector.pod:408 ../inspector/virt-inspector.pod:412 ../resize/virt-resize.pod:359 ../resize/virt-resize.pod:363 ../resize/virt-resize.pod:372 ../resize/virt-resize.pod:378 ../sparsify/virt-sparsify.pod:32 ../sparsify/virt-sparsify.pod:39 ../sparsify/virt-sparsify.pod:43 ../sparsify/virt-sparsify.pod:49 ../sparsify/virt-sparsify.pod:54 ../sparsify/virt-sparsify.pod:58 ../sparsify/virt-sparsify.pod:64 ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:29 ../src/guestfs-actions.pod:641 ../src/guestfs-actions.pod:649 ../src/guestfs-actions.pod:656 ../src/guestfs-actions.pod:663 ../src/guestfs-actions.pod:2079 ../src/guestfs-actions.pod:2083 ../src/guestfs-actions.pod:2087 ../src/guestfs-actions.pod:2091 ../src/guestfs-actions.pod:2099 ../src/guestfs-actions.pod:2103 ../src/guestfs-actions.pod:2107 ../src/guestfs-actions.pod:2117 ../src/guestfs-actions.pod:2121 ../src/guestfs-actions.pod:2125 ../src/guestfs-actions.pod:2263 ../src/guestfs-actions.pod:2267 ../src/guestfs-actions.pod:2272 ../src/guestfs-actions.pod:2277 ../src/guestfs-actions.pod:2338 ../src/guestfs-actions.pod:2342 ../src/guestfs-actions.pod:2347 ../src/guestfs-actions.pod:2762 ../src/guestfs-actions.pod:2769 ../src/guestfs-actions.pod:2776 ../src/guestfs-actions.pod:3321 ../src/guestfs-actions.pod:3327 ../src/guestfs-actions.pod:3335 ../src/guestfs-actions.pod:3342 ../src/guestfs-actions.pod:3349 ../src/guestfs.pod:403 ../src/guestfs.pod:408 ../src/guestfs.pod:413 ../src/guestfs.pod:417 ../src/guestfs.pod:422 ../src/guestfs.pod:426 ../src/guestfs.pod:431 ../src/guestfs.pod:436 ../src/guestfs.pod:1109 ../src/guestfs.pod:1113 ../src/guestfs.pod:1117 ../src/guestfs.pod:1122 ../src/guestfs.pod:1130 ../src/guestfs.pod:1149 ../src/guestfs.pod:1157 ../src/guestfs.pod:1179 ../src/guestfs.pod:1183 ../src/guestfs.pod:1187 ../src/guestfs.pod:1191 ../src/guestfs.pod:1195 ../src/guestfs.pod:1199 ../src/guestfs.pod:1689 ../src/guestfs.pod:1694 ../src/guestfs.pod:1698 ../src/guestfs.pod:1800 ../src/guestfs.pod:1805 ../src/guestfs.pod:1809 ../src/guestfs.pod:1819 ../src/guestfs.pod:2108 ../src/guestfs.pod:2113 ../src/guestfs.pod:2119 ../src/guestfs.pod:2127 ../src/guestfs.pod:2645 ../src/guestfs.pod:2651 ../src/guestfs.pod:2656 ../src/guestfs.pod:2662 ../src/guestfs.pod:3062 ../src/guestfs.pod:3067 ../src/guestfs.pod:3071 ../src/guestfs.pod:3075 ../src/guestfs.pod:3079 ../src/guestfs.pod:3093 ../src/guestfs.pod:3098 ../src/guestfs.pod:3329 ../src/guestfs.pod:3333 ../src/guestfs.pod:3337 ../src/guestfs.pod:3341 ../tools/virt-win-reg.pl:197 ../tools/virt-win-reg.pl:202 ../tools/virt-win-reg.pl:208 ../tools/virt-win-reg.pl:721 ../tools/virt-win-reg.pl:727 ../tools/virt-win-reg.pl:733
+#: ../align/virt-alignment-scan.pod:324 ../align/virt-alignment-scan.pod:330 ../align/virt-alignment-scan.pod:336 ../align/virt-alignment-scan.pod:343 ../cat/virt-cat.pod:177 ../cat/virt-cat.pod:182 ../cat/virt-cat.pod:187 ../cat/virt-cat.pod:198 ../cat/virt-cat.pod:202 ../clone/virt-sysprep.pod:283 ../clone/virt-sysprep.pod:287 ../clone/virt-sysprep.pod:291 ../clone/virt-sysprep.pod:295 ../clone/virt-sysprep.pod:310 ../clone/virt-sysprep.pod:314 ../clone/virt-sysprep.pod:318 ../clone/virt-sysprep.pod:322 ../clone/virt-sysprep.pod:326 ../clone/virt-sysprep.pod:362 ../clone/virt-sysprep.pod:384 ../clone/virt-sysprep.pod:388 ../df/virt-df.pod:148 ../df/virt-df.pod:154 ../edit/virt-edit.pod:266 ../edit/virt-edit.pod:271 ../edit/virt-edit.pod:276 ../edit/virt-edit.pod:287 ../edit/virt-edit.pod:291 ../examples/guestfs-recipes.pod:98 ../examples/guestfs-recipes.pod:102 ../examples/guestfs-recipes.pod:106 ../examples/guestfs-recipes.pod:132 ../examples/guestfs-recipes.pod:137 ../examples/guestfs-recipes.pod:227 ../examples/guestfs-recipes.pod:231 ../examples/guestfs-recipes.pod:235 ../examples/guestfs-recipes.pod:239 ../examples/guestfs-recipes.pod:243 ../examples/guestfs-testing.pod:110 ../examples/guestfs-testing.pod:114 ../examples/guestfs-testing.pod:118 ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:441 ../fish/guestfish-actions.pod:449 ../fish/guestfish-actions.pod:456 ../fish/guestfish-actions.pod:463 ../fish/guestfish-actions.pod:1262 ../fish/guestfish-actions.pod:1266 ../fish/guestfish-actions.pod:1270 ../fish/guestfish-actions.pod:1274 ../fish/guestfish-actions.pod:1282 ../fish/guestfish-actions.pod:1286 ../fish/guestfish-actions.pod:1290 ../fish/guestfish-actions.pod:1300 ../fish/guestfish-actions.pod:1304 ../fish/guestfish-actions.pod:1308 ../fish/guestfish-actions.pod:1398 ../fish/guestfish-actions.pod:1402 ../fish/guestfish-actions.pod:1407 ../fish/guestfish-actions.pod:1412 ../fish/guestfish-actions.pod:1454 ../fish/guestfish-actions.pod:1458 ../fish/guestfish-actions.pod:1463 ../fish/guestfish-actions.pod:1719 ../fish/guestfish-actions.pod:1726 ../fish/guestfish-actions.pod:1733 ../fish/guestfish-actions.pod:2136 ../fish/guestfish-actions.pod:2142 ../fish/guestfish-actions.pod:2150 ../fish/guestfish-actions.pod:2157 ../fish/guestfish-actions.pod:2164 ../fish/guestfish.pod:445 ../fish/guestfish.pod:449 ../fish/guestfish.pod:453 ../fish/guestfish.pod:457 ../inspector/virt-inspector.pod:408 ../inspector/virt-inspector.pod:412 ../resize/virt-resize.pod:359 ../resize/virt-resize.pod:363 ../resize/virt-resize.pod:372 ../resize/virt-resize.pod:378 ../sparsify/virt-sparsify.pod:32 ../sparsify/virt-sparsify.pod:39 ../sparsify/virt-sparsify.pod:43 ../sparsify/virt-sparsify.pod:49 ../sparsify/virt-sparsify.pod:54 ../sparsify/virt-sparsify.pod:58 ../sparsify/virt-sparsify.pod:64 ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:29 ../src/guestfs-actions.pod:641 ../src/guestfs-actions.pod:649 ../src/guestfs-actions.pod:656 ../src/guestfs-actions.pod:663 ../src/guestfs-actions.pod:2079 ../src/guestfs-actions.pod:2083 ../src/guestfs-actions.pod:2087 ../src/guestfs-actions.pod:2091 ../src/guestfs-actions.pod:2099 ../src/guestfs-actions.pod:2103 ../src/guestfs-actions.pod:2107 ../src/guestfs-actions.pod:2117 ../src/guestfs-actions.pod:2121 ../src/guestfs-actions.pod:2125 ../src/guestfs-actions.pod:2263 ../src/guestfs-actions.pod:2267 ../src/guestfs-actions.pod:2272 ../src/guestfs-actions.pod:2277 ../src/guestfs-actions.pod:2338 ../src/guestfs-actions.pod:2342 ../src/guestfs-actions.pod:2347 ../src/guestfs-actions.pod:2762 ../src/guestfs-actions.pod:2769 ../src/guestfs-actions.pod:2776 ../src/guestfs-actions.pod:3321 ../src/guestfs-actions.pod:3327 ../src/guestfs-actions.pod:3335 ../src/guestfs-actions.pod:3342 ../src/guestfs-actions.pod:3349 ../src/guestfs.pod:403 ../src/guestfs.pod:408 ../src/guestfs.pod:413 ../src/guestfs.pod:417 ../src/guestfs.pod:422 ../src/guestfs.pod:426 ../src/guestfs.pod:431 ../src/guestfs.pod:436 ../src/guestfs.pod:1109 ../src/guestfs.pod:1113 ../src/guestfs.pod:1117 ../src/guestfs.pod:1122 ../src/guestfs.pod:1130 ../src/guestfs.pod:1149 ../src/guestfs.pod:1157 ../src/guestfs.pod:1179 ../src/guestfs.pod:1183 ../src/guestfs.pod:1187 ../src/guestfs.pod:1191 ../src/guestfs.pod:1195 ../src/guestfs.pod:1199 ../src/guestfs.pod:1689 ../src/guestfs.pod:1694 ../src/guestfs.pod:1698 ../src/guestfs.pod:1800 ../src/guestfs.pod:1805 ../src/guestfs.pod:1809 ../src/guestfs.pod:1819 ../src/guestfs.pod:2108 ../src/guestfs.pod:2113 ../src/guestfs.pod:2119 ../src/guestfs.pod:2127 ../src/guestfs.pod:2645 ../src/guestfs.pod:2651 ../src/guestfs.pod:2656 ../src/guestfs.pod:2662 ../src/guestfs.pod:3062 ../src/guestfs.pod:3067 ../src/guestfs.pod:3071 ../src/guestfs.pod:3075 ../src/guestfs.pod:3079 ../src/guestfs.pod:3093 ../src/guestfs.pod:3098 ../src/guestfs.pod:3330 ../src/guestfs.pod:3334 ../src/guestfs.pod:3338 ../src/guestfs.pod:3342 ../tools/virt-win-reg.pl:197 ../tools/virt-win-reg.pl:202 ../tools/virt-win-reg.pl:208 ../tools/virt-win-reg.pl:721 ../tools/virt-win-reg.pl:727 ../tools/virt-win-reg.pl:733
 msgid "*"
 msgstr ""
 
@@ -746,7 +746,7 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../align/virt-alignment-scan.pod:352 ../cat/virt-cat.pod:243 ../cat/virt-filesystems.pod:385 ../cat/virt-ls.pod:495 ../clone/virt-sysprep.pod:486 ../df/virt-df.pod:227 ../edit/virt-edit.pod:354 ../erlang/examples/guestfs-erlang.pod:97 ../examples/guestfs-examples.pod:33 ../examples/guestfs-recipes.pod:384 ../fish/guestfish.pod:1268 ../fish/virt-copy-in.pod:50 ../fish/virt-copy-out.pod:39 ../fish/virt-tar-in.pod:47 ../fish/virt-tar-out.pod:41 ../fuse/guestmount.pod:317 ../inspector/virt-inspector.pod:395 ../java/examples/guestfs-java.pod:45 ../ocaml/examples/guestfs-ocaml.pod:78 ../perl/examples/guestfs-perl.pod:39 ../python/examples/guestfs-python.pod:42 ../rescue/virt-rescue.pod:288 ../resize/virt-resize.pod:688 ../ruby/examples/guestfs-ruby.pod:36 ../sparsify/virt-sparsify.pod:251 ../src/guestfs.pod:3270 ../test-tool/libguestfs-test-tool.pod:100 ../tools/virt-list-filesystems.pl:195 ../tools/virt-list-partitions.pl:265 ../tools/virt-make-fs.pl:557 ../tools/virt-tar.pl:296 ../tools/virt-win-reg.pl:757
+#: ../align/virt-alignment-scan.pod:352 ../cat/virt-cat.pod:243 ../cat/virt-filesystems.pod:385 ../cat/virt-ls.pod:495 ../clone/virt-sysprep.pod:486 ../df/virt-df.pod:253 ../edit/virt-edit.pod:354 ../erlang/examples/guestfs-erlang.pod:97 ../examples/guestfs-examples.pod:33 ../examples/guestfs-recipes.pod:384 ../examples/guestfs-testing.pod:291 ../fish/guestfish.pod:1268 ../fish/virt-copy-in.pod:50 ../fish/virt-copy-out.pod:39 ../fish/virt-tar-in.pod:47 ../fish/virt-tar-out.pod:41 ../fuse/guestmount.pod:317 ../inspector/virt-inspector.pod:395 ../java/examples/guestfs-java.pod:45 ../ocaml/examples/guestfs-ocaml.pod:78 ../perl/examples/guestfs-perl.pod:39 ../python/examples/guestfs-python.pod:42 ../rescue/virt-rescue.pod:288 ../resize/virt-resize.pod:688 ../ruby/examples/guestfs-ruby.pod:36 ../sparsify/virt-sparsify.pod:250 ../src/guestfs.pod:3270 ../test-tool/libguestfs-test-tool.pod:100 ../tools/virt-list-filesystems.pl:195 ../tools/virt-list-partitions.pl:265 ../tools/virt-make-fs.pl:557 ../tools/virt-tar.pl:296 ../tools/virt-win-reg.pl:757
 msgid "SEE ALSO"
 msgstr ""
 
@@ -758,27 +758,27 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../align/virt-alignment-scan.pod:361 ../cat/virt-cat.pod:252 ../cat/virt-filesystems.pod:396 ../cat/virt-ls.pod:507 ../clone/virt-sysprep.pod:501 ../df/virt-df.pod:235 ../edit/virt-edit.pod:368 ../rescue/virt-rescue.pod:296 ../resize/virt-resize.pod:711 ../sparsify/virt-sparsify.pod:264 ../tools/virt-list-filesystems.pl:208 ../tools/virt-list-partitions.pl:277 ../tools/virt-make-fs.pl:582 ../tools/virt-tar.pl:311 ../tools/virt-win-reg.pl:783
+#: ../align/virt-alignment-scan.pod:361 ../cat/virt-cat.pod:252 ../cat/virt-filesystems.pod:396 ../cat/virt-ls.pod:507 ../clone/virt-sysprep.pod:501 ../df/virt-df.pod:261 ../edit/virt-edit.pod:368 ../rescue/virt-rescue.pod:296 ../resize/virt-resize.pod:711 ../sparsify/virt-sparsify.pod:263 ../tools/virt-list-filesystems.pl:208 ../tools/virt-list-partitions.pl:277 ../tools/virt-make-fs.pl:582 ../tools/virt-tar.pl:311 ../tools/virt-win-reg.pl:783
 msgid "AUTHOR"
 msgstr ""
 
 #. type: textblock
-#: ../align/virt-alignment-scan.pod:363 ../cat/virt-cat.pod:254 ../cat/virt-filesystems.pod:398 ../cat/virt-ls.pod:509 ../clone/virt-sysprep.pod:503 ../df/virt-df.pod:237 ../edit/virt-edit.pod:370 ../inspector/virt-inspector.pod:410 ../rescue/virt-rescue.pod:298 ../resize/virt-resize.pod:713 ../sparsify/virt-sparsify.pod:266 ../tools/virt-list-filesystems.pl:210 ../tools/virt-list-partitions.pl:279 ../tools/virt-make-fs.pl:584 ../tools/virt-tar.pl:313 ../tools/virt-win-reg.pl:785
+#: ../align/virt-alignment-scan.pod:363 ../cat/virt-cat.pod:254 ../cat/virt-filesystems.pod:398 ../cat/virt-ls.pod:509 ../clone/virt-sysprep.pod:503 ../df/virt-df.pod:263 ../edit/virt-edit.pod:370 ../inspector/virt-inspector.pod:410 ../rescue/virt-rescue.pod:298 ../resize/virt-resize.pod:713 ../sparsify/virt-sparsify.pod:265 ../tools/virt-list-filesystems.pl:210 ../tools/virt-list-partitions.pl:279 ../tools/virt-make-fs.pl:584 ../tools/virt-tar.pl:313 ../tools/virt-win-reg.pl:785
 msgid "Richard W.M. Jones L<http://people.redhat.com/~rjones/>"
 msgstr ""
 
 #. type: =head1
-#: ../align/virt-alignment-scan.pod:365 ../cat/virt-cat.pod:256 ../cat/virt-filesystems.pod:400 ../cat/virt-ls.pod:511 ../clone/virt-sysprep.pod:505 ../df/virt-df.pod:239 ../edit/virt-edit.pod:372 ../erlang/examples/guestfs-erlang.pod:114 ../examples/guestfs-examples.pod:49 ../examples/guestfs-recipes.pod:401 ../fish/guestfish.pod:1300 ../fish/virt-copy-in.pod:64 ../fish/virt-copy-out.pod:53 ../fish/virt-tar-in.pod:62 ../fish/virt-tar-out.pod:55 ../fuse/guestmount.pod:332 ../inspector/virt-inspector.pod:418 ../java/examples/guestfs-java.pod:62 ../ocaml/examples/guestfs-ocaml.pod:95 ../perl/examples/guestfs-perl.pod:56 ../python/examples/guestfs-python.pod:58 ../rescue/virt-rescue.pod:300 ../resize/virt-resize.pod:715 ../ruby/examples/guestfs-ruby.pod:52 ../sparsify/virt-sparsify.pod:268 ../src/guestfs.pod:3352 ../test-tool/libguestfs-test-tool.pod:110 ../tools/virt-list-filesystems.pl:212 ../tools/virt-list-partitions.pl:281 ../tools/virt-make-fs.pl:586 ../tools/virt-tar.pl:315 ../tools/virt-win-reg.pl:787
+#: ../align/virt-alignment-scan.pod:365 ../cat/virt-cat.pod:256 ../cat/virt-filesystems.pod:400 ../cat/virt-ls.pod:511 ../clone/virt-sysprep.pod:505 ../df/virt-df.pod:265 ../edit/virt-edit.pod:372 ../erlang/examples/guestfs-erlang.pod:114 ../examples/guestfs-examples.pod:49 ../examples/guestfs-recipes.pod:401 ../examples/guestfs-testing.pod:302 ../fish/guestfish.pod:1300 ../fish/virt-copy-in.pod:64 ../fish/virt-copy-out.pod:53 ../fish/virt-tar-in.pod:62 ../fish/virt-tar-out.pod:55 ../fuse/guestmount.pod:332 ../inspector/virt-inspector.pod:418 ../java/examples/guestfs-java.pod:62 ../ocaml/examples/guestfs-ocaml.pod:95 ../perl/examples/guestfs-perl.pod:56 ../python/examples/guestfs-python.pod:58 ../rescue/virt-rescue.pod:300 ../resize/virt-resize.pod:715 ../ruby/examples/guestfs-ruby.pod:52 ../sparsify/virt-sparsify.pod:267 ../src/guestfs.pod:3353 ../test-tool/libguestfs-test-tool.pod:110 ../tools/virt-list-filesystems.pl:212 ../tools/virt-list-partitions.pl:281 ../tools/virt-make-fs.pl:586 ../tools/virt-tar.pl:315 ../tools/virt-win-reg.pl:787
 msgid "COPYRIGHT"
 msgstr ""
 
 #. type: textblock
-#: ../align/virt-alignment-scan.pod:367 ../clone/virt-sysprep.pod:507 ../sparsify/virt-sparsify.pod:270
+#: ../align/virt-alignment-scan.pod:367 ../clone/virt-sysprep.pod:507 ../sparsify/virt-sparsify.pod:269
 msgid "Copyright (C) 2011 Red Hat Inc."
 msgstr ""
 
 #. type: textblock
-#: ../align/virt-alignment-scan.pod:369 ../cat/virt-cat.pod:260 ../cat/virt-filesystems.pod:404 ../cat/virt-ls.pod:515 ../clone/virt-sysprep.pod:509 ../df/virt-df.pod:243 ../edit/virt-edit.pod:376 ../fish/guestfish.pod:1305 ../fish/virt-copy-in.pod:69 ../fish/virt-copy-out.pod:58 ../fish/virt-tar-in.pod:67 ../fish/virt-tar-out.pod:60 ../fuse/guestmount.pod:337 ../inspector/virt-inspector.pod:422 ../rescue/virt-rescue.pod:304 ../resize/virt-resize.pod:719 ../sparsify/virt-sparsify.pod:272 ../test-tool/libguestfs-test-tool.pod:115 ../tools/virt-list-filesystems.pl:216 ../tools/virt-list-partitions.pl:285 ../tools/virt-make-fs.pl:590 ../tools/virt-tar.pl:319 ../tools/virt-win-reg.pl:791
+#: ../align/virt-alignment-scan.pod:369 ../cat/virt-cat.pod:260 ../cat/virt-filesystems.pod:404 ../cat/virt-ls.pod:515 ../clone/virt-sysprep.pod:509 ../df/virt-df.pod:269 ../edit/virt-edit.pod:376 ../fish/guestfish.pod:1305 ../fish/virt-copy-in.pod:69 ../fish/virt-copy-out.pod:58 ../fish/virt-tar-in.pod:67 ../fish/virt-tar-out.pod:60 ../fuse/guestmount.pod:337 ../inspector/virt-inspector.pod:422 ../rescue/virt-rescue.pod:304 ../resize/virt-resize.pod:719 ../sparsify/virt-sparsify.pod:271 ../test-tool/libguestfs-test-tool.pod:115 ../tools/virt-list-filesystems.pl:216 ../tools/virt-list-partitions.pl:285 ../tools/virt-make-fs.pl:590 ../tools/virt-tar.pl:319 ../tools/virt-win-reg.pl:791
 msgid ""
 "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 "
@@ -787,7 +787,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../align/virt-alignment-scan.pod:374 ../cat/virt-cat.pod:265 ../cat/virt-filesystems.pod:409 ../cat/virt-ls.pod:520 ../clone/virt-sysprep.pod:514 ../df/virt-df.pod:248 ../edit/virt-edit.pod:381 ../fish/guestfish.pod:1310 ../fish/virt-copy-in.pod:74 ../fish/virt-copy-out.pod:63 ../fish/virt-tar-in.pod:72 ../fish/virt-tar-out.pod:65 ../fuse/guestmount.pod:342 ../inspector/virt-inspector.pod:427 ../rescue/virt-rescue.pod:309 ../resize/virt-resize.pod:724 ../sparsify/virt-sparsify.pod:277 ../test-tool/libguestfs-test-tool.pod:120 ../tools/virt-list-filesystems.pl:221 ../tools/virt-list-partitions.pl:290 ../tools/virt-make-fs.pl:595 ../tools/virt-tar.pl:324 ../tools/virt-win-reg.pl:796
+#: ../align/virt-alignment-scan.pod:374 ../cat/virt-cat.pod:265 ../cat/virt-filesystems.pod:409 ../cat/virt-ls.pod:520 ../clone/virt-sysprep.pod:514 ../df/virt-df.pod:274 ../edit/virt-edit.pod:381 ../fish/guestfish.pod:1310 ../fish/virt-copy-in.pod:74 ../fish/virt-copy-out.pod:63 ../fish/virt-tar-in.pod:72 ../fish/virt-tar-out.pod:65 ../fuse/guestmount.pod:342 ../inspector/virt-inspector.pod:427 ../rescue/virt-rescue.pod:309 ../resize/virt-resize.pod:724 ../sparsify/virt-sparsify.pod:276 ../test-tool/libguestfs-test-tool.pod:120 ../tools/virt-list-filesystems.pl:221 ../tools/virt-list-partitions.pl:290 ../tools/virt-make-fs.pl:595 ../tools/virt-tar.pl:324 ../tools/virt-win-reg.pl:796
 msgid ""
 "This program is distributed in the hope that it will be useful, but WITHOUT "
 "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
@@ -796,7 +796,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../align/virt-alignment-scan.pod:379 ../cat/virt-cat.pod:270 ../cat/virt-filesystems.pod:414 ../cat/virt-ls.pod:525 ../clone/virt-sysprep.pod:519 ../df/virt-df.pod:253 ../edit/virt-edit.pod:386 ../fish/guestfish.pod:1315 ../fish/virt-copy-in.pod:79 ../fish/virt-copy-out.pod:68 ../fish/virt-tar-in.pod:77 ../fish/virt-tar-out.pod:70 ../fuse/guestmount.pod:347 ../inspector/virt-inspector.pod:432 ../rescue/virt-rescue.pod:314 ../resize/virt-resize.pod:729 ../sparsify/virt-sparsify.pod:282 ../test-tool/libguestfs-test-tool.pod:125 ../tools/virt-list-filesystems.pl:226 ../tools/virt-list-partitions.pl:295 ../tools/virt-make-fs.pl:600 ../tools/virt-tar.pl:329 ../tools/virt-win-reg.pl:801
+#: ../align/virt-alignment-scan.pod:379 ../cat/virt-cat.pod:270 ../cat/virt-filesystems.pod:414 ../cat/virt-ls.pod:525 ../clone/virt-sysprep.pod:519 ../df/virt-df.pod:279 ../edit/virt-edit.pod:386 ../fish/guestfish.pod:1315 ../fish/virt-copy-in.pod:79 ../fish/virt-copy-out.pod:68 ../fish/virt-tar-in.pod:77 ../fish/virt-tar-out.pod:70 ../fuse/guestmount.pod:347 ../inspector/virt-inspector.pod:432 ../rescue/virt-rescue.pod:314 ../resize/virt-resize.pod:729 ../sparsify/virt-sparsify.pod:281 ../test-tool/libguestfs-test-tool.pod:125 ../tools/virt-list-filesystems.pl:226 ../tools/virt-list-partitions.pl:295 ../tools/virt-make-fs.pl:600 ../tools/virt-tar.pl:329 ../tools/virt-win-reg.pl:801
 msgid ""
 "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 "
@@ -1157,7 +1157,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-cat.pod:240 ../cat/virt-filesystems.pod:382 ../cat/virt-ls.pod:492 ../df/virt-df.pod:224 ../edit/virt-edit.pod:351 ../fuse/guestmount.pod:314 ../inspector/virt-inspector.pod:392 ../resize/virt-resize.pod:685 ../sparsify/virt-sparsify.pod:229
+#: ../cat/virt-cat.pod:240 ../cat/virt-filesystems.pod:382 ../cat/virt-ls.pod:492 ../df/virt-df.pod:250 ../edit/virt-edit.pod:351 ../fuse/guestmount.pod:314 ../inspector/virt-inspector.pod:392 ../resize/virt-resize.pod:685 ../sparsify/virt-sparsify.pod:228
 msgid "This program returns 0 if successful, or non-zero if there was an error."
 msgstr ""
 
@@ -1757,26 +1757,26 @@ msgid "The UUID is only displayed if the I<--uuid> option is given."
 msgstr ""
 
 #. type: =head1
-#: ../cat/virt-filesystems.pod:349 ../cat/virt-ls.pod:459 ../df/virt-df.pod:191
+#: ../cat/virt-filesystems.pod:349 ../cat/virt-ls.pod:459 ../df/virt-df.pod:217
 msgid "NOTE ABOUT CSV FORMAT"
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-filesystems.pod:351 ../cat/virt-ls.pod:461 ../df/virt-df.pod:193
+#: ../cat/virt-filesystems.pod:351 ../cat/virt-ls.pod:461 ../df/virt-df.pod:219
 msgid ""
 "Comma-separated values (CSV) is a deceptive format.  It I<seems> like it "
 "should be easy to parse, but it is definitely not easy to parse."
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-filesystems.pod:354 ../cat/virt-ls.pod:464 ../df/virt-df.pod:196
+#: ../cat/virt-filesystems.pod:354 ../cat/virt-ls.pod:464 ../df/virt-df.pod:222
 msgid ""
 "Myth: Just split fields at commas.  Reality: This does I<not> work "
 "reliably.  This example has two columns:"
 msgstr ""
 
 #. type: verbatim
-#: ../cat/virt-filesystems.pod:357 ../cat/virt-ls.pod:467 ../df/virt-df.pod:199
+#: ../cat/virt-filesystems.pod:357 ../cat/virt-ls.pod:467 ../df/virt-df.pod:225
 #, no-wrap
 msgid ""
 " \"foo,bar\",baz\n"
@@ -1784,14 +1784,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-filesystems.pod:359 ../cat/virt-ls.pod:469 ../df/virt-df.pod:201
+#: ../cat/virt-filesystems.pod:359 ../cat/virt-ls.pod:469 ../df/virt-df.pod:227
 msgid ""
 "Myth: Read the file one line at a time.  Reality: This does I<not> work "
 "reliably.  This example has one row:"
 msgstr ""
 
 #. type: verbatim
-#: ../cat/virt-filesystems.pod:362 ../cat/virt-ls.pod:472 ../df/virt-df.pod:204
+#: ../cat/virt-filesystems.pod:362 ../cat/virt-ls.pod:472 ../df/virt-df.pod:230
 #, no-wrap
 msgid ""
 " \"foo\n"
@@ -1800,21 +1800,21 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-filesystems.pod:365 ../cat/virt-ls.pod:475 ../df/virt-df.pod:207
+#: ../cat/virt-filesystems.pod:365 ../cat/virt-ls.pod:475 ../df/virt-df.pod:233
 msgid ""
 "For shell scripts, use C<csvtool> (L<http://merjis.com/developers/csv> also "
 "packaged in major Linux distributions)."
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-filesystems.pod:368 ../cat/virt-ls.pod:478 ../df/virt-df.pod:210
+#: ../cat/virt-filesystems.pod:368 ../cat/virt-ls.pod:478 ../df/virt-df.pod:236
 msgid ""
 "For other languages, use a CSV processing library (eg. C<Text::CSV> for Perl "
 "or Python's built-in csv library)."
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-filesystems.pod:371 ../cat/virt-ls.pod:481 ../df/virt-df.pod:213
+#: ../cat/virt-filesystems.pod:371 ../cat/virt-ls.pod:481 ../df/virt-df.pod:239
 msgid "Most spreadsheets and databases can import CSV directly."
 msgstr ""
 
@@ -1917,7 +1917,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:41
+#: ../cat/virt-ls.pod:41 ../examples/guestfs-testing.pod:182
 msgid "List all setuid or setgid programs in a Linux virtual machine:"
 msgstr ""
 
@@ -1930,7 +1930,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:45
+#: ../cat/virt-ls.pod:45 ../examples/guestfs-testing.pod:186
 msgid "List all public-writable directories in a Linux virtual machine:"
 msgstr ""
 
@@ -1943,7 +1943,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:49
+#: ../cat/virt-ls.pod:49 ../examples/guestfs-testing.pod:190
 msgid "List all Unix domain sockets in a Linux virtual machine:"
 msgstr ""
 
@@ -1956,7 +1956,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:53
+#: ../cat/virt-ls.pod:53 ../examples/guestfs-testing.pod:194
 msgid "List all regular files with filenames ending in '.png':"
 msgstr ""
 
@@ -1982,7 +1982,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:61
+#: ../cat/virt-ls.pod:61 ../examples/guestfs-testing.pod:202
 msgid "Find everything modified in the last 7 days:"
 msgstr ""
 
@@ -1995,7 +1995,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:65
+#: ../cat/virt-ls.pod:65 ../examples/guestfs-testing.pod:206
 msgid "Find regular files modified in the last 24 hours:"
 msgstr ""
 
@@ -2578,7 +2578,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:513 ../df/virt-df.pod:241 ../edit/virt-edit.pod:374 ../rescue/virt-rescue.pod:302
+#: ../cat/virt-ls.pod:513 ../df/virt-df.pod:267 ../edit/virt-edit.pod:374 ../rescue/virt-rescue.pod:302
 msgid "Copyright (C) 2009-2011 Red Hat Inc."
 msgstr ""
 
@@ -3588,8 +3588,57 @@ msgid ""
 "specified."
 msgstr ""
 
+#. type: =head1
+#: ../df/virt-df.pod:191
+msgid "STATVFS NUMBERS"
+msgstr ""
+
+#. type: textblock
+#: ../df/virt-df.pod:193
+msgid ""
+"C<virt-df> (and L<df(1)>) get information by issuing a L<statvfs(3)> system "
+"call.  You can get the same information directly, either from the host "
+"(using libguestfs) or inside the guest:"
+msgstr ""
+
+#. type: =item
+#: ../df/virt-df.pod:199
+msgid "From the host"
+msgstr ""
+
+#. type: textblock
+#: ../df/virt-df.pod:201 ../df/virt-df.pod:209
+msgid "Run this command:"
+msgstr ""
+
+#. type: verbatim
+#: ../df/virt-df.pod:203
+#, no-wrap
+msgid ""
+" guestfish --ro -d GuestName -i statvfs /\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../df/virt-df.pod:205 ../df/virt-df.pod:213
+msgid "(change C</> to see stats for other filesystems)."
+msgstr ""
+
+#. type: =item
+#: ../df/virt-df.pod:207
+msgid "From inside the guest"
+msgstr ""
+
+#. type: verbatim
+#: ../df/virt-df.pod:211
+#, no-wrap
+msgid ""
+" python -c 'import os; s = os.statvfs (\"/\"); print s'\n"
+"\n"
+msgstr ""
+
 #. type: textblock
-#: ../df/virt-df.pod:229
+#: ../df/virt-df.pod:255
 msgid ""
 "L<df(1)>, L<guestfs(3)>, L<guestfish(1)>, L<virt-filesystems(1)>, "
 "L<http://libguestfs.org/>."
@@ -4100,7 +4149,7 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../edit/virt-edit.pod:329 ../fish/guestfish.pod:1119 ../rescue/virt-rescue.pod:261 ../sparsify/virt-sparsify.pod:232 ../src/guestfs.pod:3209 ../test-tool/libguestfs-test-tool.pod:95
+#: ../edit/virt-edit.pod:329 ../fish/guestfish.pod:1119 ../rescue/virt-rescue.pod:261 ../sparsify/virt-sparsify.pod:231 ../src/guestfs.pod:3209 ../test-tool/libguestfs-test-tool.pod:95
 msgid "ENVIRONMENT VARIABLES"
 msgstr ""
 
@@ -4343,17 +4392,17 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../erlang/examples/guestfs-erlang.pod:110 ../examples/guestfs-examples.pod:45 ../examples/guestfs-recipes.pod:397 ../fish/guestfish.pod:1296 ../fish/virt-copy-in.pod:60 ../fish/virt-copy-out.pod:49 ../fish/virt-tar-in.pod:58 ../fish/virt-tar-out.pod:51 ../fuse/guestmount.pod:328 ../inspector/virt-inspector.pod:404 ../java/examples/guestfs-java.pod:58 ../ocaml/examples/guestfs-ocaml.pod:91 ../perl/examples/guestfs-perl.pod:52 ../python/examples/guestfs-python.pod:54 ../ruby/examples/guestfs-ruby.pod:48 ../src/guestfs.pod:3348 ../test-tool/libguestfs-test-tool.pod:106
+#: ../erlang/examples/guestfs-erlang.pod:110 ../examples/guestfs-examples.pod:45 ../examples/guestfs-recipes.pod:397 ../examples/guestfs-testing.pod:298 ../fish/guestfish.pod:1296 ../fish/virt-copy-in.pod:60 ../fish/virt-copy-out.pod:49 ../fish/virt-tar-in.pod:58 ../fish/virt-tar-out.pod:51 ../fuse/guestmount.pod:328 ../inspector/virt-inspector.pod:404 ../java/examples/guestfs-java.pod:58 ../ocaml/examples/guestfs-ocaml.pod:91 ../perl/examples/guestfs-perl.pod:52 ../python/examples/guestfs-python.pod:54 ../ruby/examples/guestfs-ruby.pod:48 ../src/guestfs.pod:3349 ../test-tool/libguestfs-test-tool.pod:106
 msgid "AUTHORS"
 msgstr ""
 
 #. type: textblock
-#: ../erlang/examples/guestfs-erlang.pod:112 ../examples/guestfs-examples.pod:47 ../examples/guestfs-recipes.pod:399 ../fish/guestfish.pod:1298 ../fish/virt-copy-in.pod:62 ../fish/virt-copy-out.pod:51 ../fish/virt-tar-in.pod:60 ../fish/virt-tar-out.pod:53 ../fuse/guestmount.pod:330 ../java/examples/guestfs-java.pod:60 ../ocaml/examples/guestfs-ocaml.pod:93 ../perl/examples/guestfs-perl.pod:54 ../python/examples/guestfs-python.pod:56 ../ruby/examples/guestfs-ruby.pod:50 ../src/guestfs.pod:3350 ../test-tool/libguestfs-test-tool.pod:108
+#: ../erlang/examples/guestfs-erlang.pod:112 ../examples/guestfs-examples.pod:47 ../examples/guestfs-recipes.pod:399 ../examples/guestfs-testing.pod:300 ../fish/guestfish.pod:1298 ../fish/virt-copy-in.pod:62 ../fish/virt-copy-out.pod:51 ../fish/virt-tar-in.pod:60 ../fish/virt-tar-out.pod:53 ../fuse/guestmount.pod:330 ../java/examples/guestfs-java.pod:60 ../ocaml/examples/guestfs-ocaml.pod:93 ../perl/examples/guestfs-perl.pod:54 ../python/examples/guestfs-python.pod:56 ../ruby/examples/guestfs-ruby.pod:50 ../src/guestfs.pod:3351 ../test-tool/libguestfs-test-tool.pod:108
 msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
 msgstr ""
 
 #. type: textblock
-#: ../erlang/examples/guestfs-erlang.pod:116 ../java/examples/guestfs-java.pod:64 ../perl/examples/guestfs-perl.pod:58
+#: ../erlang/examples/guestfs-erlang.pod:116 ../examples/guestfs-testing.pod:304 ../java/examples/guestfs-java.pod:64 ../perl/examples/guestfs-perl.pod:58
 msgid "Copyright (C) 2011 Red Hat Inc. L<http://libguestfs.org/>"
 msgstr ""
 
@@ -4365,7 +4414,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../erlang/examples/guestfs-erlang.pod:121 ../examples/guestfs-examples.pod:56 ../examples/guestfs-recipes.pod:408 ../java/examples/guestfs-java.pod:69 ../ocaml/examples/guestfs-ocaml.pod:102 ../perl/examples/guestfs-perl.pod:63 ../python/examples/guestfs-python.pod:65 ../ruby/examples/guestfs-ruby.pod:59 ../src/guestfs.pod:3357
+#: ../erlang/examples/guestfs-erlang.pod:121 ../examples/guestfs-examples.pod:56 ../examples/guestfs-recipes.pod:408 ../examples/guestfs-testing.pod:306 ../java/examples/guestfs-java.pod:69 ../ocaml/examples/guestfs-ocaml.pod:102 ../perl/examples/guestfs-perl.pod:63 ../python/examples/guestfs-python.pod:65 ../ruby/examples/guestfs-ruby.pod:59 ../src/guestfs.pod:3358
 msgid ""
 "This library is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -4374,7 +4423,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../erlang/examples/guestfs-erlang.pod:126 ../examples/guestfs-examples.pod:61 ../examples/guestfs-recipes.pod:413 ../java/examples/guestfs-java.pod:74 ../ocaml/examples/guestfs-ocaml.pod:107 ../perl/examples/guestfs-perl.pod:68 ../python/examples/guestfs-python.pod:70 ../ruby/examples/guestfs-ruby.pod:64 ../src/guestfs.pod:3362
+#: ../erlang/examples/guestfs-erlang.pod:126 ../examples/guestfs-examples.pod:61 ../examples/guestfs-recipes.pod:413 ../examples/guestfs-testing.pod:311 ../java/examples/guestfs-java.pod:74 ../ocaml/examples/guestfs-ocaml.pod:107 ../perl/examples/guestfs-perl.pod:68 ../python/examples/guestfs-python.pod:70 ../ruby/examples/guestfs-ruby.pod:64 ../src/guestfs.pod:3363
 msgid ""
 "This library is distributed in the hope that it will be useful, but WITHOUT "
 "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
@@ -4383,7 +4432,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../erlang/examples/guestfs-erlang.pod:131 ../examples/guestfs-examples.pod:66 ../examples/guestfs-recipes.pod:418 ../java/examples/guestfs-java.pod:79 ../ocaml/examples/guestfs-ocaml.pod:112 ../perl/examples/guestfs-perl.pod:73 ../python/examples/guestfs-python.pod:75 ../ruby/examples/guestfs-ruby.pod:69 ../src/guestfs.pod:3367
+#: ../erlang/examples/guestfs-erlang.pod:131 ../examples/guestfs-examples.pod:66 ../examples/guestfs-recipes.pod:418 ../examples/guestfs-testing.pod:316 ../java/examples/guestfs-java.pod:79 ../ocaml/examples/guestfs-ocaml.pod:112 ../perl/examples/guestfs-perl.pod:73 ../python/examples/guestfs-python.pod:75 ../ruby/examples/guestfs-ruby.pod:69 ../src/guestfs.pod:3368
 msgid ""
 "You should have received a copy of the GNU Lesser General Public License "
 "along with this library; if not, write to the Free Software Foundation, "
@@ -4710,7 +4759,7 @@ msgid "To export C</home> from a VM into a local directory use L<virt-copy-out(1
 msgstr ""
 
 #. type: verbatim
-#: ../examples/guestfs-recipes.pod:126
+#: ../examples/guestfs-recipes.pod:126 ../examples/guestfs-testing.pod:93
 #, no-wrap
 msgid ""
 " virt-copy-out -d Guest /home .\n"
@@ -5256,6 +5305,706 @@ msgstr ""
 msgid "Copyright (C) 2009-2011 Red Hat Inc. L<http://libguestfs.org/>"
 msgstr ""
 
+#. type: textblock
+#: ../examples/guestfs-testing.pod:5
+msgid "guestfs-testing - manual testing of libguestfs, you can help!"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:9
+msgid ""
+"This page has manual tests you can try on libguestfs.  Everyone has a "
+"slightly different combination of platform, hardware and guests, so this "
+"testing is very valuable.  Thanks for helping out!"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:13
+msgid "These tests require libguestfs E<ge> 1.14."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:15
+msgid ""
+"Tests marked with a B<*> (asterisk) can B<destroy data> if you're not "
+"careful.  The others are safe and won't modify anything."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:18
+msgid "You can report bugs you find through this link:"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:20
+msgid "https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:22
+msgid ""
+"or post on the mailing list (registration is B<not> required, but if you're "
+"not registered then you'll have to wait for a moderator to manually approve "
+"your message):"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:26
+msgid "https://www.redhat.com/mailman/listinfo/libguestfs"
+msgstr ""
+
+#. type: =head1
+#: ../examples/guestfs-testing.pod:28
+msgid "TESTS"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:30
+msgid "Check KVM acceleration is being used."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:32
+msgid ""
+"If your host has hardware virt acceleration, then with a hot cache "
+"libguestfs should be able to start up in a few seconds.  Run the following "
+"command a few times:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:36
+#, no-wrap
+msgid ""
+" time guestfish -a /dev/null run\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:38
+msgid ""
+"After a few runs, the time should settle down to a few seconds (under 5 "
+"seconds on fast 64 bit hardware)."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:41
+msgid "How to check for hardware virt:"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:43
+msgid "http://virt-tools.org/learning/check-hardware-virt/"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:45
+msgid "If the command above does not work at all, use L<libguestfs-test-tool(1)>."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:48
+msgid "Run virt-alignment-scan on all your guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:50
+msgid "Run L<virt-alignment-scan(1)> on guests or disk images:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:52
+#, no-wrap
+msgid ""
+" virt-alignment-scan -a /path/to/disk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:54 ../examples/guestfs-testing.pod:161 ../examples/guestfs-testing.pod:174 ../examples/guestfs-testing.pod:234 ../src/guestfs.pod:2792
+msgid "or:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:56
+#, no-wrap
+msgid ""
+" virt-alignment-scan -d Guest\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:58
+msgid "Does the alignment report match how the guest partitions are aligned?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:60
+msgid "Run virt-cat on some files in guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:62
+msgid "L<virt-cat(1)> can display files from guests.  For a Linux guest, try:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:64
+#, no-wrap
+msgid ""
+" virt-cat LinuxGuest /etc/passwd\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:66
+msgid "A recent feature is support for Windows paths, for example:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:68
+#, no-wrap
+msgid ""
+" virt-cat WindowsGuest 'c:\\windows\\win.ini'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:70
+msgid ""
+"An even better test is if you have a Windows guest with multiple drives.  Do "
+"C<D:>, C<E:> etc paths work correctly?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:73
+msgid "B<*> Copy some files into a B<shut off> guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:75
+msgid ""
+"L<virt-copy-in(1)> can recursively copy files and directories into a guest "
+"or disk image."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:78
+#, no-wrap
+msgid ""
+" virt-copy-in -d Guest /etc /tmp\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:80
+msgid ""
+"This should copy local directory C</etc> to C</tmp/etc> in the guest "
+"(recursively).  If you boot the guest, can you see all of the copied files "
+"and directories?"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:84
+msgid "Shut the guest down and try copying multiple files and directories:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:86
+#, no-wrap
+msgid ""
+" virt-copy-in -d Guest /home /etc/issue /tmp\n"
+"\n"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:88
+msgid "Copy some files out of a guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:90
+msgid ""
+"L<virt-copy-out(1)> can recursively copy files and directories out of a "
+"guest or disk image."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:95
+msgid "Note the final space and period in the command is not a typo."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:97
+msgid "This should copy C</home> from the guest into the current directory."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:99
+msgid "Run virt-df."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:101
+msgid "L<virt-df(1)> lists disk space.  Run:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:103
+#, no-wrap
+msgid ""
+" virt-df\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:105
+msgid ""
+"You can try comparing this to the results from L<df(1)> inside the guest, "
+"but there are some provisos:"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:112
+msgid "The guest must be idle."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:116
+msgid "The guest disks must be synched using L<sync(1)>."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:120
+msgid ""
+"Any action such as booting the guest will write log files causing the "
+"numbers to change."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:125
+msgid ""
+"We don't guarantee that the numbers will be identical even under these "
+"circumstances.  They should be similar.  It would indicate a bug if you saw "
+"greatly differing numbers."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:129
+msgid "Try importing virt-df CSV output into a spreadsheet or database."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:131 ../src/guestfs.pod:3083
+msgid "Run:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:133
+#, no-wrap
+msgid ""
+" virt-df --csv > /tmp/report.csv\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:135
+msgid ""
+"Now try to load this into your favorite spreadsheet or database.  Are the "
+"results reproduced faithfully in the spreadsheet/database?"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:138
+msgid ""
+"http://www.postgresql.org/docs/8.1/static/sql-copy.html "
+"http://dev.mysql.com/doc/refman/5.1/en/load-data.html"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:141
+msgid "B<*> Edit a file in a B<shut off> guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:143
+msgid ""
+"L<virt-edit(1)> can edit files in guests.  Try this command on a RHEL or "
+"Fedora guest:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:146
+#, no-wrap
+msgid ""
+" virt-edit LinuxGuest /etc/sysconfig/network\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:148
+msgid "On other Linux guests try editing other files such as:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:150
+#, no-wrap
+msgid ""
+" virt-edit LinuxGuest /etc/motd\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:152
+msgid "Are the changes seen inside the guest when it is booted?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:154
+msgid "Display the filesystems / partitions / LVs in a guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:156
+msgid ""
+"L<virt-filesystems(1)> can be used to display filesystems in a guest.  Try "
+"this command on any disk image or guest:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:159
+#, no-wrap
+msgid ""
+" virt-filesystems -a /path/to/disk.img --all --long -h\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:163
+#, no-wrap
+msgid ""
+" virt-filesystems -d Guest --all --long -h\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:165
+msgid "Do the results match what is seen in the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:167
+msgid "Run virt-inspector on all your guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:169
+msgid ""
+"Use L<virt-inspector(1)> to get a report on all of your guests or disk "
+"images:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:172
+#, no-wrap
+msgid ""
+" virt-inspector -a /path/to/disk.img | less\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:176
+#, no-wrap
+msgid ""
+" virt-inspector -d Guest | less\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:178
+msgid "Do the results match what is actually in the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:180
+msgid "Try the auditing features of virt-ls on all your guests."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:184
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest / | grep '^- [42]'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:188
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest / | grep '^d ...7'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:192
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest / | grep '^s'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:196
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest / | grep -i '^-.*\\.png$'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:198
+msgid "Display files larger than 10MB in home directories:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:200
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest /home | awk '$3 > 10*1024*1024'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:204
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest --time-days / | awk '$6 <= 7'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:208
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest --time-days / | grep '^-' | awk '$6 < 1'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:210
+msgid "Do the results match what is in the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:212
+msgid "Create a disk image from a tarball."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:214
+msgid ""
+"Use L<virt-make-fs(1)> to create a disk image from any tarball that you "
+"happen to have:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:217
+#, no-wrap
+msgid ""
+" virt-make-fs --partition=mbr --type=vfat /any/tarball.tar.gz output.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:219
+msgid ""
+"Add 'output.img' as a raw disk to an existing guest.  Check the guest can "
+"see the files.  This test is particularly useful if you try it with a "
+"Windows guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:223
+msgid "Try other partitioning schemes, eg. I<--partition=gpt>."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:225
+msgid "Try other filesystem formats, eg. I<--type=ntfs>, I<--type=ext2>."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:227
+msgid "B<*> Run virt-rescue on a B<shut off> disk image or guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:229
+msgid ""
+"Use L<virt-rescue(1)> to examine, rescue or repair a B<shut off> guest or "
+"disk image:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:232
+#, no-wrap
+msgid ""
+" virt-rescue -a /path/to/disk.img\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:236
+#, no-wrap
+msgid ""
+" virt-rescue -d Guest\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:238
+msgid "Can you use ordinary shell commands to examine the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:240
+msgid "B<*> Resize your guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:242
+msgid ""
+"Use L<virt-resize(1)> to give a guest some more disk space.  For example, if "
+"you have a disk image that is smaller than 30G, increase it to 30G by doing:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:246
+#, no-wrap
+msgid ""
+" truncate -s 30G newdisk.img\n"
+" virt-filesystems -a /path/to/olddisk.img --all --long -h\n"
+" virt-resize /path/to/olddisk.img newdisk.img --expand /dev/sda1\n"
+" qemu-kvm -m 1024 -hda newdisk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:251
+msgid "Does the guest still boot? Try expanding other partitions."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:253
+msgid "B<*> Sparsify a guest disk."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:255
+msgid "Using L<virt-sparsify(1)>, make a disk image more sparse:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:257
+#, no-wrap
+msgid ""
+" virt-sparsify /path/to/olddisk.img newdisk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:259
+msgid ""
+"Is C<newdisk.img> still bootable after sparsifying? Is the resulting disk "
+"image smaller (use C<du> to check)?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:262
+msgid "B<*> \"sysprep\" a B<shut off> Linux guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:264
+msgid ""
+"Note that this really will mess up an existing guest, so it's better to "
+"clone the guest before trying this."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:267
+#, no-wrap
+msgid ""
+" virt-sysprep --hostname newhost.example.com -a /path/to/disk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:269
+msgid ""
+"Was the sysprep successful? After booting, what changes were made and were "
+"they successful?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:272
+msgid "Dump the Windows Registry from your Windows guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:274
+msgid ""
+"Use L<virt-win-reg(1)> to dump out the Windows Registry from any Windows "
+"guests that you have."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:277
+#, no-wrap
+msgid ""
+" virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\\Software' |\n"
+"   less\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:280
+#, no-wrap
+msgid ""
+" virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\\System' |\n"
+"   less\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:283
+msgid "Does the output match running C<regedit> inside the guest?"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:285
+msgid ""
+"A recent feature is the ability to dump user registries, so try this, "
+"replacing I<username> with the name of a local user in the guest:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:288
+#, no-wrap
+msgid ""
+" virt-win-reg --unsafe-printable-strings WindowsGuest 'HKEY_USERS\\username' "
+"|\n"
+"   less\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:293
+msgid ""
+"L<guestfs(3)>, L<guestfish(1)>, L<guestfs-examples(3)>, "
+"L<http://libguestfs.org/>."
+msgstr ""
+
 #. type: =head2
 #: ../fish/guestfish-actions.pod:1
 msgid "add-cdrom"
@@ -19994,7 +20743,7 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../fish/guestfish.pod:1196 ../sparsify/virt-sparsify.pod:236 ../src/guestfs.pod:3257
+#: ../fish/guestfish.pod:1196 ../sparsify/virt-sparsify.pod:235 ../src/guestfs.pod:3257
 msgid "TMPDIR"
 msgstr ""
 
@@ -20151,7 +20900,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../fish/guestfish.pod:1302 ../src/guestfs.pod:3354 ../test-tool/libguestfs-test-tool.pod:112
+#: ../fish/guestfish.pod:1302 ../src/guestfs.pod:3355 ../test-tool/libguestfs-test-tool.pod:112
 msgid "Copyright (C) 2009-2011 Red Hat Inc.  L<http://libguestfs.org/>"
 msgstr ""
 
@@ -21032,7 +21781,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../inspector/virt-inspector.pod:111 ../resize/virt-resize.pod:391 ../resize/virt-resize.pod:483 ../sparsify/virt-sparsify.pod:132 ../tools/virt-list-filesystems.pl:101 ../tools/virt-list-partitions.pl:102 ../tools/virt-tar.pl:151 ../tools/virt-win-reg.pl:152
+#: ../inspector/virt-inspector.pod:111 ../resize/virt-resize.pod:391 ../resize/virt-resize.pod:483 ../sparsify/virt-sparsify.pod:131 ../tools/virt-list-filesystems.pl:101 ../tools/virt-list-partitions.pl:102 ../tools/virt-tar.pl:151 ../tools/virt-win-reg.pl:152
 msgid ""
 "If working with untrusted raw-format guest disk images, you should ensure "
 "the format is always specified."
@@ -22218,7 +22967,7 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../resize/virt-resize.pod:31 ../resize/virt-resize.pod:597 ../sparsify/virt-sparsify.pod:203 ../src/guestfs.pod:484 ../src/guestfs.pod:1302 ../src/guestfs.pod:1441 ../src/guestfs.pod:2690
+#: ../resize/virt-resize.pod:31 ../resize/virt-resize.pod:597 ../sparsify/virt-sparsify.pod:202 ../src/guestfs.pod:484 ../src/guestfs.pod:1302 ../src/guestfs.pod:1441 ../src/guestfs.pod:2690
 msgid "1."
 msgstr ""
 
@@ -22256,7 +23005,7 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../resize/virt-resize.pod:44 ../resize/virt-resize.pod:604 ../sparsify/virt-sparsify.pod:210 ../src/guestfs.pod:490 ../src/guestfs.pod:1306 ../src/guestfs.pod:1445 ../src/guestfs.pod:2715
+#: ../resize/virt-resize.pod:44 ../resize/virt-resize.pod:604 ../sparsify/virt-sparsify.pod:209 ../src/guestfs.pod:490 ../src/guestfs.pod:1306 ../src/guestfs.pod:1445 ../src/guestfs.pod:2715
 msgid "2."
 msgstr ""
 
@@ -22277,7 +23026,7 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../resize/virt-resize.pod:52 ../resize/virt-resize.pod:610 ../sparsify/virt-sparsify.pod:216 ../src/guestfs.pod:501 ../src/guestfs.pod:1451
+#: ../resize/virt-resize.pod:52 ../resize/virt-resize.pod:610 ../sparsify/virt-sparsify.pod:215 ../src/guestfs.pod:501 ../src/guestfs.pod:1451
 msgid "3."
 msgstr ""
 
@@ -22902,7 +23651,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:343 ../resize/virt-resize.pod:404 ../resize/virt-resize.pod:531 ../sparsify/virt-sparsify.pod:145
+#: ../resize/virt-resize.pod:343 ../resize/virt-resize.pod:404 ../resize/virt-resize.pod:531 ../sparsify/virt-sparsify.pod:144
 msgid "You can give this option multiple times."
 msgstr ""
 
@@ -22970,12 +23719,12 @@ msgid "Note that you cannot use I<--expand> and I<--shrink> together."
 msgstr ""
 
 #. type: =item
-#: ../resize/virt-resize.pod:386 ../sparsify/virt-sparsify.pod:125 ../tools/virt-list-filesystems.pl:91 ../tools/virt-list-partitions.pl:92 ../tools/virt-tar.pl:141 ../tools/virt-win-reg.pl:142
+#: ../resize/virt-resize.pod:386 ../sparsify/virt-sparsify.pod:124 ../tools/virt-list-filesystems.pl:91 ../tools/virt-list-partitions.pl:92 ../tools/virt-tar.pl:141 ../tools/virt-win-reg.pl:142
 msgid "B<--format> raw"
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:388 ../sparsify/virt-sparsify.pod:129
+#: ../resize/virt-resize.pod:388 ../sparsify/virt-sparsify.pod:128
 msgid ""
 "Specify the format of the input disk image.  If this flag is not given then "
 "it is auto-detected from the image itself."
@@ -23054,12 +23803,12 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../resize/virt-resize.pod:429 ../sparsify/virt-sparsify.pod:147
+#: ../resize/virt-resize.pod:429 ../sparsify/virt-sparsify.pod:146
 msgid "B<--machine-readable>"
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:431 ../sparsify/virt-sparsify.pod:149
+#: ../resize/virt-resize.pod:431 ../sparsify/virt-sparsify.pod:148
 msgid ""
 "This option is used to make the output more machine friendly when being "
 "parsed by other programs.  See L</MACHINE READABLE OUTPUT> below."
@@ -23316,7 +24065,7 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../resize/virt-resize.pod:569 ../sparsify/virt-sparsify.pod:177
+#: ../resize/virt-resize.pod:569 ../sparsify/virt-sparsify.pod:176
 msgid "MACHINE READABLE OUTPUT"
 msgstr ""
 
@@ -23329,7 +24078,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:575 ../sparsify/virt-sparsify.pod:183
+#: ../resize/virt-resize.pod:575 ../sparsify/virt-sparsify.pod:182
 msgid "There are two ways to use this option."
 msgstr ""
 
@@ -23354,33 +24103,33 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:587 ../sparsify/virt-sparsify.pod:193
+#: ../resize/virt-resize.pod:587 ../sparsify/virt-sparsify.pod:192
 msgid ""
 "A list of features is printed, one per line, and the program exits with "
 "status 0."
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:590 ../sparsify/virt-sparsify.pod:196
+#: ../resize/virt-resize.pod:590 ../sparsify/virt-sparsify.pod:195
 msgid ""
 "Secondly use the option in conjunction with other options to make the "
 "regular program output more machine friendly."
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:593 ../sparsify/virt-sparsify.pod:199
+#: ../resize/virt-resize.pod:593 ../sparsify/virt-sparsify.pod:198
 msgid "At the moment this means:"
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:599 ../sparsify/virt-sparsify.pod:205
+#: ../resize/virt-resize.pod:599 ../sparsify/virt-sparsify.pod:204
 msgid ""
 "Progress bar messages can be parsed from stdout by looking for this regular "
 "expression:"
 msgstr ""
 
 #. type: verbatim
-#: ../resize/virt-resize.pod:602 ../sparsify/virt-sparsify.pod:208
+#: ../resize/virt-resize.pod:602 ../sparsify/virt-sparsify.pod:207
 #, no-wrap
 msgid ""
 " ^[0-9]+/[0-9]+$\n"
@@ -23388,7 +24137,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:606 ../sparsify/virt-sparsify.pod:212
+#: ../resize/virt-resize.pod:606 ../sparsify/virt-sparsify.pod:211
 msgid ""
 "The calling program should treat messages sent to stdout (except for "
 "progress bar messages) as status messages.  They can be logged and/or "
@@ -23745,59 +24494,59 @@ msgstr ""
 
 #. type: textblock
 #: ../sparsify/virt-sparsify.pod:116
-msgid "Supported and known-working output formats are: C<raw>, C<qcow2>."
+msgid "Supported and known-working output formats are: C<raw>, C<qcow2>, C<vdi>."
 msgstr ""
 
 #. type: textblock
 #: ../sparsify/virt-sparsify.pod:118
 msgid ""
 "You can also use any format supported by the L<qemu-img(1)> program, "
-"eg. C<vdi> or C<vmdk>, but support for other formats is reliant on qemu."
+"eg. C<vmdk>, but support for other formats is reliant on qemu."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:122
+#: ../sparsify/virt-sparsify.pod:121
 msgid ""
 "Specifying the I<--convert> option is usually a good idea, because then "
 "virt-sparsify doesn't need to try to guess the input format."
 msgstr ""
 
 #. type: =item
-#: ../sparsify/virt-sparsify.pod:127
+#: ../sparsify/virt-sparsify.pod:126
 msgid "B<--format> qcow2"
 msgstr ""
 
 #. type: =item
-#: ../sparsify/virt-sparsify.pod:135
+#: ../sparsify/virt-sparsify.pod:134
 msgid "B<--ignore> filesystem"
 msgstr ""
 
 #. type: =item
-#: ../sparsify/virt-sparsify.pod:137
+#: ../sparsify/virt-sparsify.pod:136
 msgid "B<--ignore> volgroup"
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:139
+#: ../sparsify/virt-sparsify.pod:138
 msgid ""
 "Ignore the named filesystem.  Free space on the filesystem will not be "
 "zeroed, but existing blocks of zeroes will still be sparsified."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:142
+#: ../sparsify/virt-sparsify.pod:141
 msgid ""
 "In the second form, this ignores the named volume group.  Use the volume "
 "group name without the C</dev/> prefix, eg. I<--ignore vg_foo>"
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:157
+#: ../sparsify/virt-sparsify.pod:156
 msgid "This disables progress bars and other unnecessary output."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:179
+#: ../sparsify/virt-sparsify.pod:178
 msgid ""
 "The I<--machine-readable> option can be used to make the output more machine "
 "friendly, which is useful when calling virt-sparsify from other programs, "
@@ -23805,14 +24554,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:185
+#: ../sparsify/virt-sparsify.pod:184
 msgid ""
 "Firstly use the option on its own to query the capabilities of the "
 "virt-sparsify binary.  Typical output looks like this:"
 msgstr ""
 
 #. type: verbatim
-#: ../sparsify/virt-sparsify.pod:188
+#: ../sparsify/virt-sparsify.pod:187
 #, no-wrap
 msgid ""
 " $ virt-sparsify --machine-readable\n"
@@ -23823,7 +24572,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:218
+#: ../sparsify/virt-sparsify.pod:217
 msgid ""
 "The calling program should treat messages sent to stderr as error messages.  "
 "In addition, virt-sparsify exits with a non-zero status code if there was a "
@@ -23831,21 +24580,21 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:224
+#: ../sparsify/virt-sparsify.pod:223
 msgid ""
 "All versions of virt-sparsify have supported the I<--machine-readable> "
 "option."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:238
+#: ../sparsify/virt-sparsify.pod:237
 msgid ""
 "Location of the temporary directory used for the potentially large temporary "
 "overlay file."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:241
+#: ../sparsify/virt-sparsify.pod:240
 msgid ""
 "You should ensure there is enough free space in the worst case for a full "
 "copy of the source disk (I<virtual> size), or else set C<$TMPDIR> to point "
@@ -23853,17 +24602,17 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:245
+#: ../sparsify/virt-sparsify.pod:244
 msgid "This defaults to C</tmp>."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:249
+#: ../sparsify/virt-sparsify.pod:248
 msgid "For other environment variables, see L<guestfs(3)/ENVIRONMENT VARIABLES>."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:253
+#: ../sparsify/virt-sparsify.pod:252
 msgid ""
 "L<virt-filesystems(1)>, L<virt-df(1)>, L<virt-resize(1)>, L<virt-rescue(1)>, "
 "L<guestfs(3)>, L<guestfish(1)>, L<truncate(1)>, L<fallocate(1)>, "
@@ -38446,11 +39195,6 @@ msgstr ""
 msgid "eg: C<SKIP_TEST_COMMAND_3=1> skips test #3 of L</guestfs_command>."
 msgstr ""
 
-#. type: textblock
-#: ../src/guestfs.pod:2792
-msgid "or:"
-msgstr ""
-
 #. type: verbatim
 #: ../src/guestfs.pod:2794
 #, no-wrap
@@ -39068,11 +39812,6 @@ msgstr ""
 msgid "Push and pull from Transifex."
 msgstr ""
 
-#. type: textblock
-#: ../src/guestfs.pod:3083
-msgid "Run:"
-msgstr ""
-
 #. type: verbatim
 #: ../src/guestfs.pod:3085
 #, no-wrap
@@ -39360,65 +40099,65 @@ msgid ""
 "L<virt-list-partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)>, "
 "L<virt-rescue(1)>, L<virt-resize(1)>, L<virt-sparsify(1)>, "
 "L<virt-sysprep(1)>, L<virt-tar(1)>, L<virt-tar-in(1)>, L<virt-tar-out(1)>, "
-"L<virt-win-reg(1)>, L<qemu(1)>, L<febootstrap(1)>, "
+"L<virt-win-reg(1)>, L<guestfs-testing(1)>, L<qemu(1)>, L<febootstrap(1)>, "
 "L<febootstrap-supermin-helper(8)>, L<hivex(3)>, L<stap(1)>, "
 "L<http://libguestfs.org/>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3308
+#: ../src/guestfs.pod:3309
 msgid ""
 "Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, "
 "L<lvm(8)>, L<disktype(1)>."
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:3315 ../tools/virt-make-fs.pl:571 ../tools/virt-win-reg.pl:772
+#: ../src/guestfs.pod:3316 ../tools/virt-make-fs.pl:571 ../tools/virt-win-reg.pl:772
 msgid "BUGS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3317
+#: ../src/guestfs.pod:3318
 msgid "To get a list of bugs against libguestfs use this link:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3319
+#: ../src/guestfs.pod:3320
 msgid "L<https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3321
+#: ../src/guestfs.pod:3322
 msgid "To report a new bug against libguestfs use this link:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3323
+#: ../src/guestfs.pod:3324
 msgid "L<https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3325
+#: ../src/guestfs.pod:3326
 msgid "When reporting a bug, please check:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3331
+#: ../src/guestfs.pod:3332
 msgid "That the bug hasn't been reported already."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3335
+#: ../src/guestfs.pod:3336
 msgid "That you are testing a recent version."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3339
+#: ../src/guestfs.pod:3340
 msgid "Describe the bug accurately, and give a way to reproduce it."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3343
+#: ../src/guestfs.pod:3344
 msgid ""
 "Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
 "bug report."
diff --git a/po-docs/uk.po b/po-docs/uk.po
index d357c7b..7e2d6b4 100644
--- a/po-docs/uk.po
+++ b/po-docs/uk.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: libguestfs at redhat.com\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:15+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Ukrainian <trans-uk at lists.fedoraproject.org>\n"
@@ -24,15 +24,16 @@ msgstr ""
 #: ../cat/virt-filesystems.pod:3 ../cat/virt-ls.pod:3
 #: ../clone/virt-sysprep.pod:3 ../df/virt-df.pod:3 ../edit/virt-edit.pod:3
 #: ../erlang/examples/guestfs-erlang.pod:3 ../examples/guestfs-examples.pod:3
-#: ../examples/guestfs-recipes.pod:14 ../fish/guestfish.pod:3
-#: ../fish/virt-copy-in.pod:3 ../fish/virt-copy-out.pod:3
-#: ../fish/virt-tar-in.pod:3 ../fish/virt-tar-out.pod:3
-#: ../fuse/guestmount.pod:3 ../inspector/virt-inspector.pod:3
-#: ../java/examples/guestfs-java.pod:3 ../ocaml/examples/guestfs-ocaml.pod:3
-#: ../perl/examples/guestfs-perl.pod:3 ../python/examples/guestfs-python.pod:3
-#: ../rescue/virt-rescue.pod:3 ../resize/virt-resize.pod:3
-#: ../ruby/examples/guestfs-ruby.pod:3 ../sparsify/virt-sparsify.pod:3
-#: ../src/guestfs.pod:3 ../test-tool/libguestfs-test-tool.pod:3
+#: ../examples/guestfs-recipes.pod:14 ../examples/guestfs-testing.pod:3
+#: ../fish/guestfish.pod:3 ../fish/virt-copy-in.pod:3
+#: ../fish/virt-copy-out.pod:3 ../fish/virt-tar-in.pod:3
+#: ../fish/virt-tar-out.pod:3 ../fuse/guestmount.pod:3
+#: ../inspector/virt-inspector.pod:3 ../java/examples/guestfs-java.pod:3
+#: ../ocaml/examples/guestfs-ocaml.pod:3 ../perl/examples/guestfs-perl.pod:3
+#: ../python/examples/guestfs-python.pod:3 ../rescue/virt-rescue.pod:3
+#: ../resize/virt-resize.pod:3 ../ruby/examples/guestfs-ruby.pod:3
+#: ../sparsify/virt-sparsify.pod:3 ../src/guestfs.pod:3
+#: ../test-tool/libguestfs-test-tool.pod:3
 #: ../tools/virt-list-filesystems.pl:30 ../tools/virt-list-partitions.pl:30
 #: ../tools/virt-make-fs.pl:35 ../tools/virt-tar.pl:31
 #: ../tools/virt-win-reg.pl:35
@@ -86,11 +87,12 @@ msgstr ""
 #: ../clone/virt-sysprep.pod:13 ../df/virt-df.pod:21 ../edit/virt-edit.pod:27
 #: ../erlang/examples/guestfs-erlang.pod:16
 #: ../examples/guestfs-examples.pod:19 ../examples/guestfs-recipes.pod:18
-#: ../fish/guestfish.pod:30 ../fish/virt-copy-in.pod:19
-#: ../fish/virt-copy-out.pod:13 ../fish/virt-tar-in.pod:21
-#: ../fish/virt-tar-out.pod:15 ../fuse/guestmount.pod:20
-#: ../inspector/virt-inspector.pod:19 ../java/examples/guestfs-java.pod:15
-#: ../ocaml/examples/guestfs-ocaml.pod:25 ../perl/examples/guestfs-perl.pod:18
+#: ../examples/guestfs-testing.pod:7 ../fish/guestfish.pod:30
+#: ../fish/virt-copy-in.pod:19 ../fish/virt-copy-out.pod:13
+#: ../fish/virt-tar-in.pod:21 ../fish/virt-tar-out.pod:15
+#: ../fuse/guestmount.pod:20 ../inspector/virt-inspector.pod:19
+#: ../java/examples/guestfs-java.pod:15 ../ocaml/examples/guestfs-ocaml.pod:25
+#: ../perl/examples/guestfs-perl.pod:18
 #: ../python/examples/guestfs-python.pod:14 ../rescue/virt-rescue.pod:29
 #: ../resize/virt-resize.pod:13 ../ruby/examples/guestfs-ruby.pod:15
 #: ../sparsify/virt-sparsify.pod:11 ../src/guestfs.pod:23
@@ -487,13 +489,13 @@ msgstr ""
 
 #. type: =item
 #: ../align/virt-alignment-scan.pod:147 ../resize/virt-resize.pod:491
-#: ../sparsify/virt-sparsify.pod:153
+#: ../sparsify/virt-sparsify.pod:152
 msgid "B<-q>"
 msgstr "B<-q>"
 
 #. type: =item
 #: ../align/virt-alignment-scan.pod:149 ../resize/virt-resize.pod:493
-#: ../sparsify/virt-sparsify.pod:155
+#: ../sparsify/virt-sparsify.pod:154
 msgid "B<--quiet>"
 msgstr "B<--quiet>"
 
@@ -510,7 +512,7 @@ msgstr ""
 #: ../clone/virt-sysprep.pod:138 ../df/virt-df.pod:173
 #: ../edit/virt-edit.pod:161 ../fish/guestfish.pod:390
 #: ../fuse/guestmount.pod:266 ../inspector/virt-inspector.pod:119
-#: ../rescue/virt-rescue.pod:182 ../sparsify/virt-sparsify.pod:159
+#: ../rescue/virt-rescue.pod:182 ../sparsify/virt-sparsify.pod:158
 msgid "B<-v>"
 msgstr "B<-v>"
 
@@ -520,7 +522,7 @@ msgstr "B<-v>"
 #: ../clone/virt-sysprep.pod:140 ../df/virt-df.pod:175
 #: ../edit/virt-edit.pod:163 ../fish/guestfish.pod:392
 #: ../fuse/guestmount.pod:268 ../inspector/virt-inspector.pod:121
-#: ../rescue/virt-rescue.pod:184 ../sparsify/virt-sparsify.pod:161
+#: ../rescue/virt-rescue.pod:184 ../sparsify/virt-sparsify.pod:160
 msgid "B<--verbose>"
 msgstr "B<--verbose>"
 
@@ -529,7 +531,7 @@ msgstr "B<--verbose>"
 #: ../cat/virt-filesystems.pod:265 ../cat/virt-ls.pod:429
 #: ../clone/virt-sysprep.pod:142 ../df/virt-df.pod:177
 #: ../edit/virt-edit.pod:165 ../inspector/virt-inspector.pod:123
-#: ../rescue/virt-rescue.pod:186 ../sparsify/virt-sparsify.pod:163
+#: ../rescue/virt-rescue.pod:186 ../sparsify/virt-sparsify.pod:162
 msgid "Enable verbose messages for debugging."
 msgstr ""
 
@@ -540,7 +542,7 @@ msgstr ""
 #: ../edit/virt-edit.pod:167 ../fish/guestfish.pod:397
 #: ../fuse/guestmount.pod:272 ../inspector/virt-inspector.pod:125
 #: ../rescue/virt-rescue.pod:188 ../resize/virt-resize.pod:561
-#: ../sparsify/virt-sparsify.pod:165
+#: ../sparsify/virt-sparsify.pod:164
 msgid "B<-V>"
 msgstr "B<-V>"
 
@@ -551,7 +553,7 @@ msgstr "B<-V>"
 #: ../edit/virt-edit.pod:169 ../fish/guestfish.pod:399
 #: ../fuse/guestmount.pod:274 ../inspector/virt-inspector.pod:127
 #: ../rescue/virt-rescue.pod:190 ../resize/virt-resize.pod:563
-#: ../sparsify/virt-sparsify.pod:167 ../tools/virt-list-filesystems.pl:69
+#: ../sparsify/virt-sparsify.pod:166 ../tools/virt-list-filesystems.pl:69
 #: ../tools/virt-list-partitions.pl:70 ../tools/virt-make-fs.pl:169
 #: ../tools/virt-tar.pl:119 ../tools/virt-win-reg.pl:112
 msgid "B<--version>"
@@ -563,7 +565,7 @@ msgstr "B<--version>"
 #: ../clone/virt-sysprep.pod:148 ../df/virt-df.pod:183
 #: ../edit/virt-edit.pod:171 ../inspector/virt-inspector.pod:129
 #: ../rescue/virt-rescue.pod:192 ../resize/virt-resize.pod:565
-#: ../sparsify/virt-sparsify.pod:169 ../tools/virt-list-filesystems.pl:71
+#: ../sparsify/virt-sparsify.pod:168 ../tools/virt-list-filesystems.pl:71
 #: ../tools/virt-list-partitions.pl:72 ../tools/virt-make-fs.pl:171
 #: ../tools/virt-tar.pl:121 ../tools/virt-win-reg.pl:114
 msgid "Display version number and exit."
@@ -575,7 +577,7 @@ msgstr "Показати дані щодо версії і завершити р
 #: ../clone/virt-sysprep.pod:150 ../df/virt-df.pod:185
 #: ../edit/virt-edit.pod:173 ../fish/guestfish.pod:412
 #: ../fuse/guestmount.pod:287 ../inspector/virt-inspector.pod:131
-#: ../rescue/virt-rescue.pod:203 ../sparsify/virt-sparsify.pod:171
+#: ../rescue/virt-rescue.pod:203 ../sparsify/virt-sparsify.pod:170
 #: ../tools/virt-tar.pl:158
 msgid "B<-x>"
 msgstr "B<-x>"
@@ -585,7 +587,7 @@ msgstr "B<-x>"
 #: ../cat/virt-filesystems.pod:283 ../cat/virt-ls.pod:439
 #: ../clone/virt-sysprep.pod:152 ../df/virt-df.pod:187
 #: ../edit/virt-edit.pod:175 ../inspector/virt-inspector.pod:133
-#: ../rescue/virt-rescue.pod:205 ../sparsify/virt-sparsify.pod:173
+#: ../rescue/virt-rescue.pod:205 ../sparsify/virt-sparsify.pod:172
 msgid "Enable tracing of libguestfs API calls."
 msgstr ""
 
@@ -859,7 +861,7 @@ msgstr ""
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:311 ../cat/virt-cat.pod:231
 #: ../cat/virt-filesystems.pod:373 ../cat/virt-ls.pod:483
-#: ../clone/virt-sysprep.pod:475 ../df/virt-df.pod:215
+#: ../clone/virt-sysprep.pod:475 ../df/virt-df.pod:241
 #: ../edit/virt-edit.pod:342 ../inspector/virt-inspector.pod:367
 #: ../rescue/virt-rescue.pod:266 ../resize/virt-resize.pod:676
 #: ../tools/virt-list-filesystems.pl:188 ../tools/virt-list-partitions.pl:258
@@ -871,7 +873,7 @@ msgstr ""
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:313 ../cat/virt-cat.pod:233
 #: ../cat/virt-filesystems.pod:375 ../cat/virt-ls.pod:485
-#: ../clone/virt-sysprep.pod:477 ../df/virt-df.pod:217
+#: ../clone/virt-sysprep.pod:477 ../df/virt-df.pod:243
 #: ../edit/virt-edit.pod:344 ../inspector/virt-inspector.pod:369
 #: ../rescue/virt-rescue.pod:268 ../resize/virt-resize.pod:678
 #: ../tools/virt-list-filesystems.pl:190 ../tools/virt-list-partitions.pl:260
@@ -887,10 +889,10 @@ msgstr ""
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:318 ../cat/virt-cat.pod:238
 #: ../cat/virt-filesystems.pod:380 ../cat/virt-ls.pod:490
-#: ../clone/virt-sysprep.pod:482 ../df/virt-df.pod:222
+#: ../clone/virt-sysprep.pod:482 ../df/virt-df.pod:248
 #: ../edit/virt-edit.pod:349 ../fish/guestfish.pod:1114
 #: ../fuse/guestmount.pod:312 ../inspector/virt-inspector.pod:390
-#: ../resize/virt-resize.pod:683 ../sparsify/virt-sparsify.pod:227
+#: ../resize/virt-resize.pod:683 ../sparsify/virt-sparsify.pod:226
 #: ../test-tool/libguestfs-test-tool.pod:90
 msgid "EXIT STATUS"
 msgstr ""
@@ -919,65 +921,66 @@ msgstr ""
 #: ../examples/guestfs-recipes.pod:137 ../examples/guestfs-recipes.pod:227
 #: ../examples/guestfs-recipes.pod:231 ../examples/guestfs-recipes.pod:235
 #: ../examples/guestfs-recipes.pod:239 ../examples/guestfs-recipes.pod:243
-#: ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20
-#: ../fish/guestfish-actions.pod:441 ../fish/guestfish-actions.pod:449
-#: ../fish/guestfish-actions.pod:456 ../fish/guestfish-actions.pod:463
-#: ../fish/guestfish-actions.pod:1262 ../fish/guestfish-actions.pod:1266
-#: ../fish/guestfish-actions.pod:1270 ../fish/guestfish-actions.pod:1274
-#: ../fish/guestfish-actions.pod:1282 ../fish/guestfish-actions.pod:1286
-#: ../fish/guestfish-actions.pod:1290 ../fish/guestfish-actions.pod:1300
-#: ../fish/guestfish-actions.pod:1304 ../fish/guestfish-actions.pod:1308
-#: ../fish/guestfish-actions.pod:1398 ../fish/guestfish-actions.pod:1402
-#: ../fish/guestfish-actions.pod:1407 ../fish/guestfish-actions.pod:1412
-#: ../fish/guestfish-actions.pod:1454 ../fish/guestfish-actions.pod:1458
-#: ../fish/guestfish-actions.pod:1463 ../fish/guestfish-actions.pod:1719
-#: ../fish/guestfish-actions.pod:1726 ../fish/guestfish-actions.pod:1733
-#: ../fish/guestfish-actions.pod:2136 ../fish/guestfish-actions.pod:2142
-#: ../fish/guestfish-actions.pod:2150 ../fish/guestfish-actions.pod:2157
-#: ../fish/guestfish-actions.pod:2164 ../fish/guestfish.pod:445
-#: ../fish/guestfish.pod:449 ../fish/guestfish.pod:453
-#: ../fish/guestfish.pod:457 ../inspector/virt-inspector.pod:408
-#: ../inspector/virt-inspector.pod:412 ../resize/virt-resize.pod:359
-#: ../resize/virt-resize.pod:363 ../resize/virt-resize.pod:372
-#: ../resize/virt-resize.pod:378 ../sparsify/virt-sparsify.pod:32
-#: ../sparsify/virt-sparsify.pod:39 ../sparsify/virt-sparsify.pod:43
-#: ../sparsify/virt-sparsify.pod:49 ../sparsify/virt-sparsify.pod:54
-#: ../sparsify/virt-sparsify.pod:58 ../sparsify/virt-sparsify.pod:64
-#: ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:29
-#: ../src/guestfs-actions.pod:641 ../src/guestfs-actions.pod:649
-#: ../src/guestfs-actions.pod:656 ../src/guestfs-actions.pod:663
-#: ../src/guestfs-actions.pod:2079 ../src/guestfs-actions.pod:2083
-#: ../src/guestfs-actions.pod:2087 ../src/guestfs-actions.pod:2091
-#: ../src/guestfs-actions.pod:2099 ../src/guestfs-actions.pod:2103
-#: ../src/guestfs-actions.pod:2107 ../src/guestfs-actions.pod:2117
-#: ../src/guestfs-actions.pod:2121 ../src/guestfs-actions.pod:2125
-#: ../src/guestfs-actions.pod:2263 ../src/guestfs-actions.pod:2267
-#: ../src/guestfs-actions.pod:2272 ../src/guestfs-actions.pod:2277
-#: ../src/guestfs-actions.pod:2338 ../src/guestfs-actions.pod:2342
-#: ../src/guestfs-actions.pod:2347 ../src/guestfs-actions.pod:2762
-#: ../src/guestfs-actions.pod:2769 ../src/guestfs-actions.pod:2776
-#: ../src/guestfs-actions.pod:3321 ../src/guestfs-actions.pod:3327
-#: ../src/guestfs-actions.pod:3335 ../src/guestfs-actions.pod:3342
-#: ../src/guestfs-actions.pod:3349 ../src/guestfs.pod:403
-#: ../src/guestfs.pod:408 ../src/guestfs.pod:413 ../src/guestfs.pod:417
-#: ../src/guestfs.pod:422 ../src/guestfs.pod:426 ../src/guestfs.pod:431
-#: ../src/guestfs.pod:436 ../src/guestfs.pod:1109 ../src/guestfs.pod:1113
-#: ../src/guestfs.pod:1117 ../src/guestfs.pod:1122 ../src/guestfs.pod:1130
-#: ../src/guestfs.pod:1149 ../src/guestfs.pod:1157 ../src/guestfs.pod:1179
-#: ../src/guestfs.pod:1183 ../src/guestfs.pod:1187 ../src/guestfs.pod:1191
-#: ../src/guestfs.pod:1195 ../src/guestfs.pod:1199 ../src/guestfs.pod:1689
-#: ../src/guestfs.pod:1694 ../src/guestfs.pod:1698 ../src/guestfs.pod:1800
-#: ../src/guestfs.pod:1805 ../src/guestfs.pod:1809 ../src/guestfs.pod:1819
-#: ../src/guestfs.pod:2108 ../src/guestfs.pod:2113 ../src/guestfs.pod:2119
-#: ../src/guestfs.pod:2127 ../src/guestfs.pod:2645 ../src/guestfs.pod:2651
-#: ../src/guestfs.pod:2656 ../src/guestfs.pod:2662 ../src/guestfs.pod:3062
-#: ../src/guestfs.pod:3067 ../src/guestfs.pod:3071 ../src/guestfs.pod:3075
-#: ../src/guestfs.pod:3079 ../src/guestfs.pod:3093 ../src/guestfs.pod:3098
-#: ../src/guestfs.pod:3329 ../src/guestfs.pod:3333 ../src/guestfs.pod:3337
-#: ../src/guestfs.pod:3341 ../tools/virt-win-reg.pl:197
-#: ../tools/virt-win-reg.pl:202 ../tools/virt-win-reg.pl:208
-#: ../tools/virt-win-reg.pl:721 ../tools/virt-win-reg.pl:727
-#: ../tools/virt-win-reg.pl:733
+#: ../examples/guestfs-testing.pod:110 ../examples/guestfs-testing.pod:114
+#: ../examples/guestfs-testing.pod:118 ../fish/guestfish-actions.pod:13
+#: ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:441
+#: ../fish/guestfish-actions.pod:449 ../fish/guestfish-actions.pod:456
+#: ../fish/guestfish-actions.pod:463 ../fish/guestfish-actions.pod:1262
+#: ../fish/guestfish-actions.pod:1266 ../fish/guestfish-actions.pod:1270
+#: ../fish/guestfish-actions.pod:1274 ../fish/guestfish-actions.pod:1282
+#: ../fish/guestfish-actions.pod:1286 ../fish/guestfish-actions.pod:1290
+#: ../fish/guestfish-actions.pod:1300 ../fish/guestfish-actions.pod:1304
+#: ../fish/guestfish-actions.pod:1308 ../fish/guestfish-actions.pod:1398
+#: ../fish/guestfish-actions.pod:1402 ../fish/guestfish-actions.pod:1407
+#: ../fish/guestfish-actions.pod:1412 ../fish/guestfish-actions.pod:1454
+#: ../fish/guestfish-actions.pod:1458 ../fish/guestfish-actions.pod:1463
+#: ../fish/guestfish-actions.pod:1719 ../fish/guestfish-actions.pod:1726
+#: ../fish/guestfish-actions.pod:1733 ../fish/guestfish-actions.pod:2136
+#: ../fish/guestfish-actions.pod:2142 ../fish/guestfish-actions.pod:2150
+#: ../fish/guestfish-actions.pod:2157 ../fish/guestfish-actions.pod:2164
+#: ../fish/guestfish.pod:445 ../fish/guestfish.pod:449
+#: ../fish/guestfish.pod:453 ../fish/guestfish.pod:457
+#: ../inspector/virt-inspector.pod:408 ../inspector/virt-inspector.pod:412
+#: ../resize/virt-resize.pod:359 ../resize/virt-resize.pod:363
+#: ../resize/virt-resize.pod:372 ../resize/virt-resize.pod:378
+#: ../sparsify/virt-sparsify.pod:32 ../sparsify/virt-sparsify.pod:39
+#: ../sparsify/virt-sparsify.pod:43 ../sparsify/virt-sparsify.pod:49
+#: ../sparsify/virt-sparsify.pod:54 ../sparsify/virt-sparsify.pod:58
+#: ../sparsify/virt-sparsify.pod:64 ../src/guestfs-actions.pod:22
+#: ../src/guestfs-actions.pod:29 ../src/guestfs-actions.pod:641
+#: ../src/guestfs-actions.pod:649 ../src/guestfs-actions.pod:656
+#: ../src/guestfs-actions.pod:663 ../src/guestfs-actions.pod:2079
+#: ../src/guestfs-actions.pod:2083 ../src/guestfs-actions.pod:2087
+#: ../src/guestfs-actions.pod:2091 ../src/guestfs-actions.pod:2099
+#: ../src/guestfs-actions.pod:2103 ../src/guestfs-actions.pod:2107
+#: ../src/guestfs-actions.pod:2117 ../src/guestfs-actions.pod:2121
+#: ../src/guestfs-actions.pod:2125 ../src/guestfs-actions.pod:2263
+#: ../src/guestfs-actions.pod:2267 ../src/guestfs-actions.pod:2272
+#: ../src/guestfs-actions.pod:2277 ../src/guestfs-actions.pod:2338
+#: ../src/guestfs-actions.pod:2342 ../src/guestfs-actions.pod:2347
+#: ../src/guestfs-actions.pod:2762 ../src/guestfs-actions.pod:2769
+#: ../src/guestfs-actions.pod:2776 ../src/guestfs-actions.pod:3321
+#: ../src/guestfs-actions.pod:3327 ../src/guestfs-actions.pod:3335
+#: ../src/guestfs-actions.pod:3342 ../src/guestfs-actions.pod:3349
+#: ../src/guestfs.pod:403 ../src/guestfs.pod:408 ../src/guestfs.pod:413
+#: ../src/guestfs.pod:417 ../src/guestfs.pod:422 ../src/guestfs.pod:426
+#: ../src/guestfs.pod:431 ../src/guestfs.pod:436 ../src/guestfs.pod:1109
+#: ../src/guestfs.pod:1113 ../src/guestfs.pod:1117 ../src/guestfs.pod:1122
+#: ../src/guestfs.pod:1130 ../src/guestfs.pod:1149 ../src/guestfs.pod:1157
+#: ../src/guestfs.pod:1179 ../src/guestfs.pod:1183 ../src/guestfs.pod:1187
+#: ../src/guestfs.pod:1191 ../src/guestfs.pod:1195 ../src/guestfs.pod:1199
+#: ../src/guestfs.pod:1689 ../src/guestfs.pod:1694 ../src/guestfs.pod:1698
+#: ../src/guestfs.pod:1800 ../src/guestfs.pod:1805 ../src/guestfs.pod:1809
+#: ../src/guestfs.pod:1819 ../src/guestfs.pod:2108 ../src/guestfs.pod:2113
+#: ../src/guestfs.pod:2119 ../src/guestfs.pod:2127 ../src/guestfs.pod:2645
+#: ../src/guestfs.pod:2651 ../src/guestfs.pod:2656 ../src/guestfs.pod:2662
+#: ../src/guestfs.pod:3062 ../src/guestfs.pod:3067 ../src/guestfs.pod:3071
+#: ../src/guestfs.pod:3075 ../src/guestfs.pod:3079 ../src/guestfs.pod:3093
+#: ../src/guestfs.pod:3098 ../src/guestfs.pod:3330 ../src/guestfs.pod:3334
+#: ../src/guestfs.pod:3338 ../src/guestfs.pod:3342
+#: ../tools/virt-win-reg.pl:197 ../tools/virt-win-reg.pl:202
+#: ../tools/virt-win-reg.pl:208 ../tools/virt-win-reg.pl:721
+#: ../tools/virt-win-reg.pl:727 ../tools/virt-win-reg.pl:733
 msgid "*"
 msgstr "*"
 
@@ -1029,17 +1032,18 @@ msgstr ""
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:352 ../cat/virt-cat.pod:243
 #: ../cat/virt-filesystems.pod:385 ../cat/virt-ls.pod:495
-#: ../clone/virt-sysprep.pod:486 ../df/virt-df.pod:227
+#: ../clone/virt-sysprep.pod:486 ../df/virt-df.pod:253
 #: ../edit/virt-edit.pod:354 ../erlang/examples/guestfs-erlang.pod:97
 #: ../examples/guestfs-examples.pod:33 ../examples/guestfs-recipes.pod:384
-#: ../fish/guestfish.pod:1268 ../fish/virt-copy-in.pod:50
-#: ../fish/virt-copy-out.pod:39 ../fish/virt-tar-in.pod:47
-#: ../fish/virt-tar-out.pod:41 ../fuse/guestmount.pod:317
-#: ../inspector/virt-inspector.pod:395 ../java/examples/guestfs-java.pod:45
-#: ../ocaml/examples/guestfs-ocaml.pod:78 ../perl/examples/guestfs-perl.pod:39
+#: ../examples/guestfs-testing.pod:291 ../fish/guestfish.pod:1268
+#: ../fish/virt-copy-in.pod:50 ../fish/virt-copy-out.pod:39
+#: ../fish/virt-tar-in.pod:47 ../fish/virt-tar-out.pod:41
+#: ../fuse/guestmount.pod:317 ../inspector/virt-inspector.pod:395
+#: ../java/examples/guestfs-java.pod:45 ../ocaml/examples/guestfs-ocaml.pod:78
+#: ../perl/examples/guestfs-perl.pod:39
 #: ../python/examples/guestfs-python.pod:42 ../rescue/virt-rescue.pod:288
 #: ../resize/virt-resize.pod:688 ../ruby/examples/guestfs-ruby.pod:36
-#: ../sparsify/virt-sparsify.pod:251 ../src/guestfs.pod:3270
+#: ../sparsify/virt-sparsify.pod:250 ../src/guestfs.pod:3270
 #: ../test-tool/libguestfs-test-tool.pod:100
 #: ../tools/virt-list-filesystems.pl:195 ../tools/virt-list-partitions.pl:265
 #: ../tools/virt-make-fs.pl:557 ../tools/virt-tar.pl:296
@@ -1057,9 +1061,9 @@ msgstr ""
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:361 ../cat/virt-cat.pod:252
 #: ../cat/virt-filesystems.pod:396 ../cat/virt-ls.pod:507
-#: ../clone/virt-sysprep.pod:501 ../df/virt-df.pod:235
+#: ../clone/virt-sysprep.pod:501 ../df/virt-df.pod:261
 #: ../edit/virt-edit.pod:368 ../rescue/virt-rescue.pod:296
-#: ../resize/virt-resize.pod:711 ../sparsify/virt-sparsify.pod:264
+#: ../resize/virt-resize.pod:711 ../sparsify/virt-sparsify.pod:263
 #: ../tools/virt-list-filesystems.pl:208 ../tools/virt-list-partitions.pl:277
 #: ../tools/virt-make-fs.pl:582 ../tools/virt-tar.pl:311
 #: ../tools/virt-win-reg.pl:783
@@ -1069,10 +1073,10 @@ msgstr "АВТОР"
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:363 ../cat/virt-cat.pod:254
 #: ../cat/virt-filesystems.pod:398 ../cat/virt-ls.pod:509
-#: ../clone/virt-sysprep.pod:503 ../df/virt-df.pod:237
+#: ../clone/virt-sysprep.pod:503 ../df/virt-df.pod:263
 #: ../edit/virt-edit.pod:370 ../inspector/virt-inspector.pod:410
 #: ../rescue/virt-rescue.pod:298 ../resize/virt-resize.pod:713
-#: ../sparsify/virt-sparsify.pod:266 ../tools/virt-list-filesystems.pl:210
+#: ../sparsify/virt-sparsify.pod:265 ../tools/virt-list-filesystems.pl:210
 #: ../tools/virt-list-partitions.pl:279 ../tools/virt-make-fs.pl:584
 #: ../tools/virt-tar.pl:313 ../tools/virt-win-reg.pl:785
 msgid "Richard W.M. Jones L<http://people.redhat.com/~rjones/>"
@@ -1081,17 +1085,18 @@ msgstr "Richard W.M. Jones L<http://people.redhat.com/~rjones/>"
 #. type: =head1
 #: ../align/virt-alignment-scan.pod:365 ../cat/virt-cat.pod:256
 #: ../cat/virt-filesystems.pod:400 ../cat/virt-ls.pod:511
-#: ../clone/virt-sysprep.pod:505 ../df/virt-df.pod:239
+#: ../clone/virt-sysprep.pod:505 ../df/virt-df.pod:265
 #: ../edit/virt-edit.pod:372 ../erlang/examples/guestfs-erlang.pod:114
 #: ../examples/guestfs-examples.pod:49 ../examples/guestfs-recipes.pod:401
-#: ../fish/guestfish.pod:1300 ../fish/virt-copy-in.pod:64
-#: ../fish/virt-copy-out.pod:53 ../fish/virt-tar-in.pod:62
-#: ../fish/virt-tar-out.pod:55 ../fuse/guestmount.pod:332
-#: ../inspector/virt-inspector.pod:418 ../java/examples/guestfs-java.pod:62
-#: ../ocaml/examples/guestfs-ocaml.pod:95 ../perl/examples/guestfs-perl.pod:56
+#: ../examples/guestfs-testing.pod:302 ../fish/guestfish.pod:1300
+#: ../fish/virt-copy-in.pod:64 ../fish/virt-copy-out.pod:53
+#: ../fish/virt-tar-in.pod:62 ../fish/virt-tar-out.pod:55
+#: ../fuse/guestmount.pod:332 ../inspector/virt-inspector.pod:418
+#: ../java/examples/guestfs-java.pod:62 ../ocaml/examples/guestfs-ocaml.pod:95
+#: ../perl/examples/guestfs-perl.pod:56
 #: ../python/examples/guestfs-python.pod:58 ../rescue/virt-rescue.pod:300
 #: ../resize/virt-resize.pod:715 ../ruby/examples/guestfs-ruby.pod:52
-#: ../sparsify/virt-sparsify.pod:268 ../src/guestfs.pod:3352
+#: ../sparsify/virt-sparsify.pod:267 ../src/guestfs.pod:3353
 #: ../test-tool/libguestfs-test-tool.pod:110
 #: ../tools/virt-list-filesystems.pl:212 ../tools/virt-list-partitions.pl:281
 #: ../tools/virt-make-fs.pl:586 ../tools/virt-tar.pl:315
@@ -1101,20 +1106,20 @@ msgstr "АВТОРСЬКІ ПРАВА"
 
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:367 ../clone/virt-sysprep.pod:507
-#: ../sparsify/virt-sparsify.pod:270
+#: ../sparsify/virt-sparsify.pod:269
 msgid "Copyright (C) 2011 Red Hat Inc."
 msgstr ""
 
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:369 ../cat/virt-cat.pod:260
 #: ../cat/virt-filesystems.pod:404 ../cat/virt-ls.pod:515
-#: ../clone/virt-sysprep.pod:509 ../df/virt-df.pod:243
+#: ../clone/virt-sysprep.pod:509 ../df/virt-df.pod:269
 #: ../edit/virt-edit.pod:376 ../fish/guestfish.pod:1305
 #: ../fish/virt-copy-in.pod:69 ../fish/virt-copy-out.pod:58
 #: ../fish/virt-tar-in.pod:67 ../fish/virt-tar-out.pod:60
 #: ../fuse/guestmount.pod:337 ../inspector/virt-inspector.pod:422
 #: ../rescue/virt-rescue.pod:304 ../resize/virt-resize.pod:719
-#: ../sparsify/virt-sparsify.pod:272 ../test-tool/libguestfs-test-tool.pod:115
+#: ../sparsify/virt-sparsify.pod:271 ../test-tool/libguestfs-test-tool.pod:115
 #: ../tools/virt-list-filesystems.pl:216 ../tools/virt-list-partitions.pl:285
 #: ../tools/virt-make-fs.pl:590 ../tools/virt-tar.pl:319
 #: ../tools/virt-win-reg.pl:791
@@ -1128,13 +1133,13 @@ msgstr ""
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:374 ../cat/virt-cat.pod:265
 #: ../cat/virt-filesystems.pod:409 ../cat/virt-ls.pod:520
-#: ../clone/virt-sysprep.pod:514 ../df/virt-df.pod:248
+#: ../clone/virt-sysprep.pod:514 ../df/virt-df.pod:274
 #: ../edit/virt-edit.pod:381 ../fish/guestfish.pod:1310
 #: ../fish/virt-copy-in.pod:74 ../fish/virt-copy-out.pod:63
 #: ../fish/virt-tar-in.pod:72 ../fish/virt-tar-out.pod:65
 #: ../fuse/guestmount.pod:342 ../inspector/virt-inspector.pod:427
 #: ../rescue/virt-rescue.pod:309 ../resize/virt-resize.pod:724
-#: ../sparsify/virt-sparsify.pod:277 ../test-tool/libguestfs-test-tool.pod:120
+#: ../sparsify/virt-sparsify.pod:276 ../test-tool/libguestfs-test-tool.pod:120
 #: ../tools/virt-list-filesystems.pl:221 ../tools/virt-list-partitions.pl:290
 #: ../tools/virt-make-fs.pl:595 ../tools/virt-tar.pl:324
 #: ../tools/virt-win-reg.pl:796
@@ -1152,13 +1157,13 @@ msgstr ""
 #. type: textblock
 #: ../align/virt-alignment-scan.pod:379 ../cat/virt-cat.pod:270
 #: ../cat/virt-filesystems.pod:414 ../cat/virt-ls.pod:525
-#: ../clone/virt-sysprep.pod:519 ../df/virt-df.pod:253
+#: ../clone/virt-sysprep.pod:519 ../df/virt-df.pod:279
 #: ../edit/virt-edit.pod:386 ../fish/guestfish.pod:1315
 #: ../fish/virt-copy-in.pod:79 ../fish/virt-copy-out.pod:68
 #: ../fish/virt-tar-in.pod:77 ../fish/virt-tar-out.pod:70
 #: ../fuse/guestmount.pod:347 ../inspector/virt-inspector.pod:432
 #: ../rescue/virt-rescue.pod:314 ../resize/virt-resize.pod:729
-#: ../sparsify/virt-sparsify.pod:282 ../test-tool/libguestfs-test-tool.pod:125
+#: ../sparsify/virt-sparsify.pod:281 ../test-tool/libguestfs-test-tool.pod:125
 #: ../tools/virt-list-filesystems.pl:226 ../tools/virt-list-partitions.pl:295
 #: ../tools/virt-make-fs.pl:600 ../tools/virt-tar.pl:329
 #: ../tools/virt-win-reg.pl:801
@@ -1584,9 +1589,9 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-cat.pod:240 ../cat/virt-filesystems.pod:382
-#: ../cat/virt-ls.pod:492 ../df/virt-df.pod:224 ../edit/virt-edit.pod:351
+#: ../cat/virt-ls.pod:492 ../df/virt-df.pod:250 ../edit/virt-edit.pod:351
 #: ../fuse/guestmount.pod:314 ../inspector/virt-inspector.pod:392
-#: ../resize/virt-resize.pod:685 ../sparsify/virt-sparsify.pod:229
+#: ../resize/virt-resize.pod:685 ../sparsify/virt-sparsify.pod:228
 msgid ""
 "This program returns 0 if successful, or non-zero if there was an error."
 msgstr ""
@@ -2221,13 +2226,13 @@ msgstr ""
 
 #. type: =head1
 #: ../cat/virt-filesystems.pod:349 ../cat/virt-ls.pod:459
-#: ../df/virt-df.pod:191
+#: ../df/virt-df.pod:217
 msgid "NOTE ABOUT CSV FORMAT"
 msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:351 ../cat/virt-ls.pod:461
-#: ../df/virt-df.pod:193
+#: ../df/virt-df.pod:219
 msgid ""
 "Comma-separated values (CSV) is a deceptive format.  It I<seems> like it "
 "should be easy to parse, but it is definitely not easy to parse."
@@ -2235,7 +2240,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:354 ../cat/virt-ls.pod:464
-#: ../df/virt-df.pod:196
+#: ../df/virt-df.pod:222
 msgid ""
 "Myth: Just split fields at commas.  Reality: This does I<not> work "
 "reliably.  This example has two columns:"
@@ -2243,7 +2248,7 @@ msgstr ""
 
 #. type: verbatim
 #: ../cat/virt-filesystems.pod:357 ../cat/virt-ls.pod:467
-#: ../df/virt-df.pod:199
+#: ../df/virt-df.pod:225
 #, no-wrap
 msgid ""
 " \"foo,bar\",baz\n"
@@ -2252,7 +2257,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:359 ../cat/virt-ls.pod:469
-#: ../df/virt-df.pod:201
+#: ../df/virt-df.pod:227
 msgid ""
 "Myth: Read the file one line at a time.  Reality: This does I<not> work "
 "reliably.  This example has one row:"
@@ -2260,7 +2265,7 @@ msgstr ""
 
 #. type: verbatim
 #: ../cat/virt-filesystems.pod:362 ../cat/virt-ls.pod:472
-#: ../df/virt-df.pod:204
+#: ../df/virt-df.pod:230
 #, no-wrap
 msgid ""
 " \"foo\n"
@@ -2270,7 +2275,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:365 ../cat/virt-ls.pod:475
-#: ../df/virt-df.pod:207
+#: ../df/virt-df.pod:233
 msgid ""
 "For shell scripts, use C<csvtool> (L<http://merjis.com/developers/csv> also "
 "packaged in major Linux distributions)."
@@ -2278,7 +2283,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:368 ../cat/virt-ls.pod:478
-#: ../df/virt-df.pod:210
+#: ../df/virt-df.pod:236
 msgid ""
 "For other languages, use a CSV processing library (eg. C<Text::CSV> for Perl "
 "or Python's built-in csv library)."
@@ -2286,7 +2291,7 @@ msgstr ""
 
 #. type: textblock
 #: ../cat/virt-filesystems.pod:371 ../cat/virt-ls.pod:481
-#: ../df/virt-df.pod:213
+#: ../df/virt-df.pod:239
 msgid "Most spreadsheets and databases can import CSV directly."
 msgstr ""
 
@@ -2391,7 +2396,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:41
+#: ../cat/virt-ls.pod:41 ../examples/guestfs-testing.pod:182
 msgid "List all setuid or setgid programs in a Linux virtual machine:"
 msgstr ""
 
@@ -2404,7 +2409,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:45
+#: ../cat/virt-ls.pod:45 ../examples/guestfs-testing.pod:186
 msgid "List all public-writable directories in a Linux virtual machine:"
 msgstr ""
 
@@ -2417,7 +2422,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:49
+#: ../cat/virt-ls.pod:49 ../examples/guestfs-testing.pod:190
 msgid "List all Unix domain sockets in a Linux virtual machine:"
 msgstr ""
 
@@ -2430,7 +2435,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:53
+#: ../cat/virt-ls.pod:53 ../examples/guestfs-testing.pod:194
 msgid "List all regular files with filenames ending in '.png':"
 msgstr ""
 
@@ -2456,7 +2461,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:61
+#: ../cat/virt-ls.pod:61 ../examples/guestfs-testing.pod:202
 msgid "Find everything modified in the last 7 days:"
 msgstr ""
 
@@ -2469,7 +2474,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../cat/virt-ls.pod:65
+#: ../cat/virt-ls.pod:65 ../examples/guestfs-testing.pod:206
 msgid "Find regular files modified in the last 24 hours:"
 msgstr ""
 
@@ -3083,7 +3088,7 @@ msgstr ""
 "L<http://libguestfs.org/>."
 
 #. type: textblock
-#: ../cat/virt-ls.pod:513 ../df/virt-df.pod:241 ../edit/virt-edit.pod:374
+#: ../cat/virt-ls.pod:513 ../df/virt-df.pod:267 ../edit/virt-edit.pod:374
 #: ../rescue/virt-rescue.pod:302
 msgid "Copyright (C) 2009-2011 Red Hat Inc."
 msgstr "©Red Hat Inc., 2009–2011"
@@ -4095,8 +4100,70 @@ msgid ""
 "specified."
 msgstr ""
 
+#. type: =head1
+#: ../df/virt-df.pod:191
+#, fuzzy
+#| msgid "NUMBERS"
+msgid "STATVFS NUMBERS"
+msgstr "ЧИСЛА"
+
+#. type: textblock
+#: ../df/virt-df.pod:193
+msgid ""
+"C<virt-df> (and L<df(1)>) get information by issuing a L<statvfs(3)> system "
+"call.  You can get the same information directly, either from the host "
+"(using libguestfs) or inside the guest:"
+msgstr ""
+
+#. type: =item
+#: ../df/virt-df.pod:199
+msgid "From the host"
+msgstr ""
+
 #. type: textblock
-#: ../df/virt-df.pod:229
+#: ../df/virt-df.pod:201 ../df/virt-df.pod:209
+#, fuzzy
+#| msgid ""
+#| " sh-lines command\n"
+#| "\n"
+msgid "Run this command:"
+msgstr ""
+" sh-lines команда\n"
+"\n"
+
+#. type: verbatim
+#: ../df/virt-df.pod:203
+#, fuzzy, no-wrap
+#| msgid ""
+#| " guestfish --ro -d myguest -i\n"
+#| "\n"
+msgid ""
+" guestfish --ro -d GuestName -i statvfs /\n"
+"\n"
+msgstr ""
+" guestfish --ro -d myguest -i\n"
+"\n"
+
+#. type: textblock
+#: ../df/virt-df.pod:205 ../df/virt-df.pod:213
+msgid "(change C</> to see stats for other filesystems)."
+msgstr ""
+
+#. type: =item
+#: ../df/virt-df.pod:207
+msgid "From inside the guest"
+msgstr ""
+
+#. type: verbatim
+#: ../df/virt-df.pod:211
+#, no-wrap
+msgid ""
+" python -c 'import os; s = os.statvfs (\"/\"); print s'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../df/virt-df.pod:255
 msgid ""
 "L<df(1)>, L<guestfs(3)>, L<guestfish(1)>, L<virt-filesystems(1)>, L<http://"
 "libguestfs.org/>."
@@ -4626,7 +4693,7 @@ msgstr ""
 
 #. type: =head1
 #: ../edit/virt-edit.pod:329 ../fish/guestfish.pod:1119
-#: ../rescue/virt-rescue.pod:261 ../sparsify/virt-sparsify.pod:232
+#: ../rescue/virt-rescue.pod:261 ../sparsify/virt-sparsify.pod:231
 #: ../src/guestfs.pod:3209 ../test-tool/libguestfs-test-tool.pod:95
 msgid "ENVIRONMENT VARIABLES"
 msgstr "ЗМІННІ СЕРЕДОВИЩА"
@@ -4890,13 +4957,14 @@ msgstr ""
 #. type: =head1
 #: ../erlang/examples/guestfs-erlang.pod:110
 #: ../examples/guestfs-examples.pod:45 ../examples/guestfs-recipes.pod:397
-#: ../fish/guestfish.pod:1296 ../fish/virt-copy-in.pod:60
-#: ../fish/virt-copy-out.pod:49 ../fish/virt-tar-in.pod:58
-#: ../fish/virt-tar-out.pod:51 ../fuse/guestmount.pod:328
-#: ../inspector/virt-inspector.pod:404 ../java/examples/guestfs-java.pod:58
-#: ../ocaml/examples/guestfs-ocaml.pod:91 ../perl/examples/guestfs-perl.pod:52
+#: ../examples/guestfs-testing.pod:298 ../fish/guestfish.pod:1296
+#: ../fish/virt-copy-in.pod:60 ../fish/virt-copy-out.pod:49
+#: ../fish/virt-tar-in.pod:58 ../fish/virt-tar-out.pod:51
+#: ../fuse/guestmount.pod:328 ../inspector/virt-inspector.pod:404
+#: ../java/examples/guestfs-java.pod:58 ../ocaml/examples/guestfs-ocaml.pod:91
+#: ../perl/examples/guestfs-perl.pod:52
 #: ../python/examples/guestfs-python.pod:54
-#: ../ruby/examples/guestfs-ruby.pod:48 ../src/guestfs.pod:3348
+#: ../ruby/examples/guestfs-ruby.pod:48 ../src/guestfs.pod:3349
 #: ../test-tool/libguestfs-test-tool.pod:106
 msgid "AUTHORS"
 msgstr "АВТОРИ"
@@ -4904,20 +4972,21 @@ msgstr "АВТОРИ"
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:112
 #: ../examples/guestfs-examples.pod:47 ../examples/guestfs-recipes.pod:399
-#: ../fish/guestfish.pod:1298 ../fish/virt-copy-in.pod:62
-#: ../fish/virt-copy-out.pod:51 ../fish/virt-tar-in.pod:60
-#: ../fish/virt-tar-out.pod:53 ../fuse/guestmount.pod:330
-#: ../java/examples/guestfs-java.pod:60 ../ocaml/examples/guestfs-ocaml.pod:93
-#: ../perl/examples/guestfs-perl.pod:54
+#: ../examples/guestfs-testing.pod:300 ../fish/guestfish.pod:1298
+#: ../fish/virt-copy-in.pod:62 ../fish/virt-copy-out.pod:51
+#: ../fish/virt-tar-in.pod:60 ../fish/virt-tar-out.pod:53
+#: ../fuse/guestmount.pod:330 ../java/examples/guestfs-java.pod:60
+#: ../ocaml/examples/guestfs-ocaml.pod:93 ../perl/examples/guestfs-perl.pod:54
 #: ../python/examples/guestfs-python.pod:56
-#: ../ruby/examples/guestfs-ruby.pod:50 ../src/guestfs.pod:3350
+#: ../ruby/examples/guestfs-ruby.pod:50 ../src/guestfs.pod:3351
 #: ../test-tool/libguestfs-test-tool.pod:108
 msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
 msgstr "Richard W.M. Jones (C<rjones at redhat dot com>)"
 
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:116
-#: ../java/examples/guestfs-java.pod:64 ../perl/examples/guestfs-perl.pod:58
+#: ../examples/guestfs-testing.pod:304 ../java/examples/guestfs-java.pod:64
+#: ../perl/examples/guestfs-perl.pod:58
 msgid "Copyright (C) 2011 Red Hat Inc. L<http://libguestfs.org/>"
 msgstr ""
 
@@ -4936,11 +5005,11 @@ msgstr ""
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:121
 #: ../examples/guestfs-examples.pod:56 ../examples/guestfs-recipes.pod:408
-#: ../java/examples/guestfs-java.pod:69
+#: ../examples/guestfs-testing.pod:306 ../java/examples/guestfs-java.pod:69
 #: ../ocaml/examples/guestfs-ocaml.pod:102
 #: ../perl/examples/guestfs-perl.pod:63
 #: ../python/examples/guestfs-python.pod:65
-#: ../ruby/examples/guestfs-ruby.pod:59 ../src/guestfs.pod:3357
+#: ../ruby/examples/guestfs-ruby.pod:59 ../src/guestfs.pod:3358
 msgid ""
 "This library is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -4951,11 +5020,11 @@ msgstr ""
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:126
 #: ../examples/guestfs-examples.pod:61 ../examples/guestfs-recipes.pod:413
-#: ../java/examples/guestfs-java.pod:74
+#: ../examples/guestfs-testing.pod:311 ../java/examples/guestfs-java.pod:74
 #: ../ocaml/examples/guestfs-ocaml.pod:107
 #: ../perl/examples/guestfs-perl.pod:68
 #: ../python/examples/guestfs-python.pod:70
-#: ../ruby/examples/guestfs-ruby.pod:64 ../src/guestfs.pod:3362
+#: ../ruby/examples/guestfs-ruby.pod:64 ../src/guestfs.pod:3363
 msgid ""
 "This library is distributed in the hope that it will be useful, but WITHOUT "
 "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
@@ -4966,11 +5035,11 @@ msgstr ""
 #. type: textblock
 #: ../erlang/examples/guestfs-erlang.pod:131
 #: ../examples/guestfs-examples.pod:66 ../examples/guestfs-recipes.pod:418
-#: ../java/examples/guestfs-java.pod:79
+#: ../examples/guestfs-testing.pod:316 ../java/examples/guestfs-java.pod:79
 #: ../ocaml/examples/guestfs-ocaml.pod:112
 #: ../perl/examples/guestfs-perl.pod:73
 #: ../python/examples/guestfs-python.pod:75
-#: ../ruby/examples/guestfs-ruby.pod:69 ../src/guestfs.pod:3367
+#: ../ruby/examples/guestfs-ruby.pod:69 ../src/guestfs.pod:3368
 msgid ""
 "You should have received a copy of the GNU Lesser General Public License "
 "along with this library; if not, write to the Free Software Foundation, "
@@ -5316,7 +5385,7 @@ msgid ""
 msgstr ""
 
 #. type: verbatim
-#: ../examples/guestfs-recipes.pod:126
+#: ../examples/guestfs-recipes.pod:126 ../examples/guestfs-testing.pod:93
 #, no-wrap
 msgid ""
 " virt-copy-out -d Guest /home .\n"
@@ -5882,6 +5951,796 @@ msgstr ""
 msgid "Copyright (C) 2009-2011 Red Hat Inc. L<http://libguestfs.org/>"
 msgstr ""
 
+#. type: textblock
+#: ../examples/guestfs-testing.pod:5
+msgid "guestfs-testing - manual testing of libguestfs, you can help!"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:9
+msgid ""
+"This page has manual tests you can try on libguestfs.  Everyone has a "
+"slightly different combination of platform, hardware and guests, so this "
+"testing is very valuable.  Thanks for helping out!"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:13
+msgid "These tests require libguestfs E<ge> 1.14."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:15
+msgid ""
+"Tests marked with a B<*> (asterisk) can B<destroy data> if you're not "
+"careful.  The others are safe and won't modify anything."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:18
+msgid "You can report bugs you find through this link:"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:20
+#, fuzzy
+#| msgid ""
+#| "L<https://bugzilla.redhat.com/enter_bug.cgi?"
+#| "component=libguestfs&product=Virtualization+Tools>"
+msgid ""
+"https://bugzilla.redhat.com/enter_bug.cgi?"
+"component=libguestfs&product=Virtualization+Tools"
+msgstr ""
+"L<https://bugzilla.redhat.com/enter_bug.cgi?"
+"component=libguestfs&product=Virtualization+Tools>"
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:22
+msgid ""
+"or post on the mailing list (registration is B<not> required, but if you're "
+"not registered then you'll have to wait for a moderator to manually approve "
+"your message):"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:26
+msgid "https://www.redhat.com/mailman/listinfo/libguestfs"
+msgstr ""
+
+#. type: =head1
+#: ../examples/guestfs-testing.pod:28
+msgid "TESTS"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:30
+msgid "Check KVM acceleration is being used."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:32
+msgid ""
+"If your host has hardware virt acceleration, then with a hot cache "
+"libguestfs should be able to start up in a few seconds.  Run the following "
+"command a few times:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:36
+#, no-wrap
+msgid ""
+" time guestfish -a /dev/null run\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:38
+msgid ""
+"After a few runs, the time should settle down to a few seconds (under 5 "
+"seconds on fast 64 bit hardware)."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:41
+msgid "How to check for hardware virt:"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:43
+msgid "http://virt-tools.org/learning/check-hardware-virt/"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:45
+msgid ""
+"If the command above does not work at all, use L<libguestfs-test-tool(1)>."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:48
+msgid "Run virt-alignment-scan on all your guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:50
+msgid "Run L<virt-alignment-scan(1)> on guests or disk images:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:52
+#, no-wrap
+msgid ""
+" virt-alignment-scan -a /path/to/disk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:54 ../examples/guestfs-testing.pod:161
+#: ../examples/guestfs-testing.pod:174 ../examples/guestfs-testing.pod:234
+#: ../src/guestfs.pod:2792
+msgid "or:"
+msgstr "або:"
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:56
+#, no-wrap
+msgid ""
+" virt-alignment-scan -d Guest\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:58
+msgid "Does the alignment report match how the guest partitions are aligned?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:60
+#, fuzzy
+#| msgid ""
+#| " virt-cat domname file\n"
+#| "\n"
+msgid "Run virt-cat on some files in guests."
+msgstr ""
+" virt-cat назва_домену файл\n"
+"\n"
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:62
+msgid "L<virt-cat(1)> can display files from guests.  For a Linux guest, try:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:64
+#, fuzzy, no-wrap
+#| msgid ""
+#| " virt-cat -d mydomain /etc/fstab\n"
+#| "\n"
+msgid ""
+" virt-cat LinuxGuest /etc/passwd\n"
+"\n"
+msgstr ""
+" virt-cat -d mydomain /etc/fstab\n"
+"\n"
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:66
+msgid "A recent feature is support for Windows paths, for example:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:68
+#, no-wrap
+msgid ""
+" virt-cat WindowsGuest 'c:\\windows\\win.ini'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:70
+msgid ""
+"An even better test is if you have a Windows guest with multiple drives.  Do "
+"C<D:>, C<E:> etc paths work correctly?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:73
+msgid "B<*> Copy some files into a B<shut off> guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:75
+msgid ""
+"L<virt-copy-in(1)> can recursively copy files and directories into a guest "
+"or disk image."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:78
+#, no-wrap
+msgid ""
+" virt-copy-in -d Guest /etc /tmp\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:80
+msgid ""
+"This should copy local directory C</etc> to C</tmp/etc> in the guest "
+"(recursively).  If you boot the guest, can you see all of the copied files "
+"and directories?"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:84
+msgid "Shut the guest down and try copying multiple files and directories:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:86
+#, no-wrap
+msgid ""
+" virt-copy-in -d Guest /home /etc/issue /tmp\n"
+"\n"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:88
+msgid "Copy some files out of a guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:90
+msgid ""
+"L<virt-copy-out(1)> can recursively copy files and directories out of a "
+"guest or disk image."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:95
+msgid "Note the final space and period in the command is not a typo."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:97
+msgid "This should copy C</home> from the guest into the current directory."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:99
+msgid "Run virt-df."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:101
+msgid "L<virt-df(1)> lists disk space.  Run:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:103
+#, fuzzy, no-wrap
+#| msgid ""
+#| " df\n"
+#| "\n"
+msgid ""
+" virt-df\n"
+"\n"
+msgstr ""
+" df\n"
+"\n"
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:105
+msgid ""
+"You can try comparing this to the results from L<df(1)> inside the guest, "
+"but there are some provisos:"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:112
+msgid "The guest must be idle."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:116
+msgid "The guest disks must be synched using L<sync(1)>."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:120
+msgid ""
+"Any action such as booting the guest will write log files causing the "
+"numbers to change."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:125
+msgid ""
+"We don't guarantee that the numbers will be identical even under these "
+"circumstances.  They should be similar.  It would indicate a bug if you saw "
+"greatly differing numbers."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:129
+msgid "Try importing virt-df CSV output into a spreadsheet or database."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:131 ../src/guestfs.pod:3083
+msgid "Run:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:133
+#, no-wrap
+msgid ""
+" virt-df --csv > /tmp/report.csv\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:135
+msgid ""
+"Now try to load this into your favorite spreadsheet or database.  Are the "
+"results reproduced faithfully in the spreadsheet/database?"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:138
+msgid ""
+"http://www.postgresql.org/docs/8.1/static/sql-copy.html http://dev.mysql.com/"
+"doc/refman/5.1/en/load-data.html"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:141
+msgid "B<*> Edit a file in a B<shut off> guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:143
+msgid ""
+"L<virt-edit(1)> can edit files in guests.  Try this command on a RHEL or "
+"Fedora guest:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:146
+#, no-wrap
+msgid ""
+" virt-edit LinuxGuest /etc/sysconfig/network\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:148
+msgid "On other Linux guests try editing other files such as:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:150
+#, no-wrap
+msgid ""
+" virt-edit LinuxGuest /etc/motd\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:152
+msgid "Are the changes seen inside the guest when it is booted?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:154
+msgid "Display the filesystems / partitions / LVs in a guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:156
+msgid ""
+"L<virt-filesystems(1)> can be used to display filesystems in a guest.  Try "
+"this command on any disk image or guest:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:159
+#, fuzzy, no-wrap
+#| msgid ""
+#| " virt-filesystems --format=raw -a disk.img\n"
+#| "\n"
+msgid ""
+" virt-filesystems -a /path/to/disk.img --all --long -h\n"
+"\n"
+msgstr ""
+" virt-filesystems --format=raw -a диск.img\n"
+"\n"
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:163
+#, fuzzy, no-wrap
+#| msgid ""
+#| " virt-filesystems [--options] -d domname\n"
+#| "\n"
+msgid ""
+" virt-filesystems -d Guest --all --long -h\n"
+"\n"
+msgstr ""
+" virt-filesystems [--параметри] -d назва_домену\n"
+"\n"
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:165
+msgid "Do the results match what is seen in the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:167
+msgid "Run virt-inspector on all your guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:169
+msgid ""
+"Use L<virt-inspector(1)> to get a report on all of your guests or disk "
+"images:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:172
+#, fuzzy, no-wrap
+#| msgid ""
+#| " virt-cat disk.img file\n"
+#| "\n"
+msgid ""
+" virt-inspector -a /path/to/disk.img | less\n"
+"\n"
+msgstr ""
+" virt-cat диск.img файл\n"
+"\n"
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:176
+#, no-wrap
+msgid ""
+" virt-inspector -d Guest | less\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:178
+msgid "Do the results match what is actually in the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:180
+msgid "Try the auditing features of virt-ls on all your guests."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:184
+#, fuzzy, no-wrap
+#| msgid ""
+#| " $ virt-ls -R -d guest /tmp\n"
+#| " foo\n"
+#| " foo/bar\n"
+#| " [etc.]\n"
+#| "\n"
+msgid ""
+" virt-ls -lR -d Guest / | grep '^- [42]'\n"
+"\n"
+msgstr ""
+" $ virt-ls -R -d guest /tmp\n"
+" foo\n"
+" foo/bar\n"
+" [тощо]\n"
+"\n"
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:188
+#, fuzzy, no-wrap
+#| msgid ""
+#| " $ virt-ls -R -d guest /tmp\n"
+#| " foo\n"
+#| " foo/bar\n"
+#| " [etc.]\n"
+#| "\n"
+msgid ""
+" virt-ls -lR -d Guest / | grep '^d ...7'\n"
+"\n"
+msgstr ""
+" $ virt-ls -R -d guest /tmp\n"
+" foo\n"
+" foo/bar\n"
+" [тощо]\n"
+"\n"
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:192
+#, fuzzy, no-wrap
+#| msgid ""
+#| " $ virt-ls -R -d guest /tmp\n"
+#| " foo\n"
+#| " foo/bar\n"
+#| " [etc.]\n"
+#| "\n"
+msgid ""
+" virt-ls -lR -d Guest / | grep '^s'\n"
+"\n"
+msgstr ""
+" $ virt-ls -R -d guest /tmp\n"
+" foo\n"
+" foo/bar\n"
+" [тощо]\n"
+"\n"
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:196
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest / | grep -i '^-.*\\.png$'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:198
+msgid "Display files larger than 10MB in home directories:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:200
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest /home | awk '$3 > 10*1024*1024'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:204
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest --time-days / | awk '$6 <= 7'\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:208
+#, no-wrap
+msgid ""
+" virt-ls -lR -d Guest --time-days / | grep '^-' | awk '$6 < 1'\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:210
+msgid "Do the results match what is in the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:212
+msgid "Create a disk image from a tarball."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:214
+msgid ""
+"Use L<virt-make-fs(1)> to create a disk image from any tarball that you "
+"happen to have:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:217
+#, no-wrap
+msgid ""
+" virt-make-fs --partition=mbr --type=vfat /any/tarball.tar.gz output.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:219
+msgid ""
+"Add 'output.img' as a raw disk to an existing guest.  Check the guest can "
+"see the files.  This test is particularly useful if you try it with a "
+"Windows guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:223
+msgid "Try other partitioning schemes, eg. I<--partition=gpt>."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:225
+msgid "Try other filesystem formats, eg. I<--type=ntfs>, I<--type=ext2>."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:227
+msgid "B<*> Run virt-rescue on a B<shut off> disk image or guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:229
+msgid ""
+"Use L<virt-rescue(1)> to examine, rescue or repair a B<shut off> guest or "
+"disk image:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:232
+#, fuzzy, no-wrap
+#| msgid ""
+#| " virt-cat disk.img file\n"
+#| "\n"
+msgid ""
+" virt-rescue -a /path/to/disk.img\n"
+"\n"
+msgstr ""
+" virt-cat диск.img файл\n"
+"\n"
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:236
+#, no-wrap
+msgid ""
+" virt-rescue -d Guest\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:238
+msgid "Can you use ordinary shell commands to examine the guest?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:240
+msgid "B<*> Resize your guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:242
+msgid ""
+"Use L<virt-resize(1)> to give a guest some more disk space.  For example, if "
+"you have a disk image that is smaller than 30G, increase it to 30G by doing:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:246
+#, no-wrap
+msgid ""
+" truncate -s 30G newdisk.img\n"
+" virt-filesystems -a /path/to/olddisk.img --all --long -h\n"
+" virt-resize /path/to/olddisk.img newdisk.img --expand /dev/sda1\n"
+" qemu-kvm -m 1024 -hda newdisk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:251
+msgid "Does the guest still boot? Try expanding other partitions."
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:253
+msgid "B<*> Sparsify a guest disk."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:255
+msgid "Using L<virt-sparsify(1)>, make a disk image more sparse:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:257
+#, fuzzy, no-wrap
+#| msgid ""
+#| " virt-list-partitions [--options] disk.img [disk.img ...]\n"
+#| "\n"
+msgid ""
+" virt-sparsify /path/to/olddisk.img newdisk.img\n"
+"\n"
+msgstr ""
+" virt-list-partitions [--параметри] диск.img [диск.img ...]\n"
+"\n"
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:259
+msgid ""
+"Is C<newdisk.img> still bootable after sparsifying? Is the resulting disk "
+"image smaller (use C<du> to check)?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:262
+msgid "B<*> \"sysprep\" a B<shut off> Linux guest."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:264
+msgid ""
+"Note that this really will mess up an existing guest, so it's better to "
+"clone the guest before trying this."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:267
+#, no-wrap
+msgid ""
+" virt-sysprep --hostname newhost.example.com -a /path/to/disk.img\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:269
+msgid ""
+"Was the sysprep successful? After booting, what changes were made and were "
+"they successful?"
+msgstr ""
+
+#. type: =head2
+#: ../examples/guestfs-testing.pod:272
+msgid "Dump the Windows Registry from your Windows guests."
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:274
+msgid ""
+"Use L<virt-win-reg(1)> to dump out the Windows Registry from any Windows "
+"guests that you have."
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:277
+#, no-wrap
+msgid ""
+" virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\\Software' |\n"
+"   less\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:280
+#, no-wrap
+msgid ""
+" virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\\System' |\n"
+"   less\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:283
+msgid "Does the output match running C<regedit> inside the guest?"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:285
+msgid ""
+"A recent feature is the ability to dump user registries, so try this, "
+"replacing I<username> with the name of a local user in the guest:"
+msgstr ""
+
+#. type: verbatim
+#: ../examples/guestfs-testing.pod:288
+#, no-wrap
+msgid ""
+" virt-win-reg --unsafe-printable-strings WindowsGuest 'HKEY_USERS\\username' |\n"
+"   less\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../examples/guestfs-testing.pod:293
+#, fuzzy
+#| msgid ""
+#| "L<guestfs(3)>, L<guestfish(1)>, L<virt-copy-out(1)>, L<virt-edit(1)>, "
+#| "L<virt-tar-out(1)>, L<http://libguestfs.org/>."
+msgid ""
+"L<guestfs(3)>, L<guestfish(1)>, L<guestfs-examples(3)>, L<http://libguestfs."
+"org/>."
+msgstr ""
+"L<guestfs(3)>, L<guestfish(1)>, L<virt-copy-out(1)>, L<virt-edit(1)>, L<virt-"
+"tar-out(1)>, L<http://libguestfs.org/>."
+
 #. type: =head2
 #: ../fish/guestfish-actions.pod:1
 msgid "add-cdrom"
@@ -21281,7 +22140,7 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../fish/guestfish.pod:1196 ../sparsify/virt-sparsify.pod:236
+#: ../fish/guestfish.pod:1196 ../sparsify/virt-sparsify.pod:235
 #: ../src/guestfs.pod:3257
 msgid "TMPDIR"
 msgstr ""
@@ -21442,7 +22301,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../fish/guestfish.pod:1302 ../src/guestfs.pod:3354
+#: ../fish/guestfish.pod:1302 ../src/guestfs.pod:3355
 #: ../test-tool/libguestfs-test-tool.pod:112
 msgid "Copyright (C) 2009-2011 Red Hat Inc.  L<http://libguestfs.org/>"
 msgstr ""
@@ -22341,7 +23200,7 @@ msgstr ""
 
 #. type: textblock
 #: ../inspector/virt-inspector.pod:111 ../resize/virt-resize.pod:391
-#: ../resize/virt-resize.pod:483 ../sparsify/virt-sparsify.pod:132
+#: ../resize/virt-resize.pod:483 ../sparsify/virt-sparsify.pod:131
 #: ../tools/virt-list-filesystems.pl:101 ../tools/virt-list-partitions.pl:102
 #: ../tools/virt-tar.pl:151 ../tools/virt-win-reg.pl:152
 msgid ""
@@ -23529,7 +24388,7 @@ msgstr ""
 
 #. type: =item
 #: ../resize/virt-resize.pod:31 ../resize/virt-resize.pod:597
-#: ../sparsify/virt-sparsify.pod:203 ../src/guestfs.pod:484
+#: ../sparsify/virt-sparsify.pod:202 ../src/guestfs.pod:484
 #: ../src/guestfs.pod:1302 ../src/guestfs.pod:1441 ../src/guestfs.pod:2690
 msgid "1."
 msgstr "1."
@@ -23569,7 +24428,7 @@ msgstr ""
 
 #. type: =item
 #: ../resize/virt-resize.pod:44 ../resize/virt-resize.pod:604
-#: ../sparsify/virt-sparsify.pod:210 ../src/guestfs.pod:490
+#: ../sparsify/virt-sparsify.pod:209 ../src/guestfs.pod:490
 #: ../src/guestfs.pod:1306 ../src/guestfs.pod:1445 ../src/guestfs.pod:2715
 msgid "2."
 msgstr "2."
@@ -23592,7 +24451,7 @@ msgstr ""
 
 #. type: =item
 #: ../resize/virt-resize.pod:52 ../resize/virt-resize.pod:610
-#: ../sparsify/virt-sparsify.pod:216 ../src/guestfs.pod:501
+#: ../sparsify/virt-sparsify.pod:215 ../src/guestfs.pod:501
 #: ../src/guestfs.pod:1451
 msgid "3."
 msgstr "3."
@@ -24221,7 +25080,7 @@ msgstr ""
 
 #. type: textblock
 #: ../resize/virt-resize.pod:343 ../resize/virt-resize.pod:404
-#: ../resize/virt-resize.pod:531 ../sparsify/virt-sparsify.pod:145
+#: ../resize/virt-resize.pod:531 ../sparsify/virt-sparsify.pod:144
 msgid "You can give this option multiple times."
 msgstr ""
 
@@ -24289,14 +25148,14 @@ msgid "Note that you cannot use I<--expand> and I<--shrink> together."
 msgstr ""
 
 #. type: =item
-#: ../resize/virt-resize.pod:386 ../sparsify/virt-sparsify.pod:125
+#: ../resize/virt-resize.pod:386 ../sparsify/virt-sparsify.pod:124
 #: ../tools/virt-list-filesystems.pl:91 ../tools/virt-list-partitions.pl:92
 #: ../tools/virt-tar.pl:141 ../tools/virt-win-reg.pl:142
 msgid "B<--format> raw"
 msgstr "B<--format> raw"
 
 #. type: textblock
-#: ../resize/virt-resize.pod:388 ../sparsify/virt-sparsify.pod:129
+#: ../resize/virt-resize.pod:388 ../sparsify/virt-sparsify.pod:128
 msgid ""
 "Specify the format of the input disk image.  If this flag is not given then "
 "it is auto-detected from the image itself."
@@ -24375,12 +25234,12 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../resize/virt-resize.pod:429 ../sparsify/virt-sparsify.pod:147
+#: ../resize/virt-resize.pod:429 ../sparsify/virt-sparsify.pod:146
 msgid "B<--machine-readable>"
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:431 ../sparsify/virt-sparsify.pod:149
+#: ../resize/virt-resize.pod:431 ../sparsify/virt-sparsify.pod:148
 msgid ""
 "This option is used to make the output more machine friendly when being "
 "parsed by other programs.  See L</MACHINE READABLE OUTPUT> below."
@@ -24637,7 +25496,7 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../resize/virt-resize.pod:569 ../sparsify/virt-sparsify.pod:177
+#: ../resize/virt-resize.pod:569 ../sparsify/virt-sparsify.pod:176
 msgid "MACHINE READABLE OUTPUT"
 msgstr ""
 
@@ -24650,7 +25509,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:575 ../sparsify/virt-sparsify.pod:183
+#: ../resize/virt-resize.pod:575 ../sparsify/virt-sparsify.pod:182
 msgid "There are two ways to use this option."
 msgstr ""
 
@@ -24675,33 +25534,33 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:587 ../sparsify/virt-sparsify.pod:193
+#: ../resize/virt-resize.pod:587 ../sparsify/virt-sparsify.pod:192
 msgid ""
 "A list of features is printed, one per line, and the program exits with "
 "status 0."
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:590 ../sparsify/virt-sparsify.pod:196
+#: ../resize/virt-resize.pod:590 ../sparsify/virt-sparsify.pod:195
 msgid ""
 "Secondly use the option in conjunction with other options to make the "
 "regular program output more machine friendly."
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:593 ../sparsify/virt-sparsify.pod:199
+#: ../resize/virt-resize.pod:593 ../sparsify/virt-sparsify.pod:198
 msgid "At the moment this means:"
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:599 ../sparsify/virt-sparsify.pod:205
+#: ../resize/virt-resize.pod:599 ../sparsify/virt-sparsify.pod:204
 msgid ""
 "Progress bar messages can be parsed from stdout by looking for this regular "
 "expression:"
 msgstr ""
 
 #. type: verbatim
-#: ../resize/virt-resize.pod:602 ../sparsify/virt-sparsify.pod:208
+#: ../resize/virt-resize.pod:602 ../sparsify/virt-sparsify.pod:207
 #, no-wrap
 msgid ""
 " ^[0-9]+/[0-9]+$\n"
@@ -24709,7 +25568,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../resize/virt-resize.pod:606 ../sparsify/virt-sparsify.pod:212
+#: ../resize/virt-resize.pod:606 ../sparsify/virt-sparsify.pod:211
 msgid ""
 "The calling program should treat messages sent to stdout (except for "
 "progress bar messages) as status messages.  They can be logged and/or "
@@ -25067,59 +25926,60 @@ msgstr ""
 
 #. type: textblock
 #: ../sparsify/virt-sparsify.pod:116
-msgid "Supported and known-working output formats are: C<raw>, C<qcow2>."
+msgid ""
+"Supported and known-working output formats are: C<raw>, C<qcow2>, C<vdi>."
 msgstr ""
 
 #. type: textblock
 #: ../sparsify/virt-sparsify.pod:118
 msgid ""
 "You can also use any format supported by the L<qemu-img(1)> program, eg. "
-"C<vdi> or C<vmdk>, but support for other formats is reliant on qemu."
+"C<vmdk>, but support for other formats is reliant on qemu."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:122
+#: ../sparsify/virt-sparsify.pod:121
 msgid ""
 "Specifying the I<--convert> option is usually a good idea, because then virt-"
 "sparsify doesn't need to try to guess the input format."
 msgstr ""
 
 #. type: =item
-#: ../sparsify/virt-sparsify.pod:127
+#: ../sparsify/virt-sparsify.pod:126
 msgid "B<--format> qcow2"
 msgstr ""
 
 #. type: =item
-#: ../sparsify/virt-sparsify.pod:135
+#: ../sparsify/virt-sparsify.pod:134
 msgid "B<--ignore> filesystem"
 msgstr ""
 
 #. type: =item
-#: ../sparsify/virt-sparsify.pod:137
+#: ../sparsify/virt-sparsify.pod:136
 msgid "B<--ignore> volgroup"
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:139
+#: ../sparsify/virt-sparsify.pod:138
 msgid ""
 "Ignore the named filesystem.  Free space on the filesystem will not be "
 "zeroed, but existing blocks of zeroes will still be sparsified."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:142
+#: ../sparsify/virt-sparsify.pod:141
 msgid ""
 "In the second form, this ignores the named volume group.  Use the volume "
 "group name without the C</dev/> prefix, eg. I<--ignore vg_foo>"
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:157
+#: ../sparsify/virt-sparsify.pod:156
 msgid "This disables progress bars and other unnecessary output."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:179
+#: ../sparsify/virt-sparsify.pod:178
 msgid ""
 "The I<--machine-readable> option can be used to make the output more machine "
 "friendly, which is useful when calling virt-sparsify from other programs, "
@@ -25127,14 +25987,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:185
+#: ../sparsify/virt-sparsify.pod:184
 msgid ""
 "Firstly use the option on its own to query the capabilities of the virt-"
 "sparsify binary.  Typical output looks like this:"
 msgstr ""
 
 #. type: verbatim
-#: ../sparsify/virt-sparsify.pod:188
+#: ../sparsify/virt-sparsify.pod:187
 #, no-wrap
 msgid ""
 " $ virt-sparsify --machine-readable\n"
@@ -25145,7 +26005,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:218
+#: ../sparsify/virt-sparsify.pod:217
 msgid ""
 "The calling program should treat messages sent to stderr as error messages.  "
 "In addition, virt-sparsify exits with a non-zero status code if there was a "
@@ -25153,21 +26013,21 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:224
+#: ../sparsify/virt-sparsify.pod:223
 msgid ""
 "All versions of virt-sparsify have supported the I<--machine-readable> "
 "option."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:238
+#: ../sparsify/virt-sparsify.pod:237
 msgid ""
 "Location of the temporary directory used for the potentially large temporary "
 "overlay file."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:241
+#: ../sparsify/virt-sparsify.pod:240
 msgid ""
 "You should ensure there is enough free space in the worst case for a full "
 "copy of the source disk (I<virtual> size), or else set C<$TMPDIR> to point "
@@ -25175,18 +26035,18 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:245
+#: ../sparsify/virt-sparsify.pod:244
 msgid "This defaults to C</tmp>."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:249
+#: ../sparsify/virt-sparsify.pod:248
 msgid ""
 "For other environment variables, see L<guestfs(3)/ENVIRONMENT VARIABLES>."
 msgstr ""
 
 #. type: textblock
-#: ../sparsify/virt-sparsify.pod:253
+#: ../sparsify/virt-sparsify.pod:252
 msgid ""
 "L<virt-filesystems(1)>, L<virt-df(1)>, L<virt-resize(1)>, L<virt-rescue(1)>, "
 "L<guestfs(3)>, L<guestfish(1)>, L<truncate(1)>, L<fallocate(1)>, L<qemu-img"
@@ -40689,11 +41549,6 @@ msgstr ""
 msgid "eg: C<SKIP_TEST_COMMAND_3=1> skips test #3 of L</guestfs_command>."
 msgstr ""
 
-#. type: textblock
-#: ../src/guestfs.pod:2792
-msgid "or:"
-msgstr "або:"
-
 #. type: verbatim
 #: ../src/guestfs.pod:2794
 #, no-wrap
@@ -41316,11 +42171,6 @@ msgstr ""
 msgid "Push and pull from Transifex."
 msgstr ""
 
-#. type: textblock
-#: ../src/guestfs.pod:3083
-msgid "Run:"
-msgstr ""
-
 #. type: verbatim
 #: ../src/guestfs.pod:3085
 #, no-wrap
@@ -41606,33 +42456,33 @@ msgid ""
 "L<virt-filesystems(1)>, L<virt-inspector(1)>, L<virt-list-filesystems(1)>, "
 "L<virt-list-partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)>, L<virt-rescue"
 "(1)>, L<virt-resize(1)>, L<virt-sparsify(1)>, L<virt-sysprep(1)>, L<virt-tar"
-"(1)>, L<virt-tar-in(1)>, L<virt-tar-out(1)>, L<virt-win-reg(1)>, L<qemu(1)>, "
-"L<febootstrap(1)>, L<febootstrap-supermin-helper(8)>, L<hivex(3)>, L<stap(1)"
-">, L<http://libguestfs.org/>."
+"(1)>, L<virt-tar-in(1)>, L<virt-tar-out(1)>, L<virt-win-reg(1)>, L<guestfs-"
+"testing(1)>, L<qemu(1)>, L<febootstrap(1)>, L<febootstrap-supermin-helper(8)"
+">, L<hivex(3)>, L<stap(1)>, L<http://libguestfs.org/>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3308
+#: ../src/guestfs.pod:3309
 msgid ""
 "Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, L<lvm"
 "(8)>, L<disktype(1)>."
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:3315 ../tools/virt-make-fs.pl:571
+#: ../src/guestfs.pod:3316 ../tools/virt-make-fs.pl:571
 #: ../tools/virt-win-reg.pl:772
 msgid "BUGS"
 msgstr "ВАДИ"
 
 #. type: textblock
-#: ../src/guestfs.pod:3317
+#: ../src/guestfs.pod:3318
 msgid "To get a list of bugs against libguestfs use this link:"
 msgstr ""
 "Щоб переглянути список відомих вад у libguestfs, скористайтеся таким "
 "посиланням:"
 
 #. type: textblock
-#: ../src/guestfs.pod:3319
+#: ../src/guestfs.pod:3320
 msgid ""
 "L<https://bugzilla.redhat.com/buglist.cgi?"
 "component=libguestfs&product=Virtualization+Tools>"
@@ -41641,12 +42491,12 @@ msgstr ""
 "component=libguestfs&product=Virtualization+Tools>"
 
 #. type: textblock
-#: ../src/guestfs.pod:3321
+#: ../src/guestfs.pod:3322
 msgid "To report a new bug against libguestfs use this link:"
 msgstr "Для звітування щодо вад у libguestfs скористайтеся цим посиланням:"
 
 #. type: textblock
-#: ../src/guestfs.pod:3323
+#: ../src/guestfs.pod:3324
 msgid ""
 "L<https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools>"
@@ -41655,27 +42505,27 @@ msgstr ""
 "component=libguestfs&product=Virtualization+Tools>"
 
 #. type: textblock
-#: ../src/guestfs.pod:3325
+#: ../src/guestfs.pod:3326
 msgid "When reporting a bug, please check:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3331
+#: ../src/guestfs.pod:3332
 msgid "That the bug hasn't been reported already."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3335
+#: ../src/guestfs.pod:3336
 msgid "That you are testing a recent version."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3339
+#: ../src/guestfs.pod:3340
 msgid "Describe the bug accurately, and give a way to reproduce it."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:3343
+#: ../src/guestfs.pod:3344
 msgid ""
 "Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
 "bug report."
diff --git a/po-docs/uk/guestfish.1 b/po-docs/uk/guestfish.1
index f7ab4cf..df2d183 100644
--- a/po-docs/uk/guestfish.1
+++ b/po-docs/uk/guestfish.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "guestfish 1"
-.TH guestfish 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH guestfish 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/guestfs-testing.pod b/po-docs/uk/guestfs-testing.pod
new file mode 100644
index 0000000..d869031
--- /dev/null
+++ b/po-docs/uk/guestfs-testing.pod
@@ -0,0 +1,315 @@
+=encoding utf8
+
+=head1 НАЗВА
+
+guestfs-testing - manual testing of libguestfs, you can help!
+
+=head1 ОПИС
+
+This page has manual tests you can try on libguestfs.  Everyone has a
+slightly different combination of platform, hardware and guests, so this
+testing is very valuable.  Thanks for helping out!
+
+These tests require libguestfs E<ge> 1.14.
+
+Tests marked with a B<*> (asterisk) can B<destroy data> if you're not
+careful.  The others are safe and won't modify anything.
+
+You can report bugs you find through this link:
+
+https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
+
+or post on the mailing list (registration is B<not> required, but if you're
+not registered then you'll have to wait for a moderator to manually approve
+your message):
+
+https://www.redhat.com/mailman/listinfo/libguestfs
+
+=head1 TESTS
+
+=head2 Check KVM acceleration is being used.
+
+If your host has hardware virt acceleration, then with a hot cache
+libguestfs should be able to start up in a few seconds.  Run the following
+command a few times:
+
+ time guestfish -a /dev/null run
+
+After a few runs, the time should settle down to a few seconds (under 5
+seconds on fast 64 bit hardware).
+
+How to check for hardware virt:
+
+http://virt-tools.org/learning/check-hardware-virt/
+
+If the command above does not work at all, use L<libguestfs-test-tool(1)>.
+
+=head2 Run virt-alignment-scan on all your guests.
+
+Run L<virt-alignment-scan(1)> on guests or disk images:
+
+ virt-alignment-scan -a /path/to/disk.img
+
+або:
+
+ virt-alignment-scan -d Guest
+
+Does the alignment report match how the guest partitions are aligned?
+
+=head2 Run virt-cat on some files in guests.
+
+L<virt-cat(1)> can display files from guests.  For a Linux guest, try:
+
+ virt-cat LinuxGuest /etc/passwd
+
+A recent feature is support for Windows paths, for example:
+
+ virt-cat WindowsGuest 'c:\windows\win.ini'
+
+An even better test is if you have a Windows guest with multiple drives.  Do
+C<D:>, C<E:> etc paths work correctly?
+
+=head2 B<*> Copy some files into a B<shut off> guest.
+
+L<virt-copy-in(1)> can recursively copy files and directories into a guest
+or disk image.
+
+ virt-copy-in -d Guest /etc /tmp
+
+This should copy local directory C</etc> to C</tmp/etc> in the guest
+(recursively).  If you boot the guest, can you see all of the copied files
+and directories?
+
+Shut the guest down and try copying multiple files and directories:
+
+ virt-copy-in -d Guest /home /etc/issue /tmp
+
+=head2 Copy some files out of a guest.
+
+L<virt-copy-out(1)> can recursively copy files and directories out of a
+guest or disk image.
+
+ virt-copy-out -d Guest /home .
+
+Note the final space and period in the command is not a typo.
+
+This should copy C</home> from the guest into the current directory.
+
+=head2 Run virt-df.
+
+L<virt-df(1)> lists disk space.  Run:
+
+ virt-df
+
+You can try comparing this to the results from L<df(1)> inside the guest,
+but there are some provisos:
+
+=over 4
+
+=item *
+
+The guest must be idle.
+
+=item *
+
+The guest disks must be synched using L<sync(1)>.
+
+=item *
+
+Any action such as booting the guest will write log files causing the
+numbers to change.
+
+=back
+
+We don't guarantee that the numbers will be identical even under these
+circumstances.  They should be similar.  It would indicate a bug if you saw
+greatly differing numbers.
+
+=head2 Try importing virt-df CSV output into a spreadsheet or database.
+
+Run:
+
+ virt-df --csv > /tmp/report.csv
+
+Now try to load this into your favorite spreadsheet or database.  Are the
+results reproduced faithfully in the spreadsheet/database?
+
+http://www.postgresql.org/docs/8.1/static/sql-copy.html
+http://dev.mysql.com/doc/refman/5.1/en/load-data.html
+
+=head2 B<*> Edit a file in a B<shut off> guest.
+
+L<virt-edit(1)> can edit files in guests.  Try this command on a RHEL or
+Fedora guest:
+
+ virt-edit LinuxGuest /etc/sysconfig/network
+
+On other Linux guests try editing other files such as:
+
+ virt-edit LinuxGuest /etc/motd
+
+Are the changes seen inside the guest when it is booted?
+
+=head2 Display the filesystems / partitions / LVs in a guest.
+
+L<virt-filesystems(1)> can be used to display filesystems in a guest.  Try
+this command on any disk image or guest:
+
+ virt-filesystems -a /path/to/disk.img --all --long -h
+
+або:
+
+ virt-filesystems -d Guest --all --long -h
+
+Do the results match what is seen in the guest?
+
+=head2 Run virt-inspector on all your guests.
+
+Use L<virt-inspector(1)> to get a report on all of your guests or disk
+images:
+
+ virt-inspector -a /path/to/disk.img | less
+
+або:
+
+ virt-inspector -d Guest | less
+
+Do the results match what is actually in the guest?
+
+=head2 Try the auditing features of virt-ls on all your guests.
+
+List all setuid or setgid programs in a Linux virtual machine:
+
+ virt-ls -lR -d Guest / | grep '^- [42]'
+
+List all public-writable directories in a Linux virtual machine:
+
+ virt-ls -lR -d Guest / | grep '^d ...7'
+
+List all Unix domain sockets in a Linux virtual machine:
+
+ virt-ls -lR -d Guest / | grep '^s'
+
+List all regular files with filenames ending in '.png':
+
+ virt-ls -lR -d Guest / | grep -i '^-.*\.png$'
+
+Display files larger than 10MB in home directories:
+
+ virt-ls -lR -d Guest /home | awk '$3 > 10*1024*1024'
+
+Find everything modified in the last 7 days:
+
+ virt-ls -lR -d Guest --time-days / | awk '$6 <= 7'
+
+Find regular files modified in the last 24 hours:
+
+ virt-ls -lR -d Guest --time-days / | grep '^-' | awk '$6 < 1'
+
+Do the results match what is in the guest?
+
+=head2 Create a disk image from a tarball.
+
+Use L<virt-make-fs(1)> to create a disk image from any tarball that you
+happen to have:
+
+ virt-make-fs --partition=mbr --type=vfat /any/tarball.tar.gz output.img
+
+Add 'output.img' as a raw disk to an existing guest.  Check the guest can
+see the files.  This test is particularly useful if you try it with a
+Windows guest.
+
+Try other partitioning schemes, eg. I<--partition=gpt>.
+
+Try other filesystem formats, eg. I<--type=ntfs>, I<--type=ext2>.
+
+=head2 B<*> Run virt-rescue on a B<shut off> disk image or guest.
+
+Use L<virt-rescue(1)> to examine, rescue or repair a B<shut off> guest or
+disk image:
+
+ virt-rescue -a /path/to/disk.img
+
+або:
+
+ virt-rescue -d Guest
+
+Can you use ordinary shell commands to examine the guest?
+
+=head2 B<*> Resize your guests.
+
+Use L<virt-resize(1)> to give a guest some more disk space.  For example, if
+you have a disk image that is smaller than 30G, increase it to 30G by doing:
+
+ truncate -s 30G newdisk.img
+ virt-filesystems -a /path/to/olddisk.img --all --long -h
+ virt-resize /path/to/olddisk.img newdisk.img --expand /dev/sda1
+ qemu-kvm -m 1024 -hda newdisk.img
+
+Does the guest still boot? Try expanding other partitions.
+
+=head2 B<*> Sparsify a guest disk.
+
+Using L<virt-sparsify(1)>, make a disk image more sparse:
+
+ virt-sparsify /path/to/olddisk.img newdisk.img
+
+Is C<newdisk.img> still bootable after sparsifying? Is the resulting disk
+image smaller (use C<du> to check)?
+
+=head2 B<*> "sysprep" a B<shut off> Linux guest.
+
+Note that this really will mess up an existing guest, so it's better to
+clone the guest before trying this.
+
+ virt-sysprep --hostname newhost.example.com -a /path/to/disk.img
+
+Was the sysprep successful? After booting, what changes were made and were
+they successful?
+
+=head2 Dump the Windows Registry from your Windows guests.
+
+Use L<virt-win-reg(1)> to dump out the Windows Registry from any Windows
+guests that you have.
+
+ virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\Software' |
+   less
+
+ virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\System' |
+   less
+
+Does the output match running C<regedit> inside the guest?
+
+A recent feature is the ability to dump user registries, so try this,
+replacing I<username> with the name of a local user in the guest:
+
+ virt-win-reg --unsafe-printable-strings WindowsGuest 'HKEY_USERS\username' |
+   less
+
+=head1 ТАКОЖ ПЕРЕГЛЯНЬТЕ
+
+L<guestfs(3)>, L<guestfish(1)>, L<guestfs-examples(3)>,
+L<http://libguestfs.org/>.
+
+=head1 АВТОРИ
+
+Richard W.M. Jones (C<rjones at redhat dot com>)
+
+=head1 АВТОРСЬКІ ПРАВА
+
+Copyright (C) 2011 Red Hat Inc. L<http://libguestfs.org/>
+
+This library is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+This library 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 Lesser General Public License
+for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this library; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
diff --git a/po-docs/uk/guestfs.3 b/po-docs/uk/guestfs.3
index b22184c..dd6ba10 100644
--- a/po-docs/uk/guestfs.3
+++ b/po-docs/uk/guestfs.3
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "guestfs 3"
-.TH guestfs 3 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH guestfs 3 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -11817,7 +11817,7 @@ use in case \f(CW\*(C`/var/tmp\*(C'\fR is not large enough.
 \&\fIvirt\-list\-partitions\fR\|(1), \fIvirt\-ls\fR\|(1), \fIvirt\-make\-fs\fR\|(1),
 \&\fIvirt\-rescue\fR\|(1), \fIvirt\-resize\fR\|(1), \fIvirt\-sparsify\fR\|(1),
 \&\fIvirt\-sysprep\fR\|(1), \fIvirt\-tar\fR\|(1), \fIvirt\-tar\-in\fR\|(1), \fIvirt\-tar\-out\fR\|(1),
-\&\fIvirt\-win\-reg\fR\|(1), \fIqemu\fR\|(1), \fIfebootstrap\fR\|(1),
+\&\fIvirt\-win\-reg\fR\|(1), \fIguestfs\-testing\fR\|(1), \fIqemu\fR\|(1), \fIfebootstrap\fR\|(1),
 \&\fIfebootstrap\-supermin\-helper\fR\|(8), \fIhivex\fR\|(3), \fIstap\fR\|(1),
 <http://libguestfs.org/>.
 .PP
diff --git a/po-docs/uk/guestfs.pod b/po-docs/uk/guestfs.pod
index 2b90947..72687b5 100644
--- a/po-docs/uk/guestfs.pod
+++ b/po-docs/uk/guestfs.pod
@@ -3166,7 +3166,7 @@ L<virt-inspector(1)>, L<virt-list-filesystems(1)>,
 L<virt-list-partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)>,
 L<virt-rescue(1)>, L<virt-resize(1)>, L<virt-sparsify(1)>,
 L<virt-sysprep(1)>, L<virt-tar(1)>, L<virt-tar-in(1)>, L<virt-tar-out(1)>,
-L<virt-win-reg(1)>, L<qemu(1)>, L<febootstrap(1)>,
+L<virt-win-reg(1)>, L<guestfs-testing(1)>, L<qemu(1)>, L<febootstrap(1)>,
 L<febootstrap-supermin-helper(8)>, L<hivex(3)>, L<stap(1)>,
 L<http://libguestfs.org/>.
 
diff --git a/po-docs/uk/guestmount.1 b/po-docs/uk/guestmount.1
index 7cc04dc..874cfce 100644
--- a/po-docs/uk/guestmount.1
+++ b/po-docs/uk/guestmount.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "guestmount 1"
-.TH guestmount 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH guestmount 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/libguestfs-test-tool.1 b/po-docs/uk/libguestfs-test-tool.1
index dca98a8..b2f541a 100644
--- a/po-docs/uk/libguestfs-test-tool.1
+++ b/po-docs/uk/libguestfs-test-tool.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "libguestfs-test-tool 1"
-.TH libguestfs-test-tool 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH libguestfs-test-tool 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-alignment-scan.1 b/po-docs/uk/virt-alignment-scan.1
index cf71b33..a43b31a 100644
--- a/po-docs/uk/virt-alignment-scan.1
+++ b/po-docs/uk/virt-alignment-scan.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-alignment-scan 1"
-.TH virt-alignment-scan 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-alignment-scan 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-cat.1 b/po-docs/uk/virt-cat.1
index f405656..3beed78 100644
--- a/po-docs/uk/virt-cat.1
+++ b/po-docs/uk/virt-cat.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-cat 1"
-.TH virt-cat 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-cat 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-copy-in.1 b/po-docs/uk/virt-copy-in.1
index 3c12d06..f3318d5 100644
--- a/po-docs/uk/virt-copy-in.1
+++ b/po-docs/uk/virt-copy-in.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-copy-in 1"
-.TH virt-copy-in 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-copy-in 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-copy-out.1 b/po-docs/uk/virt-copy-out.1
index e2f90e4..5dfcf8b 100644
--- a/po-docs/uk/virt-copy-out.1
+++ b/po-docs/uk/virt-copy-out.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-copy-out 1"
-.TH virt-copy-out 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-copy-out 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-df.1 b/po-docs/uk/virt-df.1
index 8302d79..4425603 100644
--- a/po-docs/uk/virt-df.1
+++ b/po-docs/uk/virt-df.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-df 1"
-.TH virt-df 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-df 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -256,6 +256,29 @@ Enable verbose messages for debugging.
 .IP "\fB\-x\fR" 4
 .IX Item "-x"
 Enable tracing of libguestfs \s-1API\s0 calls.
+.SH "STATVFS NUMBERS"
+.IX Header "STATVFS NUMBERS"
+\&\f(CW\*(C`virt\-df\*(C'\fR (and \fIdf\fR\|(1)) get information by issuing a \fIstatvfs\fR\|(3) system
+call.  You can get the same information directly, either from the host
+(using libguestfs) or inside the guest:
+.IP "From the host" 4
+.IX Item "From the host"
+Run this command:
+.Sp
+.Vb 1
+\& guestfish \-\-ro \-d GuestName \-i statvfs /
+.Ve
+.Sp
+(change \f(CW\*(C`/\*(C'\fR to see stats for other filesystems).
+.IP "From inside the guest" 4
+.IX Item "From inside the guest"
+Run this command:
+.Sp
+.Vb 1
+\& python \-c \*(Aqimport os; s = os.statvfs ("/"); print s\*(Aq
+.Ve
+.Sp
+(change \f(CW\*(C`/\*(C'\fR to see stats for other filesystems).
 .SH "NOTE ABOUT CSV FORMAT"
 .IX Header "NOTE ABOUT CSV FORMAT"
 Comma-separated values (\s-1CSV\s0) is a deceptive format.  It \fIseems\fR like it
diff --git a/po-docs/uk/virt-df.pod b/po-docs/uk/virt-df.pod
index fea0f95..f9d83fb 100644
--- a/po-docs/uk/virt-df.pod
+++ b/po-docs/uk/virt-df.pod
@@ -186,6 +186,32 @@ Enable tracing of libguestfs API calls.
 
 =back
 
+=head1 STATVFS NUMBERS
+
+C<virt-df> (and L<df(1)>) get information by issuing a L<statvfs(3)> system
+call.  You can get the same information directly, either from the host
+(using libguestfs) or inside the guest:
+
+=over 4
+
+=item From the host
+
+Run this command:
+
+ guestfish --ro -d GuestName -i statvfs /
+
+(change C</> to see stats for other filesystems).
+
+=item From inside the guest
+
+Run this command:
+
+ python -c 'import os; s = os.statvfs ("/"); print s'
+
+(change C</> to see stats for other filesystems).
+
+=back
+
 =head1 NOTE ABOUT CSV FORMAT
 
 Comma-separated values (CSV) is a deceptive format.  It I<seems> like it
diff --git a/po-docs/uk/virt-edit.1 b/po-docs/uk/virt-edit.1
index eacd8bf..c071323 100644
--- a/po-docs/uk/virt-edit.1
+++ b/po-docs/uk/virt-edit.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-edit 1"
-.TH virt-edit 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-edit 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-filesystems.1 b/po-docs/uk/virt-filesystems.1
index ad09bb5..bf2e3d9 100644
--- a/po-docs/uk/virt-filesystems.1
+++ b/po-docs/uk/virt-filesystems.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-filesystems 1"
-.TH virt-filesystems 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-filesystems 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-inspector.1 b/po-docs/uk/virt-inspector.1
index d6d546d..fcbddaf 100644
--- a/po-docs/uk/virt-inspector.1
+++ b/po-docs/uk/virt-inspector.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-inspector 1"
-.TH virt-inspector 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-inspector 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-list-filesystems.1 b/po-docs/uk/virt-list-filesystems.1
index e099b50..0e773a0 100644
--- a/po-docs/uk/virt-list-filesystems.1
+++ b/po-docs/uk/virt-list-filesystems.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-list-filesystems.pl 1"
-.TH virt-list-filesystems.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-list-filesystems.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-list-partitions.1 b/po-docs/uk/virt-list-partitions.1
index 82fa7fe..faa2259 100644
--- a/po-docs/uk/virt-list-partitions.1
+++ b/po-docs/uk/virt-list-partitions.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-list-partitions.pl 1"
-.TH virt-list-partitions.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-list-partitions.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-ls.1 b/po-docs/uk/virt-ls.1
index 874a515..f6861ba 100644
--- a/po-docs/uk/virt-ls.1
+++ b/po-docs/uk/virt-ls.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-ls 1"
-.TH virt-ls 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-ls 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-make-fs.1 b/po-docs/uk/virt-make-fs.1
index 25e3d9f..3fdafc1 100644
--- a/po-docs/uk/virt-make-fs.1
+++ b/po-docs/uk/virt-make-fs.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-make-fs.pl 1"
-.TH virt-make-fs.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-make-fs.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-rescue.1 b/po-docs/uk/virt-rescue.1
index 3073e70..15be46c 100644
--- a/po-docs/uk/virt-rescue.1
+++ b/po-docs/uk/virt-rescue.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-rescue 1"
-.TH virt-rescue 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-rescue 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-resize.1 b/po-docs/uk/virt-resize.1
index 2b02074..dd9d68e 100644
--- a/po-docs/uk/virt-resize.1
+++ b/po-docs/uk/virt-resize.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-resize 1"
-.TH virt-resize 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-resize 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-sparsify.1 b/po-docs/uk/virt-sparsify.1
index 1006156..76cb260 100644
--- a/po-docs/uk/virt-sparsify.1
+++ b/po-docs/uk/virt-sparsify.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-sparsify 1"
-.TH virt-sparsify 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-sparsify 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -161,10 +161,10 @@ Display help.
 Use \f(CW\*(C`output\-format\*(C'\fR as the format for the destination image.  If this is
 not specified, then the input format is used.
 .Sp
-Supported and known-working output formats are: \f(CW\*(C`raw\*(C'\fR, \f(CW\*(C`qcow2\*(C'\fR.
+Supported and known-working output formats are: \f(CW\*(C`raw\*(C'\fR, \f(CW\*(C`qcow2\*(C'\fR, \f(CW\*(C`vdi\*(C'\fR.
 .Sp
 You can also use any format supported by the \fIqemu\-img\fR\|(1) program,
-eg. \f(CW\*(C`vdi\*(C'\fR or \f(CW\*(C`vmdk\*(C'\fR, but support for other formats is reliant on qemu.
+eg. \f(CW\*(C`vmdk\*(C'\fR, but support for other formats is reliant on qemu.
 .Sp
 Specifying the \fI\-\-convert\fR option is usually a good idea, because then
 virt-sparsify doesn't need to try to guess the input format.
diff --git a/po-docs/uk/virt-sparsify.pod b/po-docs/uk/virt-sparsify.pod
index 875750b..b801eaf 100644
--- a/po-docs/uk/virt-sparsify.pod
+++ b/po-docs/uk/virt-sparsify.pod
@@ -109,10 +109,10 @@ Display help.
 Use C<output-format> as the format for the destination image.  If this is
 not specified, then the input format is used.
 
-Supported and known-working output formats are: C<raw>, C<qcow2>.
+Supported and known-working output formats are: C<raw>, C<qcow2>, C<vdi>.
 
 You can also use any format supported by the L<qemu-img(1)> program,
-eg. C<vdi> or C<vmdk>, but support for other formats is reliant on qemu.
+eg. C<vmdk>, but support for other formats is reliant on qemu.
 
 Specifying the I<--convert> option is usually a good idea, because then
 virt-sparsify doesn't need to try to guess the input format.
diff --git a/po-docs/uk/virt-sysprep.1 b/po-docs/uk/virt-sysprep.1
index e93345f..002c67a 100644
--- a/po-docs/uk/virt-sysprep.1
+++ b/po-docs/uk/virt-sysprep.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-sysprep 1"
-.TH virt-sysprep 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-sysprep 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-tar-in.1 b/po-docs/uk/virt-tar-in.1
index d85781a..13bbf9f 100644
--- a/po-docs/uk/virt-tar-in.1
+++ b/po-docs/uk/virt-tar-in.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-tar-in 1"
-.TH virt-tar-in 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-tar-in 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-tar-out.1 b/po-docs/uk/virt-tar-out.1
index 7328f91..2740ab4 100644
--- a/po-docs/uk/virt-tar-out.1
+++ b/po-docs/uk/virt-tar-out.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-tar-out 1"
-.TH virt-tar-out 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-tar-out 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-tar.1 b/po-docs/uk/virt-tar.1
index cbbdbdd..bff0507 100644
--- a/po-docs/uk/virt-tar.1
+++ b/po-docs/uk/virt-tar.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-tar.pl 1"
-.TH virt-tar.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-tar.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po-docs/uk/virt-win-reg.1 b/po-docs/uk/virt-win-reg.1
index d37f99f..87a40f7 100644
--- a/po-docs/uk/virt-win-reg.1
+++ b/po-docs/uk/virt-win-reg.1
@@ -62,7 +62,7 @@
 .\" ========================================================================
 .\"
 .IX Title "virt-win-reg.pl 1"
-.TH virt-win-reg.pl 1 "2011-11-09" "libguestfs-1.14.2" "Virtualization Support"
+.TH virt-win-reg.pl 1 "2011-11-22" "libguestfs-1.14.3" "Virtualization Support"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index a5d9a17..d7ed831 100644
Binary files a/po/en_GB.gmo and b/po/en_GB.gmo differ
diff --git a/po/en_GB.po b/po/en_GB.po
index 2fa1544..5192ca9 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: English (United Kingdom) (http://www.transifex.net/projects/p/"
diff --git a/po/es.gmo b/po/es.gmo
index 919fb92..66d8fa6 100644
Binary files a/po/es.gmo and b/po/es.gmo differ
diff --git a/po/es.po b/po/es.po
index b41b0ce..3956d4e 100644
--- a/po/es.po
+++ b/po/es.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Spanish (Castilian) <trans-es at lists.fedoraproject.org>\n"
diff --git a/po/gu.gmo b/po/gu.gmo
index 7d517c9..7abdb49 100644
Binary files a/po/gu.gmo and b/po/gu.gmo differ
diff --git a/po/gu.po b/po/gu.po
index 526d4ea..57cd9e6 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Gujarati <trans-gu at lists.fedoraproject.org>\n"
diff --git a/po/hi.gmo b/po/hi.gmo
index 39db7ad..68b3e58 100644
Binary files a/po/hi.gmo and b/po/hi.gmo differ
diff --git a/po/hi.po b/po/hi.po
index 8f065bd..251cbd6 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Hindi <indlinux-hindi at lists.sourceforge.net>\n"
diff --git a/po/kn.gmo b/po/kn.gmo
index 474fb60..d39dca9 100644
Binary files a/po/kn.gmo and b/po/kn.gmo differ
diff --git a/po/kn.po b/po/kn.po
index c585db5..7241bec 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Kannada (http://www.transifex.net/projects/p/fedora/team/"
diff --git a/po/libguestfs.pot b/po/libguestfs.pot
index 99167c3..0972960 100644
--- a/po/libguestfs.pot
+++ b/po/libguestfs.pot
@@ -6,10 +6,10 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: libguestfs 1.14.2\n"
+"Project-Id-Version: libguestfs 1.14.3\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
diff --git a/po/ml.gmo b/po/ml.gmo
index bfeca78..202bc9a 100644
Binary files a/po/ml.gmo and b/po/ml.gmo differ
diff --git a/po/ml.po b/po/ml.po
index 512c0b3..c429526 100644
--- a/po/ml.po
+++ b/po/ml.po
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Malayalam <discuss at lists.smc.org.in>\n"
diff --git a/po/mr.gmo b/po/mr.gmo
index 042f415..0d044c7 100644
Binary files a/po/mr.gmo and b/po/mr.gmo differ
diff --git a/po/mr.po b/po/mr.po
index 50503f5..102ea2f 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Marathi (http://www.transifex.net/projects/p/fedora/team/"
diff --git a/po/nl.gmo b/po/nl.gmo
index 6664df8..bf28b34 100644
Binary files a/po/nl.gmo and b/po/nl.gmo differ
diff --git a/po/nl.po b/po/nl.po
index 12f94e6..71d1c2e 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -11,7 +11,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Dutch (http://www.transifex.net/projects/p/fedora/team/nl/)\n"
diff --git a/po/or.gmo b/po/or.gmo
index 89270b9..235b2db 100644
Binary files a/po/or.gmo and b/po/or.gmo differ
diff --git a/po/or.po b/po/or.po
index 23a0d4c..a567112 100644
--- a/po/or.po
+++ b/po/or.po
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Oriya (http://www.transifex.net/projects/p/fedora/team/or/)\n"
diff --git a/po/pa.gmo b/po/pa.gmo
index 4a809b1..b7a69e3 100644
Binary files a/po/pa.gmo and b/po/pa.gmo differ
diff --git a/po/pa.po b/po/pa.po
index 22b892b..2cdc11c 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Panjabi (Punjabi) <punjabi-users at lists.sf.net>\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index b373658..20af15d 100644
Binary files a/po/pl.gmo and b/po/pl.gmo differ
diff --git a/po/pl.po b/po/pl.po
index 0e79446..e4c8a83 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Polish (http://www.transifex.net/projects/p/fedora/team/pl/)\n"
diff --git a/po/ta.gmo b/po/ta.gmo
index a4f3c46..0381905 100644
Binary files a/po/ta.gmo and b/po/ta.gmo differ
diff --git a/po/ta.po b/po/ta.po
index 4d0c216..0fc79db 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Tamil <tamil-users at lists.fedoraproject.org>\n"
diff --git a/po/te.gmo b/po/te.gmo
index 6ba8eb7..9b55d14 100644
Binary files a/po/te.gmo and b/po/te.gmo differ
diff --git a/po/te.po b/po/te.po
index 31c0434..13549e2 100644
--- a/po/te.po
+++ b/po/te.po
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Telugu (http://www.transifex.net/projects/p/fedora/team/te/)\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index 98ea78d..624a169 100644
Binary files a/po/uk.gmo and b/po/uk.gmo differ
diff --git a/po/uk.po b/po/uk.po
index c1db4a8..25262b5 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: libguestfs\n"
 "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2011-11-09 22:24+0000\n"
+"POT-Creation-Date: 2011-11-22 15:04+0000\n"
 "PO-Revision-Date: 2011-10-27 09:11+0000\n"
 "Last-Translator: rjones <rjones at redhat.com>\n"
 "Language-Team: Ukrainian <trans-uk at lists.fedoraproject.org>\n"
diff --git a/ruby/Makefile.am b/ruby/Makefile.am
index 88d3323..757855a 100644
--- a/ruby/Makefile.am
+++ b/ruby/Makefile.am
@@ -61,7 +61,7 @@ RUBY_SITEARCH := $(shell ruby -rrbconfig -e "puts Config::CONFIG['sitearchdir']"
 install:
 	$(MKDIR_P) $(DESTDIR)$(RUBY_SITELIB)
 	$(MKDIR_P) $(DESTDIR)$(RUBY_SITEARCH)
-	$(INSTALL) -p -m 0644 lib/guestfs.rb $(DESTDIR)$(RUBY_SITELIB)
-	$(INSTALL) -p -m 0755 ext/guestfs/_guestfs.so $(DESTDIR)$(RUBY_SITEARCH)
+	$(INSTALL) -p -m 0644 $(srcdir)/lib/guestfs.rb $(DESTDIR)$(RUBY_SITELIB)
+	$(INSTALL) -p -m 0755 $(builddir)/ext/guestfs/_guestfs.so $(DESTDIR)$(RUBY_SITEARCH)
 
 endif
diff --git a/ruby/Makefile.in b/ruby/Makefile.in
index 33da059..46cdf27 100644
--- a/ruby/Makefile.in
+++ b/ruby/Makefile.in
@@ -1535,8 +1535,8 @@ appliance: force
 @HAVE_RUBY_TRUE at install:
 @HAVE_RUBY_TRUE@	$(MKDIR_P) $(DESTDIR)$(RUBY_SITELIB)
 @HAVE_RUBY_TRUE@	$(MKDIR_P) $(DESTDIR)$(RUBY_SITEARCH)
- at HAVE_RUBY_TRUE@	$(INSTALL) -p -m 0644 lib/guestfs.rb $(DESTDIR)$(RUBY_SITELIB)
- at HAVE_RUBY_TRUE@	$(INSTALL) -p -m 0755 ext/guestfs/_guestfs.so $(DESTDIR)$(RUBY_SITEARCH)
+ at HAVE_RUBY_TRUE@	$(INSTALL) -p -m 0644 $(srcdir)/lib/guestfs.rb $(DESTDIR)$(RUBY_SITELIB)
+ at HAVE_RUBY_TRUE@	$(INSTALL) -p -m 0755 $(builddir)/ext/guestfs/_guestfs.so $(DESTDIR)$(RUBY_SITEARCH)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/ruby/Rakefile.in b/ruby/Rakefile.in
index 7c5a63a..f4bf901 100644
--- a/ruby/Rakefile.in
+++ b/ruby/Rakefile.in
@@ -24,7 +24,7 @@ require 'rake/gempackagetask'
 PKG_NAME='@PACKAGE_NAME@'
 PKG_VERSION='@PACKAGE_VERSION@'
 
-EXT_CONF='@srcdir@/ext/guestfs/extconf.rb'
+EXT_CONF='@abs_srcdir@/ext/guestfs/extconf.rb'
 MAKEFILE='@builddir@/ext/guestfs/Makefile'
 GUESTFS_MODULE='@builddir@/ext/guestfs/_guestfs.so'
 GUESTFS_SRC='@srcdir@/ext/guestfs/_guestfs.c'
@@ -38,13 +38,13 @@ CLOBBER.include [ "@builddir@/config.save", "@builddir@/ext/**/mkmf.log",
 # Build locally
 
 file MAKEFILE => EXT_CONF do |t|
-     unless sh "top_srcdir=$(pwd)/@top_srcdir@; top_builddir=$(pwd)/@top_builddir@; export ARCHFLAGS=\"-arch $(uname -m)\"; cd #{File::dirname(EXT_CONF)}; ruby #{File::basename(EXT_CONF)} --with-_guestfs-include=$top_srcdir/src --with-_guestfs-lib=$top_builddir/src/.libs"
+     unless sh "top_srcdir=$(pwd)/@top_srcdir@; top_builddir=$(pwd)/@top_builddir@; export ARCHFLAGS=\"-arch $(uname -m)\"; mkdir -p @builddir@/ext/guestfs; cd @builddir@/ext/guestfs; ruby #{EXT_CONF} --with-_guestfs-include=$top_srcdir/src --with-_guestfs-lib=$top_builddir/src/.libs"
          $stderr.puts "Failed to run extconf"
          break
      end
 end
 file GUESTFS_MODULE => [ MAKEFILE, GUESTFS_SRC ] do |t|
-    Dir::chdir(File::dirname(EXT_CONF)) do
+    Dir::chdir("@builddir@/ext/guestfs") do
          unless sh "make"
              $stderr.puts "make failed"
              break
@@ -61,19 +61,19 @@ end
 task :test => :build
 
 RDOC_FILES = FileList[
-    "README.rdoc",
-    "lib/**/*.rb",
-    "ext/**/*.[ch]"
+    "@srcdir@/README.rdoc",
+    "@srcdir@/lib/**/*.rb",
+    "@srcdir@/ext/**/*.[ch]"
 ]
 
 Rake::RDocTask.new do |rd|
-    rd.main = "README.rdoc"
+    rd.main = "@srcdir@/README.rdoc"
     rd.rdoc_dir = "doc/site/api"
     rd.rdoc_files.include(RDOC_FILES)
 end
 
 Rake::RDocTask.new(:ri) do |rd|
-    rd.main = "README.rdoc"
+    rd.main = "@srcdir@/README.rdoc"
     rd.rdoc_dir = "doc/ri"
     rd.options << "--ri-system"
     rd.rdoc_files.include(RDOC_FILES)
@@ -82,7 +82,7 @@ end
 # Package tasks
 
 PKG_FILES = FileList[
-  "Rakefile", "COPYING", "README", "NEWS", "README.rdoc",
+  "Rakefile", "COPYING", "README", "NEWS", "@srcdir@/README.rdoc",
   "lib/**/*.rb",
   "ext/**/*.[ch]", "ext/**/MANIFEST", "ext/**/extconf.rb",
   "tests/**/*",
diff --git a/ruby/run-bindtests b/ruby/run-bindtests
index a78b5f6..4cac863 100755
--- a/ruby/run-bindtests
+++ b/ruby/run-bindtests
@@ -18,5 +18,5 @@
 
 set -e
 
-ruby -Ilib -Iext/guestfs bindtests.rb > bindtests.tmp
+ruby -I${srcdir}/lib -Iext/guestfs ${srcdir}/bindtests.rb > bindtests.tmp
 diff -u ${srcdir}/../bindtests bindtests.tmp
diff --git a/sparsify/sparsify.ml b/sparsify/sparsify.ml
index 4782983..956fccb 100644
--- a/sparsify/sparsify.ml
+++ b/sparsify/sparsify.ml
@@ -274,6 +274,8 @@ let output_format =
       );
       if string_prefix line "QEMU QCOW Image (v2)" then
         "qcow2"
+      else if string_find line "VirtualBox" >= 0 then
+        "vdi"
       else
         "raw" (* XXX guess *)
 
diff --git a/sparsify/utils.ml b/sparsify/utils.ml
index 4f5631d..b7c531d 100644
--- a/sparsify/utils.ml
+++ b/sparsify/utils.ml
@@ -57,6 +57,25 @@ let string_prefix str prefix =
   let n = String.length prefix in
   String.length str >= n && String.sub str 0 n = prefix
 
+let rec string_find s sub =
+  let len = String.length s in
+  let sublen = String.length sub in
+  let rec loop i =
+    if i <= len-sublen then (
+      let rec loop2 j =
+        if j < sublen then (
+          if s.[i+j] = sub.[j] then loop2 (j+1)
+          else -1
+        ) else
+          i (* found *)
+      in
+      let r = loop2 0 in
+      if r = -1 then loop (i+1) else r
+    ) else
+      -1 (* not found *)
+  in
+  loop 0
+
 let string_random8 =
   let chars = "abcdefghijklmnopqrstuvwxyz0123456789" in
   fun () ->
diff --git a/sparsify/virt-sparsify.pod b/sparsify/virt-sparsify.pod
index 9579640..77467b6 100644
--- a/sparsify/virt-sparsify.pod
+++ b/sparsify/virt-sparsify.pod
@@ -113,11 +113,10 @@ Display help.
 Use C<output-format> as the format for the destination image.  If this
 is not specified, then the input format is used.
 
-Supported and known-working output formats are: C<raw>, C<qcow2>.
+Supported and known-working output formats are: C<raw>, C<qcow2>, C<vdi>.
 
 You can also use any format supported by the L<qemu-img(1)> program,
-eg. C<vdi> or C<vmdk>, but support for other formats is reliant on
-qemu.
+eg. C<vmdk>, but support for other formats is reliant on qemu.
 
 Specifying the I<--convert> option is usually a good idea, because
 then virt-sparsify doesn't need to try to guess the input format.
diff --git a/src/guestfs.pod b/src/guestfs.pod
index e6a16a6..0358d8a 100644
--- a/src/guestfs.pod
+++ b/src/guestfs.pod
@@ -3298,6 +3298,7 @@ L<virt-tar(1)>,
 L<virt-tar-in(1)>,
 L<virt-tar-out(1)>,
 L<virt-win-reg(1)>,
+L<guestfs-testing(1)>,
 L<qemu(1)>,
 L<febootstrap(1)>,
 L<febootstrap-supermin-helper(8)>,
diff --git a/src/inspect.c b/src/inspect.c
index e83e824..1b41be5 100644
--- a/src/inspect.c
+++ b/src/inspect.c
@@ -719,7 +719,7 @@ guestfs___download_to_tmp (guestfs_h *g, struct inspect_fs *fs,
   int64_t size;
 
   /* Make the basename unique by prefixing it with the fs number. */
-  if (asprintf (&r, "%s/%ld-%s", g->tmpdir, fs - g->fses, basename) == -1) {
+  if (asprintf (&r, "%s/%td-%s", g->tmpdir, fs - g->fses, basename) == -1) {
     perrorf (g, "asprintf");
     return NULL;
   }

-- 
Libguestfs Debian packaging



More information about the Pkg-libvirt-commits mailing list