[fedora-virt] [PATCH] Change libguestfs to use virtio block devices

Richard W.M. Jones rjones at redhat.com
Tue Jun 30 14:51:23 UTC 2009


The following set of patches changes libguestfs to use virtio block
devices by default.

Device names change from /dev/sd* to /dev/vd*, but device name
translation should hide this change in most cases:

  http://libguestfs.org/guestfs.3.html#block_device_naming

The change isn't totally straightforward.  The CHS for virtio disks is
different from the CHS for IDE disks (even where the disks have
identical size).  These caused sfdisk with explicit cylinder numbers
to fail, so I had to change all these.  This is the reasoning behind
patch 2 and most of patch 3.

Patch 1: Just changes the way some messages are displayed from the
test suite.

Patch 2: Changes the statvfs test so it doesn't get affected by the
CHS change.

Patch 3: (a) We change the list-devices and list-partitions functions
so that they see and return /dev/vd* devices.  (b) The udev fix
previously posted to this list.  (c) Change the partition sizes
because of the CHS change - see above.  (d) Add ,if=virtio to -drive
parameters so that block devices are exported as virtio disks.

Patch 4: The generated code, just shown for completeness.

The tests all pass except one.  A single test fails because pvremove
from the previous test causes sfdisk to fail (apparently the previous
pvremove is still happening, so sfdisk refuses to partition the device
because it is in use).  I believe this is an underlying failure
revealed by this change to virtio, not caused by the change itself.

There doesn't appear to be any noticable increase in speed when
running the tests, but I didn't measure anything.  The main reason to
use virtio is that it's inherently simpler than emulating IDE or SCSI
devices.

Rich.

-- 
Richard Jones, Emerging Technologies, Red Hat  http://et.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://et.redhat.com/~rjones/libguestfs/
See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html
-------------- next part --------------
>From eee4d77263c39b866885b6e776af76abc60fe5c2 Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones at redhat.com>
Date: Tue, 30 Jun 2009 15:12:48 +0100
Subject: [PATCH 1/4] Clean up the output of the C API test code.

Set output mode to unbuffered so that we see ordinary output
messages and errors at the same time.

Align "skipped" messages.
---
 src/generator.ml |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/generator.ml b/src/generator.ml
index 960973d..242d292 100755
--- a/src/generator.ml
+++ b/src/generator.ml
@@ -4278,6 +4278,8 @@ int main (int argc, char *argv[])
   int fd;
   int nr_tests, test_num = 0;
 
+  setbuf (stdout, NULL);
+
   no_test_warnings ();
 
   g = guestfs_create ();
