On Sun, Jan 19, 2014 at 07:42:58PM +0100, Olaf Hering wrote: > My wipefs has no --force option, as a result mke2fs command in guestfish > fails. > > Looks like 72dd398679cd0bb803daf306d12558369615ba70 needs an adjustment > to make use of do_wipefs? > Also str_wipefs is not used in that file.
Also daemon/zero.c has a wipefs_has_force_option function. It seems like it would be better if this function was also used in wipe_device_before_mkfs (in the same file). But yes, it's definitely a bug if wipefs is causing mke2fs to fail. How about the attached patch (only compile-tested)? Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 100 libraries supported. http://fedoraproject.org/wiki/MinGW
>From c9b4e65b376b1c6c3f45e66f34c97bebe8412a02 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" <rjo...@redhat.com> Date: Sun, 19 Jan 2014 20:28:35 +0000 Subject: [PATCH] daemon: Use wipefs_has_force_option to decide whether to add wipefs --force option. --- daemon/zero.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/daemon/zero.c b/daemon/zero.c index a07989e..ff0ea97 100644 --- a/daemon/zero.c +++ b/daemon/zero.c @@ -26,6 +26,8 @@ #include <unistd.h> #include <sys/statvfs.h> +#include "ignore-value.h" + #include "daemon.h" #include "actions.h" #include "optgroups.h" @@ -91,7 +93,7 @@ wipefs_has_force_option (void) CLEANUP_FREE char *out = NULL, *err = NULL; if (flag == -1) { - r = command (&out, &err, "wipefs", "--help", NULL); + r = command (&out, &err, str_wipefs, "--help", NULL); if (r == -1) { reply_with_error ("%s", err); return -1; @@ -354,15 +356,23 @@ do_zero_free_space (const char *dir) void wipe_device_before_mkfs (const char *device) { - int r; + int force; + const size_t MAX_ARGS = 16; + const char *argv[MAX_ARGS]; + size_t i = 0; - r = command (NULL, NULL, "wipefs", "-a", "--force", device, NULL); - if (r == 0) + force = wipefs_has_force_option (); + if (force == -1) return; - r = command (NULL, NULL, "wipefs", "-a", device, NULL); - if (r == 0) - return; + ADD_ARG (argv, i, str_wipefs); + ADD_ARG (argv, i, "-a"); + if (force) + ADD_ARG (argv, i, "--force"); + ADD_ARG (argv, i, device); + ADD_ARG (argv, i, NULL); + + ignore_value (commandv (NULL, NULL, argv)); /* XXX We could fall back to overwriting bits of disk here, but if * they don't have working wipefs, it seems unlikely they are using -- 1.8.4.2
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs