[Libguestfs] [PATCH] p2v: show error dialog if virt-v2v fails (RHBZ#1167601)

Richard W.M. Jones rjones at redhat.com
Thu Dec 11 14:12:29 UTC 2014


On Thu, Dec 11, 2014 at 08:38:49AM -0500, John Eckersberg wrote:
> Ensure the control connection exits with the same status code as
> virt-v2v, and return an error from start_conversion if virt-v2v
> failed.
> ---
>  p2v/conversion.c | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/p2v/conversion.c b/p2v/conversion.c
> index 9f5a3ad..4ff7ecc 100644
> --- a/p2v/conversion.c
> +++ b/p2v/conversion.c
> @@ -100,6 +100,7 @@ start_conversion (struct config *config,
>                    void (*notify_ui) (int type, const char *data))
>  {
>    int ret = -1;
> +  int status;
>    size_t i, len;
>    size_t nr_disks = guestfs___count_strings (config->disks);
>    struct data_conn data_conns[nr_disks];
> @@ -276,7 +277,7 @@ start_conversion (struct config *config,
>    if (mexp_printf (control_h, " ) | tee %s/virt-v2v-conversion-log.txt",
>                     remote_dir) == -1)
>      goto printf_fail;
> -  if (mexp_printf (control_h, "; exit") == -1)
> +  if (mexp_printf (control_h, "; exit $(< %s/status)", remote_dir) == -1)
>      goto printf_fail;
>    if (mexp_printf (control_h, "\n") == -1)
>      goto printf_fail;
> @@ -313,8 +314,18 @@ start_conversion (struct config *config,
>  
>    ret = 0;
>   out:
> -  if (control_h)
> -    mexp_close (control_h);
> +  if (control_h) {
> +    if ((status = mexp_close (control_h)) == -1) {
> +      set_conversion_error ("mexp_close: %m");
> +      ret = -1;
> +    } else if (ret == 0 &&
> +               WIFEXITED (status) &&
> +               WEXITSTATUS (status) != 0) {
> +      set_conversion_error ("virt-v2v exited with status %d",
> +                            WEXITSTATUS (status));
> +      ret = -1;
> +    }
> +  }
>    cleanup_data_conns (data_conns, nr_disks);
>    return ret;
>  }

ACK.

I'll push this later today, thanks.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/




More information about the Libguestfs mailing list