@@ -4459,7 +4461,7 @@ static int %s_skip (void)
 static int %s (void)
 {
   if (%s_skip ()) {
-    printf (\"%%s skipped (reason: environment variable set)\\n\", \"%s\");
+    printf (\"        %%s skipped (reason: environment variable set)\\n\", \"%s\");
     return 0;
   }
 
@@ -4467,17 +4469,17 @@ static int %s (void)
 
   (match prereq with
    | Disabled ->
-       pr "  printf (\"%%s skipped (reason: test disabled in generator)\\n\", \"%s\");\n" test_name
+       pr "  printf (\"        %%s skipped (reason: test disabled in generator)\\n\", \"%s\");\n" test_name
    | If _ ->
        pr "  if (! %s_prereq ()) {\n" test_name;
-       pr "    printf (\"%%s skipped (reason: test prerequisite)\\n\", \"%s\");\n" test_name;
+       pr "    printf (\"        %%s skipped (reason: test prerequisite)\\n\", \"%s\");\n" test_name;
        pr "    return 0;\n";
        pr "  }\n";
        pr "\n";
        generate_one_test_body name i test_name init test;
    | Unless _ ->
        pr "  if (%s_prereq ()) {\n" test_name;
-       pr "    printf (\"%%s skipped (reason: test prerequisite)\\n\", \"%s\");\n" test_name;
+       pr "    printf (\"        %%s skipped (reason: test prerequisite)\\n\", \"%s\");\n" test_name;
        pr "    return 0;\n";
        pr "  }\n";
        pr "\n";
-- 
1.6.2.5

-------------- next part --------------
>From 69a725d5e1efd7487f32952a81d1f638091887e2 Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones at redhat.com>
Date: Tue, 30 Jun 2009 15:10:31 +0100
Subject: [PATCH 2/4] Change statvfs test so it doesn't depend on device size.

Current statvfs test depended on a lot of filesystem details
which can change if the CHS of the underlying block device
changes (eg. with the switch from IDE -> virtio).  These are
not really necessary to test the call, so instead just check
for filesystem features.
---
 src/generator.ml |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/src/generator.ml b/src/generator.ml
index 242d292..cbe8ca7 100755
--- a/src/generator.ml
+++ b/src/generator.ml
@@ -1499,8 +1499,7 @@ This is the same as the C<lstat(2)> system call.");
 
   ("statvfs", (RStatVFS "statbuf", [String "path"]), 54, [],
    [InitBasicFS, Always, TestOutputStruct (
-      [["statvfs"; "/"]], [CompareWithInt ("bfree", 487702);
-			   CompareWithInt ("blocks", 490020);
+      [["statvfs"; "/"]], [CompareWithInt ("namemax", 255);
 			   CompareWithInt ("bsize", 1024)])],
    "get file system statistics",
    "\
-- 
1.6.2.5

-------------- next part --------------
>From 0a2e3c91f0a8d198e822ebabc95d3a5a6b8a0bc6 Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones at redhat.com>
Date: Tue, 30 Jun 2009 13:59:29 +0100
Subject: [PATCH 3/4] Change to use virtio_blk (virtio block device) by default.

virtio_blk is the fast, virt-native block device driver
supported by qemu and KVM.  Note that virtio_blk device
names are called /dev/vd*.

Existing scripts should continue working because device name
translation will silently change device names of the form
/dev/sd* to /dev/vd* as required.

See also:
http://libguestfs.org/guestfs.3.html#block_device_naming
---
 daemon/devsparts.c |    6 ++++--
 daemon/guestfsd.c  |    2 +-
 src/generator.ml   |   30 ++++++++++++++++++------------
 src/guestfs.c      |    4 ++--
 4 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/daemon/devsparts.c b/daemon/devsparts.c
index 83e4bb9..4c7a643 100644
--- a/daemon/devsparts.c
+++ b/daemon/devsparts.c
@@ -46,7 +46,8 @@ do_list_devices (void)
 
   while ((d = readdir (dir)) != NULL) {
     if (strncmp (d->d_name, "sd", 2) == 0 ||
-	strncmp (d->d_name, "hd", 2) == 0) {
+	strncmp (d->d_name, "hd", 2) == 0 ||
+	strncmp (d->d_name, "vd", 2) == 0) {
       snprintf (buf, sizeof buf, "/dev/%s", d->d_name);
       if (add_string (&r, &size, &alloc, buf) == -1) {
 	closedir (dir);
@@ -87,7 +88,8 @@ do_list_partitions (void)
 
   while ((d = readdir (dir)) != NULL) {
     if (strncmp (d->d_name, "sd", 2) == 0 ||
-	strncmp (d->d_name, "hd", 2) == 0) {
+	strncmp (d->d_name, "hd", 2) == 0 ||
+	strncmp (d->d_name, "vd", 2) == 0) {
       strncpy (devname, d->d_name, sizeof devname);
       devname[sizeof devname - 1] = '\0';
 
diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c
index 7eabbd4..0a3e64f 100644
--- a/daemon/guestfsd.c
+++ b/daemon/guestfsd.c
@@ -714,7 +714,7 @@ device_name_translation (char *device, const char *func)
     return 0;
   }
 
-  if (errno != ENXIO) {
+  if (errno != ENXIO && errno != ENOENT) {
   error:
     reply_with_perror ("%s: %s", func, device);
     return -1;
diff --git a/src/generator.ml b/src/generator.ml
index cbe8ca7..69fd706 100755
--- a/src/generator.ml
+++ b/src/generator.ml
@@ -133,7 +133,9 @@ can easily destroy all your data>."
  * 50MB and 10MB (respectively /dev/sda, /dev/sdb, /dev/sdc), and
  * a fourth squashfs block device with some known files on it (/dev/sdd).
  *
- * Note for partitioning purposes, the 500MB device has 63 cylinders.
+ * Note for partitioning purposes, the 500MB device has 1015 cylinders.
+ * Number of cylinders was 63 for IDE emulated disks with precisely
+ * the same size.  How exactly this is calculated is a mystery.
  *
  * The squashfs block device (/dev/sdd) comes from images/test.sqsh.
  *
@@ -373,7 +375,8 @@ for whatever operations you want to perform (ie. read access if you
 just want to read the image or write access if you want to modify the
 image).
 
-This is equivalent to the qemu parameter C<-drive file=filename,cache=off>.
+This is equivalent to the qemu parameter
+C<-drive file=filename,cache=off,if=virtio>.
 
 Note that this call checks for the existence of C<filename>.  This
 stops you from specifying other types of drive which are supported
@@ -407,7 +410,7 @@ handle is closed.  We don't currently have any method to enable
 changes to be committed, although qemu can support this.
 
 This is equivalent to the qemu parameter
-C<-drive file=filename,snapshot=on>.
+C<-drive file=filename,snapshot=on,if=virtio>.
 
 Note that this call checks for the existence of C<filename>.  This
 stops you from specifying other types of drive which are supported
@@ -733,7 +736,7 @@ The full block device names are returned, eg. C</dev/sda>");
    [InitBasicFS, Always, TestOutputListOfDevices (
       [["list_partitions"]], ["/dev/sda1"]);
     InitEmpty, Always, TestOutputListOfDevices (
-      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",10 ,20 ,"];
+      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",200 ,400 ,"];
        ["list_partitions"]], ["/dev/sda1"; "/dev/sda2"; "/dev/sda3"])],
    "list the partitions",
    "\
@@ -748,7 +751,7 @@ call C<guestfs_lvs>.");
    [InitBasicFSonLVM, Always, TestOutputListOfDevices (
       [["pvs"]], ["/dev/sda1"]);
     InitEmpty, Always, TestOutputListOfDevices (
-      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",10 ,20 ,"];
+      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",200 ,400 ,"];
        ["pvcreate"; "/dev/sda1"];
        ["pvcreate"; "/dev/sda2"];
        ["pvcreate"; "/dev/sda3"];
@@ -767,7 +770,7 @@ See also C<guestfs_pvs_full>.");
    [InitBasicFSonLVM, Always, TestOutputList (
       [["vgs"]], ["VG"]);
     InitEmpty, Always, TestOutputList (
-      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",10 ,20 ,"];
+      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",200 ,400 ,"];
        ["pvcreate"; "/dev/sda1"];
        ["pvcreate"; "/dev/sda2"];
        ["pvcreate"; "/dev/sda3"];
@@ -788,7 +791,7 @@ See also C<guestfs_vgs_full>.");
    [InitBasicFSonLVM, Always, TestOutputList (
       [["lvs"]], ["/dev/VG/LV"]);
     InitEmpty, Always, TestOutputList (
-      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",10 ,20 ,"];
+      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",200 ,400 ,"];
        ["pvcreate"; "/dev/sda1"];
        ["pvcreate"; "/dev/sda2"];
        ["pvcreate"; "/dev/sda3"];
@@ -1141,7 +1144,7 @@ See also C<guestfs_stat>.");
 
   ("pvcreate", (RErr, [String "device"]), 39, [],
    [InitEmpty, Always, TestOutputListOfDevices (
-      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",10 ,20 ,"];
+      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",200 ,400 ,"];
        ["pvcreate"; "/dev/sda1"];
        ["pvcreate"; "/dev/sda2"];
        ["pvcreate"; "/dev/sda3"];
@@ -1154,7 +1157,7 @@ as C</dev/sda1>.");
 
   ("vgcreate", (RErr, [String "volgroup"; StringList "physvols"]), 40, [],
    [InitEmpty, Always, TestOutputList (
-      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",10 ,20 ,"];
+      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",200 ,400 ,"];
        ["pvcreate"; "/dev/sda1"];
        ["pvcreate"; "/dev/sda2"];
        ["pvcreate"; "/dev/sda3"];
@@ -1168,7 +1171,7 @@ from the non-empty list of physical volumes C<physvols>.");
 
   ("lvcreate", (RErr, [String "logvol"; String "volgroup"; Int "mbytes"]), 41, [],
    [InitEmpty, Always, TestOutputList (
-      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",10 ,20 ,"];
+      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",200 ,400 ,"];
        ["pvcreate"; "/dev/sda1"];
        ["pvcreate"; "/dev/sda2"];
        ["pvcreate"; "/dev/sda3"];
@@ -1296,7 +1299,7 @@ Some internal mounts are not shown.");
        ["mounts"]], []);
     (* check that umount_all can unmount nested mounts correctly: *)
     InitEmpty, Always, TestOutputList (
-      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",10 ,20 ,"];
+      [["sfdisk"; "/dev/sda"; "0"; "0"; "0"; ",200 ,400 ,"];
        ["mkfs"; "ext2"; "/dev/sda1"];
        ["mkfs"; "ext2"; "/dev/sda2"];
        ["mkfs"; "ext2"; "/dev/sda3"];
@@ -2015,7 +2018,10 @@ any partition tables, filesystem superblocks and so on.
 See also: C<guestfs_scrub_device>.");
 
   ("grub_install", (RErr, [String "root"; String "device"]), 86, [],
-   [InitBasicFS, Always, TestOutputTrue (
+   (* Test disabled because grub-install incompatible with virtio-blk driver.
+    * See also: https://bugzilla.redhat.com/show_bug.cgi?id=479760
+    *)
+   [InitBasicFS, Disabled, TestOutputTrue (
       [["grub_install"; "/"; "/dev/sda1"];
        ["is_dir"; "/boot"]])],
    "install GRUB",
diff --git a/src/guestfs.c b/src/guestfs.c
index 5743a07..025b7f3 100644
--- a/src/guestfs.c
+++ b/src/guestfs.c
@@ -706,7 +706,7 @@ guestfs_add_drive (guestfs_h *g, const char *filename)
   }
 
   /* cache=off improves reliability in the event of a host crash. */
-  snprintf (buf, len, "file=%s,cache=off", filename);
+  snprintf (buf, len, "file=%s,cache=off,if=virtio", filename);
 
   return guestfs_config (g, "-drive", buf);
 }
@@ -727,7 +727,7 @@ guestfs_add_drive_ro (guestfs_h *g, const char *filename)
     return -1;
   }
 
-  snprintf (buf, len, "file=%s,snapshot=on", filename);
+  snprintf (buf, len, "file=%s,snapshot=on,if=virtio", filename);
 
   return guestfs_config (g, "-drive", buf);
 }
-- 
1.6.2.5

-------------- next part --------------
>From ad9e9e19e2fab0e74f6771165ca24a60d9846b72 Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones at redhat.com>
Date: Tue, 30 Jun 2009 14:01:40 +0100
Subject: [PATCH 4/4] Generated code for the virtio_blk change.

---
 capitests/tests.c                          |  472 ++++++++++++----------------
 fish/cmds.c                                |    6 +-
 guestfish-actions.pod                      |    9 +-
 guestfs-actions.pod                        |    9 +-
 java/com/redhat/et/libguestfs/GuestFS.java |    8 +-
 perl/lib/Sys/Guestfs.pm                    |    9 +-
 python/guestfs.py                          |    8 +-
 7 files changed, 233 insertions(+), 288 deletions(-)

diff --git a/capitests/tests.c b/capitests/tests.c
index 0ae6aa4..df49dfe 100644
--- a/capitests/tests.c
+++ b/capitests/tests.c
@@ -176,7 +176,7 @@ static int test_mknod_c_0_skip (void)
 static int test_mknod_c_0 (void)
 {
   if (test_mknod_c_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mknod_c_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mknod_c_0");
     return 0;
   }
 
@@ -277,7 +277,7 @@ static int test_mknod_b_0_skip (void)
 static int test_mknod_b_0 (void)
 {
   if (test_mknod_b_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mknod_b_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mknod_b_0");
     return 0;
   }
 
@@ -378,7 +378,7 @@ static int test_mkfifo_0_skip (void)
 static int test_mkfifo_0 (void)
 {
   if (test_mkfifo_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkfifo_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkfifo_0");
     return 0;
   }
 
@@ -479,7 +479,7 @@ static int test_mknod_0_skip (void)
 static int test_mknod_0 (void)
 {
   if (test_mknod_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mknod_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mknod_0");
     return 0;
   }
 
@@ -580,7 +580,7 @@ static int test_mknod_1_skip (void)
 static int test_mknod_1 (void)
 {
   if (test_mknod_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mknod_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mknod_1");
     return 0;
   }
 
@@ -681,7 +681,7 @@ static int test_mkswap_U_0_skip (void)
 static int test_mkswap_U_0 (void)
 {
   if (test_mkswap_U_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkswap_U_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkswap_U_0");
     return 0;
   }
 
@@ -751,7 +751,7 @@ static int test_mkswap_L_0_skip (void)
 static int test_mkswap_L_0 (void)
 {
   if (test_mkswap_L_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkswap_L_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkswap_L_0");
     return 0;
   }
 
@@ -821,7 +821,7 @@ static int test_mkswap_0_skip (void)
 static int test_mkswap_0 (void)
 {
   if (test_mkswap_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkswap_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkswap_0");
     return 0;
   }
 
@@ -890,7 +890,7 @@ static int test_initrd_list_0_skip (void)
 static int test_initrd_list_0 (void)
 {
   if (test_initrd_list_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_initrd_list_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_initrd_list_0");
     return 0;
   }
 
@@ -1045,7 +1045,7 @@ static int test_du_0_skip (void)
 static int test_du_0 (void)
 {
   if (test_du_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_du_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_du_0");
     return 0;
   }
 
@@ -1144,7 +1144,7 @@ static int test_tail_n_0_skip (void)
 static int test_tail_n_0 (void)
 {
   if (test_tail_n_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_tail_n_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_tail_n_0");
     return 0;
   }
 
@@ -1287,7 +1287,7 @@ static int test_tail_n_1_skip (void)
 static int test_tail_n_1 (void)
 {
   if (test_tail_n_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_tail_n_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_tail_n_1");
     return 0;
   }
 
@@ -1430,7 +1430,7 @@ static int test_tail_n_2_skip (void)
 static int test_tail_n_2 (void)
 {
   if (test_tail_n_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_tail_n_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_tail_n_2");
     return 0;
   }
 
@@ -1537,7 +1537,7 @@ static int test_tail_0_skip (void)
 static int test_tail_0 (void)
 {
   if (test_tail_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_tail_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_tail_0");
     return 0;
   }
 
@@ -1764,7 +1764,7 @@ static int test_head_n_0_skip (void)
 static int test_head_n_0 (void)
 {
   if (test_head_n_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_head_n_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_head_n_0");
     return 0;
   }
 
@@ -1907,7 +1907,7 @@ static int test_head_n_1_skip (void)
 static int test_head_n_1 (void)
 {
   if (test_head_n_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_head_n_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_head_n_1");
     return 0;
   }
 
@@ -2050,7 +2050,7 @@ static int test_head_n_2_skip (void)
 static int test_head_n_2 (void)
 {
   if (test_head_n_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_head_n_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_head_n_2");
     return 0;
   }
 
@@ -2157,7 +2157,7 @@ static int test_head_0_skip (void)
 static int test_head_0 (void)
 {
   if (test_head_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_head_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_head_0");
     return 0;
   }
 
@@ -2384,7 +2384,7 @@ static int test_wc_c_0_skip (void)
 static int test_wc_c_0 (void)
 {
   if (test_wc_c_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_wc_c_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_wc_c_0");
     return 0;
   }
 
@@ -2486,7 +2486,7 @@ static int test_wc_w_0_skip (void)
 static int test_wc_w_0 (void)
 {
   if (test_wc_w_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_wc_w_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_wc_w_0");
     return 0;
   }
 
@@ -2588,7 +2588,7 @@ static int test_wc_l_0_skip (void)
 static int test_wc_l_0 (void)
 {
   if (test_wc_l_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_wc_l_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_wc_l_0");
     return 0;
   }
 
@@ -2690,7 +2690,7 @@ static int test_mkdtemp_0_skip (void)
 static int test_mkdtemp_0 (void)
 {
   if (test_mkdtemp_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkdtemp_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkdtemp_0");
     return 0;
   }
 
@@ -2786,7 +2786,7 @@ static int test_scrub_file_0_skip (void)
 static int test_scrub_file_0 (void)
 {
   if (test_scrub_file_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_scrub_file_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_scrub_file_0");
     return 0;
   }
 
@@ -2882,7 +2882,7 @@ static int test_scrub_device_0_skip (void)
 static int test_scrub_device_0 (void)
 {
   if (test_scrub_device_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_scrub_device_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_scrub_device_0");
     return 0;
   }
 
@@ -2938,7 +2938,7 @@ static int test_glob_expand_0_skip (void)
 static int test_glob_expand_0 (void)
 {
   if (test_glob_expand_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_glob_expand_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_glob_expand_0");
     return 0;
   }
 
@@ -3082,7 +3082,7 @@ static int test_glob_expand_1_skip (void)
 static int test_glob_expand_1 (void)
 {
   if (test_glob_expand_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_glob_expand_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_glob_expand_1");
     return 0;
   }
 
@@ -3226,7 +3226,7 @@ static int test_glob_expand_2_skip (void)
 static int test_glob_expand_2 (void)
 {
   if (test_glob_expand_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_glob_expand_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_glob_expand_2");
     return 0;
   }
 
@@ -3346,7 +3346,7 @@ static int test_ntfs_3g_probe_0_skip (void)
 static int test_ntfs_3g_probe_0 (void)
 {
   if (test_ntfs_3g_probe_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_ntfs_3g_probe_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_ntfs_3g_probe_0");
     return 0;
   }
 
@@ -3428,7 +3428,7 @@ static int test_ntfs_3g_probe_1_skip (void)
 static int test_ntfs_3g_probe_1 (void)
 {
   if (test_ntfs_3g_probe_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_ntfs_3g_probe_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_ntfs_3g_probe_1");
     return 0;
   }
 
@@ -3510,7 +3510,7 @@ static int test_sleep_0_skip (void)
 static int test_sleep_0 (void)
 {
   if (test_sleep_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_sleep_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_sleep_0");
     return 0;
   }
 
@@ -3565,7 +3565,7 @@ static int test_find_0_skip (void)
 static int test_find_0 (void)
 {
   if (test_find_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_find_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_find_0");
     return 0;
   }
 
@@ -3673,7 +3673,7 @@ static int test_find_1_skip (void)
 static int test_find_1 (void)
 {
   if (test_find_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_find_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_find_1");
     return 0;
   }
 
@@ -3841,7 +3841,7 @@ static int test_find_2_skip (void)
 static int test_find_2 (void)
 {
   if (test_find_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_find_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_find_2");
     return 0;
   }
 
@@ -3977,7 +3977,7 @@ static int test_lvresize_0_skip (void)
 static int test_lvresize_0 (void)
 {
   if (test_lvresize_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_lvresize_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_lvresize_0");
     return 0;
   }
 
@@ -4150,7 +4150,7 @@ static int test_zerofree_0_skip (void)
 static int test_zerofree_0 (void)
 {
   if (test_zerofree_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_zerofree_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_zerofree_0");
     return 0;
   }
 
@@ -4277,7 +4277,7 @@ static int test_hexdump_0_skip (void)
 static int test_hexdump_0 (void)
 {
   if (test_hexdump_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_hexdump_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_hexdump_0");
     return 0;
   }
 
@@ -4379,7 +4379,7 @@ static int test_hexdump_1_skip (void)
 static int test_hexdump_1 (void)
 {
   if (test_hexdump_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_hexdump_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_hexdump_1");
     return 0;
   }
 
@@ -4478,7 +4478,7 @@ static int test_strings_e_0_skip (void)
 static int test_strings_e_0 (void)
 {
   if (test_strings_e_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_strings_e_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_strings_e_0");
     return 0;
   }
 
@@ -4584,11 +4584,11 @@ static int test_strings_e_1_skip (void)
 static int test_strings_e_1 (void)
 {
   if (test_strings_e_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_strings_e_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_strings_e_1");
     return 0;
   }
 
-  printf ("%s skipped (reason: test disabled in generator)\n", "test_strings_e_1");
+  printf ("        %s skipped (reason: test disabled in generator)\n", "test_strings_e_1");
   return 0;
 }
 
@@ -4609,7 +4609,7 @@ static int test_strings_0_skip (void)
 static int test_strings_0 (void)
 {
   if (test_strings_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_strings_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_strings_0");
     return 0;
   }
 
@@ -4738,7 +4738,7 @@ static int test_strings_1_skip (void)
 static int test_strings_1 (void)
 {
   if (test_strings_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_strings_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_strings_1");
     return 0;
   }
 
@@ -4842,7 +4842,7 @@ static int test_equal_0_skip (void)
 static int test_equal_0 (void)
 {
   if (test_equal_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_equal_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_equal_0");
     return 0;
   }
 
@@ -4952,7 +4952,7 @@ static int test_equal_1_skip (void)
 static int test_equal_1 (void)
 {
   if (test_equal_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_equal_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_equal_1");
     return 0;
   }
 
@@ -5062,7 +5062,7 @@ static int test_equal_2_skip (void)
 static int test_equal_2 (void)
 {
   if (test_equal_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_equal_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_equal_2");
     return 0;
   }
 
@@ -5150,7 +5150,7 @@ static int test_ping_daemon_0_skip (void)
 static int test_ping_daemon_0 (void)
 {
   if (test_ping_daemon_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_ping_daemon_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_ping_daemon_0");
     return 0;
   }
 
@@ -5205,7 +5205,7 @@ static int test_dmesg_0_skip (void)
 static int test_dmesg_0 (void)
 {
   if (test_dmesg_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_dmesg_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_dmesg_0");
     return 0;
   }
 
@@ -5261,7 +5261,7 @@ static int test_drop_caches_0_skip (void)
 static int test_drop_caches_0 (void)
 {
   if (test_drop_caches_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_drop_caches_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_drop_caches_0");
     return 0;
   }
 
@@ -5316,7 +5316,7 @@ static int test_mv_0_skip (void)
 static int test_mv_0 (void)
 {
   if (test_mv_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mv_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mv_0");
     return 0;
   }
 
@@ -5427,7 +5427,7 @@ static int test_mv_1_skip (void)
 static int test_mv_1 (void)
 {
   if (test_mv_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mv_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mv_1");
     return 0;
   }
 
@@ -5536,7 +5536,7 @@ static int test_cp_a_0_skip (void)
 static int test_cp_a_0 (void)
 {
   if (test_cp_a_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_cp_a_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_cp_a_0");
     return 0;
   }
 
@@ -5663,7 +5663,7 @@ static int test_cp_0_skip (void)
 static int test_cp_0 (void)
 {
   if (test_cp_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_cp_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_cp_0");
     return 0;
   }
 
@@ -5774,7 +5774,7 @@ static int test_cp_1_skip (void)
 static int test_cp_1 (void)
 {
   if (test_cp_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_cp_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_cp_1");
     return 0;
   }
 
@@ -5883,7 +5883,7 @@ static int test_cp_2_skip (void)
 static int test_cp_2 (void)
 {
   if (test_cp_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_cp_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_cp_2");
     return 0;
   }
 
@@ -6002,86 +6002,11 @@ static int test_grub_install_0_skip (void)
 static int test_grub_install_0 (void)
 {
   if (test_grub_install_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_grub_install_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_grub_install_0");
     return 0;
   }
 
-  /* InitBasicFS for test_grub_install_0: create ext2 on /dev/sda1 */
-  {
-    char device[] = "/dev/sda";
-    int r;
-    suppress_error = 0;
-    r = guestfs_blockdev_setrw (g, device);
-    if (r == -1)
-      return -1;
-  }
-  {
-    int r;
-    suppress_error = 0;
-    r = guestfs_umount_all (g);
-    if (r == -1)
-      return -1;
-  }
-  {
-    int r;
-    suppress_error = 0;
-    r = guestfs_lvm_remove_all (g);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char device[] = "/dev/sda";
-    char lines_0[] = ",";
-    char *lines[] = {
-      lines_0,
-      NULL
-    };
-    int r;
-    suppress_error = 0;
-    r = guestfs_sfdisk (g, device, 0, 0, 0, lines);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char fstype[] = "ext2";
-    char device[] = "/dev/sda1";
-    int r;
-    suppress_error = 0;
-    r = guestfs_mkfs (g, fstype, device);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char device[] = "/dev/sda1";
-    char mountpoint[] = "/";
-    int r;
-    suppress_error = 0;
-    r = guestfs_mount (g, device, mountpoint);
-    if (r == -1)
-      return -1;
-  }
-  /* TestOutputTrue for grub_install (0) */
-  {
-    char root[] = "/";
-    char device[] = "/dev/sda1";
-    int r;
-    suppress_error = 0;
-    r = guestfs_grub_install (g, root, device);
-    if (r == -1)
-      return -1;
-  }
-  {
-    char path[] = "/boot";
-    int r;
-    suppress_error = 0;
-    r = guestfs_is_dir (g, path);
-    if (r == -1)
-      return -1;
-    if (!r) {
-      fprintf (stderr, "test_grub_install_0: expected true, got false\n");
-      return -1;
-    }
-  }
+  printf ("        %s skipped (reason: test disabled in generator)\n", "test_grub_install_0");
   return 0;
 }
 
@@ -6102,7 +6027,7 @@ static int test_zero_0_skip (void)
 static int test_zero_0 (void)
 {
   if (test_zero_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_zero_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_zero_0");
     return 0;
   }
 
@@ -6211,7 +6136,7 @@ static int test_fsck_0_skip (void)
 static int test_fsck_0 (void)
 {
   if (test_fsck_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_fsck_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_fsck_0");
     return 0;
   }
 
@@ -6311,7 +6236,7 @@ static int test_fsck_1_skip (void)
 static int test_fsck_1 (void)
 {
   if (test_fsck_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_fsck_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_fsck_1");
     return 0;
   }
 
@@ -6419,7 +6344,7 @@ static int test_set_e2uuid_0_skip (void)
 static int test_set_e2uuid_0 (void)
 {
   if (test_set_e2uuid_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_set_e2uuid_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_set_e2uuid_0");
     return 0;
   }
 
@@ -6521,7 +6446,7 @@ static int test_set_e2uuid_1_skip (void)
 static int test_set_e2uuid_1 (void)
 {
   if (test_set_e2uuid_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_set_e2uuid_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_set_e2uuid_1");
     return 0;
   }
 
@@ -6623,7 +6548,7 @@ static int test_set_e2uuid_2_skip (void)
 static int test_set_e2uuid_2 (void)
 {
   if (test_set_e2uuid_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_set_e2uuid_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_set_e2uuid_2");
     return 0;
   }
 
@@ -6711,7 +6636,7 @@ static int test_set_e2uuid_3_skip (void)
 static int test_set_e2uuid_3 (void)
 {
   if (test_set_e2uuid_3_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_set_e2uuid_3");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_set_e2uuid_3");
     return 0;
   }
 
@@ -6799,7 +6724,7 @@ static int test_set_e2label_0_skip (void)
 static int test_set_e2label_0 (void)
 {
   if (test_set_e2label_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_set_e2label_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_set_e2label_0");
     return 0;
   }
 
@@ -6901,7 +6826,7 @@ static int test_pvremove_0_skip (void)
 static int test_pvremove_0 (void)
 {
   if (test_pvremove_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_pvremove_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_pvremove_0");
     return 0;
   }
 
@@ -7033,7 +6958,7 @@ static int test_pvremove_1_skip (void)
 static int test_pvremove_1 (void)
 {
   if (test_pvremove_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_pvremove_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_pvremove_1");
     return 0;
   }
 
@@ -7165,7 +7090,7 @@ static int test_pvremove_2_skip (void)
 static int test_pvremove_2 (void)
 {
   if (test_pvremove_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_pvremove_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_pvremove_2");
     return 0;
   }
 
@@ -7297,7 +7222,7 @@ static int test_vgremove_0_skip (void)
 static int test_vgremove_0 (void)
 {
   if (test_vgremove_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_vgremove_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_vgremove_0");
     return 0;
   }
 
@@ -7421,7 +7346,7 @@ static int test_vgremove_1_skip (void)
 static int test_vgremove_1 (void)
 {
   if (test_vgremove_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_vgremove_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_vgremove_1");
     return 0;
   }
 
@@ -7545,7 +7470,7 @@ static int test_lvremove_0_skip (void)
 static int test_lvremove_0 (void)
 {
   if (test_lvremove_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_lvremove_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_lvremove_0");
     return 0;
   }
 
@@ -7681,7 +7606,7 @@ static int test_lvremove_1_skip (void)
 static int test_lvremove_1 (void)
 {
   if (test_lvremove_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_lvremove_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_lvremove_1");
     return 0;
   }
 
@@ -7805,7 +7730,7 @@ static int test_lvremove_2_skip (void)
 static int test_lvremove_2 (void)
 {
   if (test_lvremove_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_lvremove_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_lvremove_2");
     return 0;
   }
 
@@ -7941,7 +7866,7 @@ static int test_mount_ro_0_skip (void)
 static int test_mount_ro_0 (void)
 {
   if (test_mount_ro_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mount_ro_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mount_ro_0");
     return 0;
   }
 
@@ -8045,7 +7970,7 @@ static int test_mount_ro_1_skip (void)
 static int test_mount_ro_1 (void)
 {
   if (test_mount_ro_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mount_ro_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mount_ro_1");
     return 0;
   }
 
@@ -8164,7 +8089,7 @@ static int test_tgz_in_0_skip (void)
 static int test_tgz_in_0 (void)
 {
   if (test_tgz_in_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_tgz_in_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_tgz_in_0");
     return 0;
   }
 
@@ -8265,7 +8190,7 @@ static int test_tar_in_0_skip (void)
 static int test_tar_in_0 (void)
 {
   if (test_tar_in_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_tar_in_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_tar_in_0");
     return 0;
   }
 
@@ -8366,7 +8291,7 @@ static int test_checksum_0_skip (void)
 static int test_checksum_0 (void)
 {
   if (test_checksum_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_checksum_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_checksum_0");
     return 0;
   }
 
@@ -8469,7 +8394,7 @@ static int test_checksum_1_skip (void)
 static int test_checksum_1 (void)
 {
   if (test_checksum_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_checksum_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_checksum_1");
     return 0;
   }
 
@@ -8558,7 +8483,7 @@ static int test_checksum_2_skip (void)
 static int test_checksum_2 (void)
 {
   if (test_checksum_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_checksum_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_checksum_2");
     return 0;
   }
 
@@ -8661,7 +8586,7 @@ static int test_checksum_3_skip (void)
 static int test_checksum_3 (void)
 {
   if (test_checksum_3_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_checksum_3");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_checksum_3");
     return 0;
   }
 
@@ -8764,7 +8689,7 @@ static int test_checksum_4_skip (void)
 static int test_checksum_4 (void)
 {
   if (test_checksum_4_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_checksum_4");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_checksum_4");
     return 0;
   }
 
@@ -8867,7 +8792,7 @@ static int test_checksum_5_skip (void)
 static int test_checksum_5 (void)
 {
   if (test_checksum_5_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_checksum_5");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_checksum_5");
     return 0;
   }
 
@@ -8970,7 +8895,7 @@ static int test_checksum_6_skip (void)
 static int test_checksum_6 (void)
 {
   if (test_checksum_6_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_checksum_6");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_checksum_6");
     return 0;
   }
 
@@ -9073,7 +8998,7 @@ static int test_checksum_7_skip (void)
 static int test_checksum_7 (void)
 {
   if (test_checksum_7_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_checksum_7");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_checksum_7");
     return 0;
   }
 
@@ -9176,7 +9101,7 @@ static int test_checksum_8_skip (void)
 static int test_checksum_8 (void)
 {
   if (test_checksum_8_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_checksum_8");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_checksum_8");
     return 0;
   }
 
@@ -9281,7 +9206,7 @@ static int test_download_0_skip (void)
 static int test_download_0 (void)
 {
   if (test_download_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_download_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_download_0");
     return 0;
   }
 
@@ -9399,7 +9324,7 @@ static int test_upload_0_skip (void)
 static int test_upload_0 (void)
 {
   if (test_upload_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_upload_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_upload_0");
     return 0;
   }
 
@@ -9501,7 +9426,7 @@ static int test_blockdev_rereadpt_0_skip (void)
 static int test_blockdev_rereadpt_0 (void)
 {
   if (test_blockdev_rereadpt_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_blockdev_rereadpt_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_blockdev_rereadpt_0");
     return 0;
   }
 
@@ -9557,7 +9482,7 @@ static int test_blockdev_flushbufs_0_skip (void)
 static int test_blockdev_flushbufs_0 (void)
 {
   if (test_blockdev_flushbufs_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_blockdev_flushbufs_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_blockdev_flushbufs_0");
     return 0;
   }
 
@@ -9613,7 +9538,7 @@ static int test_blockdev_getsize64_0_skip (void)
 static int test_blockdev_getsize64_0 (void)
 {
   if (test_blockdev_getsize64_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_blockdev_getsize64_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_blockdev_getsize64_0");
     return 0;
   }
 
@@ -9673,7 +9598,7 @@ static int test_blockdev_getsz_0_skip (void)
 static int test_blockdev_getsz_0 (void)
 {
   if (test_blockdev_getsz_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_blockdev_getsz_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_blockdev_getsz_0");
     return 0;
   }
 
@@ -9733,7 +9658,7 @@ static int test_blockdev_getbsz_0_skip (void)
 static int test_blockdev_getbsz_0 (void)
 {
   if (test_blockdev_getbsz_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_blockdev_getbsz_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_blockdev_getbsz_0");
     return 0;
   }
 
@@ -9793,7 +9718,7 @@ static int test_blockdev_getss_0_skip (void)
 static int test_blockdev_getss_0 (void)
 {
   if (test_blockdev_getss_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_blockdev_getss_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_blockdev_getss_0");
     return 0;
   }
 
@@ -9853,7 +9778,7 @@ static int test_blockdev_getro_0_skip (void)
 static int test_blockdev_getro_0 (void)
 {
   if (test_blockdev_getro_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_blockdev_getro_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_blockdev_getro_0");
     return 0;
   }
 
@@ -9921,7 +9846,7 @@ static int test_blockdev_setrw_0_skip (void)
 static int test_blockdev_setrw_0 (void)
 {
   if (test_blockdev_setrw_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_blockdev_setrw_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_blockdev_setrw_0");
     return 0;
   }
 
@@ -9989,7 +9914,7 @@ static int test_blockdev_setro_0_skip (void)
 static int test_blockdev_setro_0 (void)
 {
   if (test_blockdev_setro_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_blockdev_setro_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_blockdev_setro_0");
     return 0;
   }
 
@@ -10057,7 +9982,7 @@ static int test_statvfs_0_skip (void)
 static int test_statvfs_0 (void)
 {
   if (test_statvfs_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_statvfs_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_statvfs_0");
     return 0;
   }
 
@@ -10123,14 +10048,9 @@ static int test_statvfs_0 (void)
     r = guestfs_statvfs (g, path);
     if (r == NULL)
       return -1;
-    if (r->bfree != 487702) {
-      fprintf (stderr, "test_statvfs_0: bfree was %d, expected 487702\n",
-               (int) r->bfree);
-      return -1;
-    }
-    if (r->blocks != 490020) {
-      fprintf (stderr, "test_statvfs_0: blocks was %d, expected 490020\n",
-               (int) r->blocks);
+    if (r->namemax != 255) {
+      fprintf (stderr, "test_statvfs_0: namemax was %d, expected 255\n",
+               (int) r->namemax);
       return -1;
     }
     if (r->bsize != 1024) {
@@ -10160,7 +10080,7 @@ static int test_lstat_0_skip (void)
 static int test_lstat_0 (void)
 {
   if (test_lstat_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_lstat_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_lstat_0");
     return 0;
   }
 
@@ -10261,7 +10181,7 @@ static int test_stat_0_skip (void)
 static int test_stat_0 (void)
 {
   if (test_stat_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_stat_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_stat_0");
     return 0;
   }
 
@@ -10362,7 +10282,7 @@ static int test_command_lines_0_skip (void)
 static int test_command_lines_0 (void)
 {
   if (test_command_lines_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_0");
     return 0;
   }
 
@@ -10492,7 +10412,7 @@ static int test_command_lines_1_skip (void)
 static int test_command_lines_1 (void)
 {
   if (test_command_lines_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_1");
     return 0;
   }
 
@@ -10622,7 +10542,7 @@ static int test_command_lines_2_skip (void)
 static int test_command_lines_2 (void)
 {
   if (test_command_lines_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_2");
     return 0;
   }
 
@@ -10764,7 +10684,7 @@ static int test_command_lines_3_skip (void)
 static int test_command_lines_3 (void)
 {
   if (test_command_lines_3_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_3");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_3");
     return 0;
   }
 
@@ -10906,7 +10826,7 @@ static int test_command_lines_4_skip (void)
 static int test_command_lines_4 (void)
 {
   if (test_command_lines_4_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_4");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_4");
     return 0;
   }
 
@@ -11060,7 +10980,7 @@ static int test_command_lines_5_skip (void)
 static int test_command_lines_5 (void)
 {
   if (test_command_lines_5_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_5");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_5");
     return 0;
   }
 
@@ -11226,7 +11146,7 @@ static int test_command_lines_6_skip (void)
 static int test_command_lines_6 (void)
 {
   if (test_command_lines_6_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_6");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_6");
     return 0;
   }
 
@@ -11344,7 +11264,7 @@ static int test_command_lines_7_skip (void)
 static int test_command_lines_7 (void)
 {
   if (test_command_lines_7_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_7");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_7");
     return 0;
   }
 
@@ -11474,7 +11394,7 @@ static int test_command_lines_8_skip (void)
 static int test_command_lines_8 (void)
 {
   if (test_command_lines_8_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_8");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_8");
     return 0;
   }
 
@@ -11616,7 +11536,7 @@ static int test_command_lines_9_skip (void)
 static int test_command_lines_9 (void)
 {
   if (test_command_lines_9_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_9");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_9");
     return 0;
   }
 
@@ -11758,7 +11678,7 @@ static int test_command_lines_10_skip (void)
 static int test_command_lines_10 (void)
 {
   if (test_command_lines_10_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_lines_10");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_lines_10");
     return 0;
   }
 
@@ -11900,7 +11820,7 @@ static int test_command_0_skip (void)
 static int test_command_0 (void)
 {
   if (test_command_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_0");
     return 0;
   }
 
@@ -12015,7 +11935,7 @@ static int test_command_1_skip (void)
 static int test_command_1 (void)
 {
   if (test_command_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_1");
     return 0;
   }
 
@@ -12130,7 +12050,7 @@ static int test_command_2_skip (void)
 static int test_command_2 (void)
 {
   if (test_command_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_2");
     return 0;
   }
 
@@ -12245,7 +12165,7 @@ static int test_command_3_skip (void)
 static int test_command_3 (void)
 {
   if (test_command_3_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_3");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_3");
     return 0;
   }
 
@@ -12360,7 +12280,7 @@ static int test_command_4_skip (void)
 static int test_command_4 (void)
 {
   if (test_command_4_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_4");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_4");
     return 0;
   }
 
@@ -12475,7 +12395,7 @@ static int test_command_5_skip (void)
 static int test_command_5 (void)
 {
   if (test_command_5_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_5");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_5");
     return 0;
   }
 
@@ -12590,7 +12510,7 @@ static int test_command_6_skip (void)
 static int test_command_6 (void)
 {
   if (test_command_6_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_6");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_6");
     return 0;
   }
 
@@ -12705,7 +12625,7 @@ static int test_command_7_skip (void)
 static int test_command_7 (void)
 {
   if (test_command_7_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_7");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_7");
     return 0;
   }
 
@@ -12820,7 +12740,7 @@ static int test_command_8_skip (void)
 static int test_command_8 (void)
 {
   if (test_command_8_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_8");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_8");
     return 0;
   }
 
@@ -12935,7 +12855,7 @@ static int test_command_9_skip (void)
 static int test_command_9 (void)
 {
   if (test_command_9_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_9");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_9");
     return 0;
   }
 
@@ -13050,7 +12970,7 @@ static int test_command_10_skip (void)
 static int test_command_10 (void)
 {
   if (test_command_10_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_10");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_10");
     return 0;
   }
 
@@ -13165,7 +13085,7 @@ static int test_command_11_skip (void)
 static int test_command_11 (void)
 {
   if (test_command_11_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_command_11");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_command_11");
     return 0;
   }
 
@@ -13273,7 +13193,7 @@ static int test_file_0_skip (void)
 static int test_file_0 (void)
 {
   if (test_file_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_file_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_file_0");
     return 0;
   }
 
@@ -13374,7 +13294,7 @@ static int test_file_1_skip (void)
 static int test_file_1 (void)
 {
   if (test_file_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_file_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_file_1");
     return 0;
   }
 
@@ -13476,7 +13396,7 @@ static int test_file_2_skip (void)
 static int test_file_2 (void)
 {
   if (test_file_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_file_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_file_2");
     return 0;
   }
 
@@ -13564,7 +13484,7 @@ static int test_umount_all_0_skip (void)
 static int test_umount_all_0 (void)
 {
   if (test_umount_all_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_umount_all_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_umount_all_0");
     return 0;
   }
 
@@ -13666,7 +13586,7 @@ static int test_umount_all_1_skip (void)
 static int test_umount_all_1 (void)
 {
   if (test_umount_all_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_umount_all_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_umount_all_1");
     return 0;
   }
 
@@ -13696,8 +13616,8 @@ static int test_umount_all_1 (void)
   /* TestOutputList for umount_all (1) */
   {
     char device[] = "/dev/sda";
-    char lines_0[] = ",10";
-    char lines_1[] = ",20";
+    char lines_0[] = ",200";
+    char lines_1[] = ",400";
     char lines_2[] = ",";
     char *lines[] = {
       lines_0,
@@ -13832,7 +13752,7 @@ static int test_mounts_0_skip (void)
 static int test_mounts_0 (void)
 {
   if (test_mounts_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mounts_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mounts_0");
     return 0;
   }
 
@@ -13940,7 +13860,7 @@ static int test_umount_0_skip (void)
 static int test_umount_0 (void)
 {
   if (test_umount_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_umount_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_umount_0");
     return 0;
   }
 
@@ -14048,7 +13968,7 @@ static int test_umount_1_skip (void)
 static int test_umount_1 (void)
 {
   if (test_umount_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_umount_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_umount_1");
     return 0;
   }
 
@@ -14151,7 +14071,7 @@ static int test_write_file_0_skip (void)
 static int test_write_file_0 (void)
 {
   if (test_write_file_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_write_file_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_write_file_0");
     return 0;
   }
 
@@ -14253,7 +14173,7 @@ static int test_write_file_1_skip (void)
 static int test_write_file_1 (void)
 {
   if (test_write_file_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_write_file_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_write_file_1");
     return 0;
   }
 
@@ -14355,7 +14275,7 @@ static int test_write_file_2_skip (void)
 static int test_write_file_2 (void)
 {
   if (test_write_file_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_write_file_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_write_file_2");
     return 0;
   }
 
@@ -14457,7 +14377,7 @@ static int test_write_file_3_skip (void)
 static int test_write_file_3 (void)
 {
   if (test_write_file_3_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_write_file_3");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_write_file_3");
     return 0;
   }
 
@@ -14559,7 +14479,7 @@ static int test_write_file_4_skip (void)
 static int test_write_file_4 (void)
 {
   if (test_write_file_4_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_write_file_4");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_write_file_4");
     return 0;
   }
 
@@ -14661,7 +14581,7 @@ static int test_write_file_5_skip (void)
 static int test_write_file_5 (void)
 {
   if (test_write_file_5_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_write_file_5");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_write_file_5");
     return 0;
   }
 
@@ -14763,7 +14683,7 @@ static int test_mkfs_0_skip (void)
 static int test_mkfs_0 (void)
 {
   if (test_mkfs_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkfs_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkfs_0");
     return 0;
   }
 
@@ -14865,7 +14785,7 @@ static int test_lvcreate_0_skip (void)
 static int test_lvcreate_0 (void)
 {
   if (test_lvcreate_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_lvcreate_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_lvcreate_0");
     return 0;
   }
 
@@ -14895,8 +14815,8 @@ static int test_lvcreate_0 (void)
   /* TestOutputList for lvcreate (0) */
   {
     char device[] = "/dev/sda";
-    char lines_0[] = ",10";
-    char lines_1[] = ",20";
+    char lines_0[] = ",200";
+    char lines_1[] = ",400";
     char lines_2[] = ",";
     char *lines[] = {
       lines_0,
@@ -15103,7 +15023,7 @@ static int test_vgcreate_0_skip (void)
 static int test_vgcreate_0 (void)
 {
   if (test_vgcreate_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_vgcreate_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_vgcreate_0");
     return 0;
   }
 
@@ -15133,8 +15053,8 @@ static int test_vgcreate_0 (void)
   /* TestOutputList for vgcreate (0) */
   {
     char device[] = "/dev/sda";
-    char lines_0[] = ",10";
-    char lines_1[] = ",20";
+    char lines_0[] = ",200";
+    char lines_1[] = ",400";
     char lines_2[] = ",";
     char *lines[] = {
       lines_0,
@@ -15260,7 +15180,7 @@ static int test_pvcreate_0_skip (void)
 static int test_pvcreate_0 (void)
 {
   if (test_pvcreate_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_pvcreate_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_pvcreate_0");
     return 0;
   }
 
@@ -15290,8 +15210,8 @@ static int test_pvcreate_0 (void)
   /* TestOutputListOfDevices for pvcreate (0) */
   {
     char device[] = "/dev/sda";
-    char lines_0[] = ",10";
-    char lines_1[] = ",20";
+    char lines_0[] = ",200";
+    char lines_1[] = ",400";
     char lines_2[] = ",";
     char *lines[] = {
       lines_0,
@@ -15404,7 +15324,7 @@ static int test_is_dir_0_skip (void)
 static int test_is_dir_0 (void)
 {
   if (test_is_dir_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_is_dir_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_is_dir_0");
     return 0;
   }
 
@@ -15503,7 +15423,7 @@ static int test_is_dir_1_skip (void)
 static int test_is_dir_1 (void)
 {
   if (test_is_dir_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_is_dir_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_is_dir_1");
     return 0;
   }
 
@@ -15602,7 +15522,7 @@ static int test_is_file_0_skip (void)
 static int test_is_file_0 (void)
 {
   if (test_is_file_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_is_file_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_is_file_0");
     return 0;
   }
 
@@ -15701,7 +15621,7 @@ static int test_is_file_1_skip (void)
 static int test_is_file_1 (void)
 {
   if (test_is_file_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_is_file_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_is_file_1");
     return 0;
   }
 
@@ -15800,7 +15720,7 @@ static int test_exists_0_skip (void)
 static int test_exists_0 (void)
 {
   if (test_exists_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_exists_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_exists_0");
     return 0;
   }
 
@@ -15899,7 +15819,7 @@ static int test_exists_1_skip (void)
 static int test_exists_1 (void)
 {
   if (test_exists_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_exists_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_exists_1");
     return 0;
   }
 
@@ -15998,7 +15918,7 @@ static int test_mkdir_p_0_skip (void)
 static int test_mkdir_p_0 (void)
 {
   if (test_mkdir_p_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkdir_p_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkdir_p_0");
     return 0;
   }
 
@@ -16097,7 +16017,7 @@ static int test_mkdir_p_1_skip (void)
 static int test_mkdir_p_1 (void)
 {
   if (test_mkdir_p_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkdir_p_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkdir_p_1");
     return 0;
   }
 
@@ -16196,7 +16116,7 @@ static int test_mkdir_p_2_skip (void)
 static int test_mkdir_p_2 (void)
 {
   if (test_mkdir_p_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkdir_p_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkdir_p_2");
     return 0;
   }
 
@@ -16295,7 +16215,7 @@ static int test_mkdir_p_3_skip (void)
 static int test_mkdir_p_3 (void)
 {
   if (test_mkdir_p_3_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkdir_p_3");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkdir_p_3");
     return 0;
   }
 
@@ -16390,7 +16310,7 @@ static int test_mkdir_p_4_skip (void)
 static int test_mkdir_p_4 (void)
 {
   if (test_mkdir_p_4_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkdir_p_4");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkdir_p_4");
     return 0;
   }
 
@@ -16485,7 +16405,7 @@ static int test_mkdir_0_skip (void)
 static int test_mkdir_0 (void)
 {
   if (test_mkdir_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkdir_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkdir_0");
     return 0;
   }
 
@@ -16584,7 +16504,7 @@ static int test_mkdir_1_skip (void)
 static int test_mkdir_1 (void)
 {
   if (test_mkdir_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mkdir_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mkdir_1");
     return 0;
   }
 
@@ -16671,7 +16591,7 @@ static int test_rm_rf_0_skip (void)
 static int test_rm_rf_0 (void)
 {
   if (test_rm_rf_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_rm_rf_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_rm_rf_0");
     return 0;
   }
 
@@ -16794,7 +16714,7 @@ static int test_rmdir_0_skip (void)
 static int test_rmdir_0 (void)
 {
   if (test_rmdir_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_rmdir_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_rmdir_0");
     return 0;
   }
 
@@ -16889,7 +16809,7 @@ static int test_rmdir_1_skip (void)
 static int test_rmdir_1 (void)
 {
   if (test_rmdir_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_rmdir_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_rmdir_1");
     return 0;
   }
 
@@ -16976,7 +16896,7 @@ static int test_rmdir_2_skip (void)
 static int test_rmdir_2 (void)
 {
   if (test_rmdir_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_rmdir_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_rmdir_2");
     return 0;
   }
 
@@ -17071,7 +16991,7 @@ static int test_rm_0_skip (void)
 static int test_rm_0 (void)
 {
   if (test_rm_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_rm_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_rm_0");
     return 0;
   }
 
@@ -17166,7 +17086,7 @@ static int test_rm_1_skip (void)
 static int test_rm_1 (void)
 {
   if (test_rm_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_rm_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_rm_1");
     return 0;
   }
 
@@ -17253,7 +17173,7 @@ static int test_rm_2_skip (void)
 static int test_rm_2 (void)
 {
   if (test_rm_2_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_rm_2");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_rm_2");
     return 0;
   }
 
@@ -17348,7 +17268,7 @@ static int test_read_lines_0_skip (void)
 static int test_read_lines_0 (void)
 {
   if (test_read_lines_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_read_lines_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_read_lines_0");
     return 0;
   }
 
@@ -17489,7 +17409,7 @@ static int test_read_lines_1_skip (void)
 static int test_read_lines_1 (void)
 {
   if (test_read_lines_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_read_lines_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_read_lines_1");
     return 0;
   }
 
@@ -17594,7 +17514,7 @@ static int test_lvs_0_skip (void)
 static int test_lvs_0 (void)
 {
   if (test_lvs_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_lvs_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_lvs_0");
     return 0;
   }
 
@@ -17731,7 +17651,7 @@ static int test_lvs_1_skip (void)
 static int test_lvs_1 (void)
 {
   if (test_lvs_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_lvs_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_lvs_1");
     return 0;
   }
 
@@ -17761,8 +17681,8 @@ static int test_lvs_1 (void)
   /* TestOutputList for lvs (1) */
   {
     char device[] = "/dev/sda";
-    char lines_0[] = ",10";
-    char lines_1[] = ",20";
+    char lines_0[] = ",200";
+    char lines_1[] = ",400";
     char lines_2[] = ",";
     char *lines[] = {
       lines_0,
@@ -17927,7 +17847,7 @@ static int test_vgs_0_skip (void)
 static int test_vgs_0 (void)
 {
   if (test_vgs_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_vgs_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_vgs_0");
     return 0;
   }
 
@@ -18064,7 +17984,7 @@ static int test_vgs_1_skip (void)
 static int test_vgs_1 (void)
 {
   if (test_vgs_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_vgs_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_vgs_1");
     return 0;
   }
 
@@ -18094,8 +18014,8 @@ static int test_vgs_1 (void)
   /* TestOutputList for vgs (1) */
   {
     char device[] = "/dev/sda";
-    char lines_0[] = ",10";
-    char lines_1[] = ",20";
+    char lines_0[] = ",200";
+    char lines_1[] = ",400";
     char lines_2[] = ",";
     char *lines[] = {
       lines_0,
@@ -18221,7 +18141,7 @@ static int test_pvs_0_skip (void)
 static int test_pvs_0 (void)
 {
   if (test_pvs_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_pvs_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_pvs_0");
     return 0;
   }
 
@@ -18359,7 +18279,7 @@ static int test_pvs_1_skip (void)
 static int test_pvs_1 (void)
 {
   if (test_pvs_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_pvs_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_pvs_1");
     return 0;
   }
 
@@ -18389,8 +18309,8 @@ static int test_pvs_1 (void)
   /* TestOutputListOfDevices for pvs (1) */
   {
     char device[] = "/dev/sda";
-    char lines_0[] = ",10";
-    char lines_1[] = ",20";
+    char lines_0[] = ",200";
+    char lines_1[] = ",400";
     char lines_2[] = ",";
     char *lines[] = {
       lines_0,
@@ -18503,7 +18423,7 @@ static int test_list_partitions_0_skip (void)
 static int test_list_partitions_0 (void)
 {
   if (test_list_partitions_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_list_partitions_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_list_partitions_0");
     return 0;
   }
 
@@ -18611,7 +18531,7 @@ static int test_list_partitions_1_skip (void)
 static int test_list_partitions_1 (void)
 {
   if (test_list_partitions_1_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_list_partitions_1");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_list_partitions_1");
     return 0;
   }
 
@@ -18641,8 +18561,8 @@ static int test_list_partitions_1 (void)
   /* TestOutputListOfDevices for list_partitions (1) */
   {
     char device[] = "/dev/sda";
-    char lines_0[] = ",10";
-    char lines_1[] = ",20";
+    char lines_0[] = ",200";
+    char lines_1[] = ",400";
     char lines_2[] = ",";
     char *lines[] = {
       lines_0,
@@ -18731,7 +18651,7 @@ static int test_list_devices_0_skip (void)
 static int test_list_devices_0 (void)
 {
   if (test_list_devices_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_list_devices_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_list_devices_0");
     return 0;
   }
 
@@ -18847,7 +18767,7 @@ static int test_ls_0_skip (void)
 static int test_ls_0 (void)
 {
   if (test_ls_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_ls_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_ls_0");
     return 0;
   }
 
@@ -19015,7 +18935,7 @@ static int test_cat_0_skip (void)
 static int test_cat_0 (void)
 {
   if (test_cat_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_cat_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_cat_0");
     return 0;
   }
 
@@ -19117,7 +19037,7 @@ static int test_touch_0_skip (void)
 static int test_touch_0 (void)
 {
   if (test_touch_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_touch_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_touch_0");
     return 0;
   }
 
@@ -19216,7 +19136,7 @@ static int test_sync_0_skip (void)
 static int test_sync_0 (void)
 {
   if (test_sync_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_sync_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_sync_0");
     return 0;
   }
 
@@ -19271,7 +19191,7 @@ static int test_mount_0_skip (void)
 static int test_mount_0 (void)
 {
   if (test_mount_0_skip ()) {
-    printf ("%s skipped (reason: environment variable set)\n", "test_mount_0");
+    printf ("        %s skipped (reason: environment variable set)\n", "test_mount_0");
     return 0;
   }
 
@@ -19364,6 +19284,8 @@ int main (int argc, char *argv[])
   int fd;
   int nr_tests, test_num = 0;
 
+  setbuf (stdout, NULL);
+
   no_test_warnings ();
 
   g = guestfs_create ();
diff --git a/fish/cmds.c b/fish/cmds.c
index 15df267..fe59737 100644
--- a/fish/cmds.c
+++ b/fish/cmds.c
@@ -203,13 +203,13 @@ void display_command (const char *cmd)
     pod2text ("kill-subprocess - kill the qemu subprocess", " kill-subprocess\n\nThis kills the qemu subprocess.  You should never need to call this.");
   else
   if (strcasecmp (cmd, "add_drive") == 0 || strcasecmp (cmd, "add-drive") == 0 || strcasecmp (cmd, "add") == 0)
-    pod2text ("add-drive - add an image to examine or modify", " add-drive <filename>\n\nThis function adds a virtual machine disk image C<filename> to the\nguest.  The first time you call this function, the disk appears as IDE\ndisk 0 (C</dev/sda>) in the guest, the second time as C</dev/sdb>, and\nso on.\n\nYou don't necessarily need to be root when using libguestfs.  However\nyou obviously do need sufficient permissions to access the filename\nfor whatever operations you want to perform (ie. read access if you\njust want to read the image or write access if you want to modify the\nimage).\n\nThis is equivalent to the qemu parameter C<-drive file=filename,cache=off>.\n\nNote that this call checks for the existence of C<filename>.  This\nstops you from specifying other types of drive which are supported\nby qemu such as C<nbd:> and C<http:> URLs.  To specify those, use\nthe general C<config> call instead.\n\nYou can use 'add' as an alias for this command.");
+    pod2text ("add-drive - add an image to examine or modify", " add-drive <filename>\n\nThis function adds a virtual machine disk image C<filename> to the\nguest.  The first time you call this function, the disk appears as IDE\ndisk 0 (C</dev/sda>) in the guest, the second time as C</dev/sdb>, and\nso on.\n\nYou don't necessarily need to be root when using libguestfs.  However\nyou obviously do need sufficient permissions to access the filename\nfor whatever operations you want to perform (ie. read access if you\njust want to read the image or write access if you want to modify the\nimage).\n\nThis is equivalent to the qemu parameter\nC<-drive file=filename,cache=off,if=virtio>.\n\nNote that this call checks for the existence of C<filename>.  This\nstops you from specifying other types of drive which are supported\nby qemu such as C<nbd:> and C<http:> URLs.  To specify those, use\nthe general C<config> call instead.\n\nYou can use 'add' as an alias for this command.");
   else
   if (strcasecmp (cmd, "add_cdrom") == 0 || strcasecmp (cmd, "add-cdrom") == 0 || strcasecmp (cmd, "cdrom") == 0)
     pod2text ("add-cdrom - add a CD-ROM disk image to examine", " add-cdrom <filename>\n\nThis function adds a virtual CD-ROM disk image to the guest.\n\nThis is equivalent to the qemu parameter C<-cdrom filename>.\n\nNote that this call checks for the existence of C<filename>.  This\nstops you from specifying other types of drive which are supported\nby qemu such as C<nbd:> and C<http:> URLs.  To specify those, use\nthe general C<config> call instead.\n\nYou can use 'cdrom' as an alias for this command.");
   else
   if (strcasecmp (cmd, "add_drive_ro") == 0 || strcasecmp (cmd, "add-drive-ro") == 0 || strcasecmp (cmd, "add-ro") == 0)
-    pod2text ("add-drive-ro - add a drive in snapshot mode (read-only)", " add-drive-ro <filename>\n\nThis adds a drive in snapshot mode, making it effectively\nread-only.\n\nNote that writes to the device are allowed, and will be seen for\nthe duration of the guestfs handle, but they are written\nto a temporary file which is discarded as soon as the guestfs\nhandle is closed.  We don't currently have any method to enable\nchanges to be committed, although qemu can support this.\n\nThis is equivalent to the qemu parameter\nC<-drive file=filename,snapshot=on>.\n\nNote that this call checks for the existence of C<filename>.  This\nstops you from specifying other types of drive which are supported\nby qemu such as C<nbd:> and C<http:> URLs.  To specify those, use\nthe general C<config> call instead.\n\nYou can use 'add-ro' as an alias for this command.");
+    pod2text ("add-drive-ro - add a drive in snapshot mode (read-only)", " add-drive-ro <filename>\n\nThis adds a drive in snapshot mode, making it effectively\nread-only.\n\nNote that writes to the device are allowed, and will be seen for\nthe duration of the guestfs handle, but they are written\nto a temporary file which is discarded as soon as the guestfs\nhandle is closed.  We don't currently have any method to enable\nchanges to be committed, although qemu can support this.\n\nThis is equivalent to the qemu parameter\nC<-drive file=filename,snapshot=on,if=virtio>.\n\nNote that this call checks for the existence of C<filename>.  This\nstops you from specifying other types of drive which are supported\nby qemu such as C<nbd:> and C<http:> URLs.  To specify those, use\nthe general C<config> call instead.\n\nYou can use 'add-ro' as an alias for this command.");
   else
   if (strcasecmp (cmd, "config") == 0)
     pod2text ("config - add qemu parameters", " config <qemuparam> <qemuvalue>\n\nThis can be used to add arbitrary qemu command line parameters\nof the form C<-param value>.  Actually it's not quite arbitrary - we\nprevent you from setting some parameters which would interfere with\nparameters that we use.\n\nThe first character of C<param> string must be a C<-> (dash).\n\nC<value> can be NULL.");
@@ -674,7 +674,7 @@ void display_command (const char *cmd)
     pod2text ("mknod-c - make char device node", " mknod-c <mode> <devmajor> <devminor> <path>\n\nThis call creates a char device node called C<path> with\nmode C<mode> and device major/minor C<devmajor> and C<devminor>.\nIt is just a convenient wrapper around C<mknod>.");
   else
   if (strcasecmp (cmd, "umask") == 0)
-    pod2text ("umask - set file mode creation mask (umask)", " umask <mask>\n\nThis function sets the mask used for creating new files and\ndevice nodes to C<mask & 0777>.\n\nTypical umask values would be C<022> which creates new files\nwith permissions like \"-rw-r--r--\" or \"-rwxr-xr-x\", and\nC<002> which creates new files with permissions like\n\"-rw-rw-r--\" or \"-rwxrwxr-x\".\n\nSee also L<umask(2)>, C<mknod>, C<mkdir>.\n\nThis call returns the previous umask.");
+    pod2text ("umask - set file mode creation mask (umask)", " umask <mask>\n\nThis function sets the mask used for creating new files and\ndevice nodes to C<mask & 0777>.\n\nTypical umask values would be C<022> which creates new files\nwith permissions like \"-rw-r--r--\" or \"-rwxr-xr-x\", and\nC<002> which creates new files with permissions like\n\"-rw-rw-r--\" or \"-rwxrwxr-x\".\n\nThe default umask is C<022>.  This is important because it\nmeans that directories and device nodes will be created with\nC<0644> or C<0755> mode even if you specify C<0777>.\n\nSee also L<umask(2)>, C<mknod>, C<mkdir>.\n\nThis call returns the previous umask.");
   else
     display_builtin_command (cmd);
 }
diff --git a/guestfish-actions.pod b/guestfish-actions.pod
index 8ced2e1..e727120 100644
--- a/guestfish-actions.pod
+++ b/guestfish-actions.pod
@@ -26,7 +26,8 @@ for whatever operations you want to perform (ie. read access if you
 just want to read the image or write access if you want to modify the
 image).
 
-This is equivalent to the qemu parameter C<-drive file=filename,cache=off>.
+This is equivalent to the qemu parameter
+C<-drive file=filename,cache=off,if=virtio>.
 
 Note that this call checks for the existence of C<filename>.  This
 stops you from specifying other types of drive which are supported
@@ -47,7 +48,7 @@ handle is closed.  We don't currently have any method to enable
 changes to be committed, although qemu can support this.
 
 This is equivalent to the qemu parameter
-C<-drive file=filename,snapshot=on>.
+C<-drive file=filename,snapshot=on,if=virtio>.
 
 Note that this call checks for the existence of C<filename>.  This
 stops you from specifying other types of drive which are supported
@@ -1665,6 +1666,10 @@ with permissions like "-rw-r--r--" or "-rwxr-xr-x", and
 C<002> which creates new files with permissions like
 "-rw-rw-r--" or "-rwxrwxr-x".
 
+The default umask is C<022>.  This is important because it
+means that directories and device nodes will be created with
+C<0644> or C<0755> mode even if you specify C<0777>.
+
 See also L<umask(2)>, C<mknod>, C<mkdir>.
 
 This call returns the previous umask.
diff --git a/guestfs-actions.pod b/guestfs-actions.pod
index 50eba95..5f66318 100644
--- a/guestfs-actions.pod
+++ b/guestfs-actions.pod
@@ -30,7 +30,8 @@ for whatever operations you want to perform (ie. read access if you
 just want to read the image or write access if you want to modify the
 image).
 
-This is equivalent to the qemu parameter C<-drive file=filename,cache=off>.
+This is equivalent to the qemu parameter
+C<-drive file=filename,cache=off,if=virtio>.
 
 Note that this call checks for the existence of C<filename>.  This
 stops you from specifying other types of drive which are supported
@@ -54,7 +55,7 @@ handle is closed.  We don't currently have any method to enable
 changes to be committed, although qemu can support this.
 
 This is equivalent to the qemu parameter
-C<-drive file=filename,snapshot=on>.
+C<-drive file=filename,snapshot=on,if=virtio>.
 
 Note that this call checks for the existence of C<filename>.  This
 stops you from specifying other types of drive which are supported
@@ -2240,6 +2241,10 @@ with permissions like "-rw-r--r--" or "-rwxr-xr-x", and
 C<002> which creates new files with permissions like
 "-rw-rw-r--" or "-rwxrwxr-x".
 
+The default umask is C<022>.  This is important because it
+means that directories and device nodes will be created with
+C<0644> or C<0755> mode even if you specify C<0777>.
+
 See also L<umask(2)>, C<guestfs_mknod>, C<guestfs_mkdir>.
 
 This call returns the previous umask.
diff --git a/java/com/redhat/et/libguestfs/GuestFS.java b/java/com/redhat/et/libguestfs/GuestFS.java
index 3cb1c7f..cc94a98 100644
--- a/java/com/redhat/et/libguestfs/GuestFS.java
+++ b/java/com/redhat/et/libguestfs/GuestFS.java
@@ -427,7 +427,7 @@ public HashMap<String,String> test0rhashtableerr ()
    * to modify the image).
    * <p>
    * This is equivalent to the qemu parameter "-drive
-   * file=filename,cache=off".
+   * file=filename,cache=off,if=virtio".
    * <p>
    * Note that this call checks for the existence of
    * "filename". This stops you from specifying other types
@@ -488,7 +488,7 @@ public HashMap<String,String> test0rhashtableerr ()
    * although qemu can support this.
    * <p>
    * This is equivalent to the qemu parameter "-drive
-   * file=filename,snapshot=on".
+   * file=filename,snapshot=on,if=virtio".
    * <p>
    * Note that this call checks for the existence of
    * "filename". This stops you from specifying other types
@@ -4034,6 +4034,10 @@ public HashMap<String,String> test0rhashtableerr ()
    * "-rwxr-xr-x", and 002 which creates new files with
    * permissions like "-rw-rw-r--" or "-rwxrwxr-x".
    * <p>
+   * The default umask is 022. This is important because it
+   * means that directories and device nodes will be created
+   * with 0644 or 0755 mode even if you specify 0777.
+   * <p>
    * See also umask(2), "g.mknod", "g.mkdir".
    * <p>
    * This call returns the previous umask.
diff --git a/perl/lib/Sys/Guestfs.pm b/perl/lib/Sys/Guestfs.pm
index 083a017..cd26bed 100644
--- a/perl/lib/Sys/Guestfs.pm
+++ b/perl/lib/Sys/Guestfs.pm
@@ -115,7 +115,8 @@ for whatever operations you want to perform (ie. read access if you
 just want to read the image or write access if you want to modify the
 image).
 
-This is equivalent to the qemu parameter C<-drive file=filename,cache=off>.
+This is equivalent to the qemu parameter
+C<-drive file=filename,cache=off,if=virtio>.
 
 Note that this call checks for the existence of C<filename>.  This
 stops you from specifying other types of drive which are supported
@@ -134,7 +135,7 @@ handle is closed.  We don't currently have any method to enable
 changes to be committed, although qemu can support this.
 
 This is equivalent to the qemu parameter
-C<-drive file=filename,snapshot=on>.
+C<-drive file=filename,snapshot=on,if=virtio>.
 
 Note that this call checks for the existence of C<filename>.  This
 stops you from specifying other types of drive which are supported
@@ -1480,6 +1481,10 @@ with permissions like "-rw-r--r--" or "-rwxr-xr-x", and
 C<002> which creates new files with permissions like
 "-rw-rw-r--" or "-rwxrwxr-x".
 
+The default umask is C<022>.  This is important because it
+means that directories and device nodes will be created with
+C<0644> or C<0755> mode even if you specify C<0777>.
+
 See also L<umask(2)>, C<$h-E<gt>mknod>, C<$h-E<gt>mkdir>.
 
 This call returns the previous umask.
diff --git a/python/guestfs.py b/python/guestfs.py
index bb9bc08..ad44df7 100644
--- a/python/guestfs.py
+++ b/python/guestfs.py
@@ -197,7 +197,7 @@ class GuestFS:
         to modify the image).
         
         This is equivalent to the qemu parameter "-drive
-        file=filename,cache=off".
+        file=filename,cache=off,if=virtio".
         
         Note that this call checks for the existence of
         "filename". This stops you from specifying other types
@@ -234,7 +234,7 @@ class GuestFS:
         although qemu can support this.
         
         This is equivalent to the qemu parameter "-drive
-        file=filename,snapshot=on".
+        file=filename,snapshot=on,if=virtio".
         
         Note that this call checks for the existence of
         "filename". This stops you from specifying other types
@@ -1948,6 +1948,10 @@ class GuestFS:
         "-rwxr-xr-x", and 002 which creates new files with
         permissions like "-rw-rw-r--" or "-rwxrwxr-x".
         
+        The default umask is 022. This is important because it
+        means that directories and device nodes will be created
+        with 0644 or 0755 mode even if you specify 0777.
+        
         See also umask(2), "g.mknod", "g.mkdir".
         
         This call returns the previous umask.
-- 
1.6.2.5



More information about the Fedora-virt mailing list