[libvirt] [PATCH 09/16] qemu: Convert virExec usage to virCommand

Daniel P. Berrange berrange at redhat.com
Wed May 11 10:32:29 UTC 2011


On Tue, May 10, 2011 at 04:07:48PM -0400, Cole Robinson wrote:
> 
> Signed-off-by: Cole Robinson <crobinso at redhat.com>
> ---
>  src/qemu/qemu_driver.c  |   14 +++++++++-----
>  src/qemu/qemu_process.c |    2 +-
>  2 files changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index b8d9c92..a4dce5e 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -3150,9 +3150,9 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
>      int intermediatefd = -1;
>      pid_t intermediate_pid = -1;
>      int childstat;
> +    virCommandPtr cmd = NULL;
>  
>      if (header->version == 2) {
> -        const char *intermediate_argv[3] = { NULL, "-dc", NULL };
>          const char *prog = qemudSaveCompressionTypeToString(header->compressed);
>          if (prog == NULL) {
>              qemuReportError(VIR_ERR_OPERATION_FAILED,
> @@ -3162,14 +3162,17 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
>          }
>  
>          if (header->compressed != QEMUD_SAVE_FORMAT_RAW) {
> -            intermediate_argv[0] = prog;
> +            cmd = virCommandNewArgList(prog, "-dc", NULL);
>              intermediatefd = *fd;
>              *fd = -1;
> -            if (virExec(intermediate_argv, NULL, NULL,
> -                        &intermediate_pid, intermediatefd, fd, NULL, 0) < 0) {
> +
> +            virCommandSetInputFD(cmd, intermediatefd);
> +            virCommandSetOutputFD(cmd, fd);
> +
> +            if (virCommandRunAsync(cmd, &intermediate_pid) < 0) {
>                  qemuReportError(VIR_ERR_INTERNAL_ERROR,
>                                  _("Failed to start decompression binary %s"),
> -                                intermediate_argv[0]);
> +                                prog);
>                  *fd = intermediatefd;
>                  goto out;
>              }
> @@ -3234,6 +3237,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
>      ret = 0;
>  
>  out:
> +    virCommandFree(cmd);
>      if (virSecurityManagerRestoreSavedStateLabel(driver->securityManager,
>                                                   vm, path) < 0)
>          VIR_WARN("failed to restore save state label on %s", path);
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index bd7c932..3ea5845 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -2275,7 +2275,7 @@ int qemuProcessStart(virConnectPtr conn,
>           * because the child no longer exists.
>           */
>  
> -        /* The virExec process that launches the daemon failed. Pending on
> +        /* The virCommand process that launches the daemon failed. Pending on
>           * when it failed (we can't determine for sure), there may be
>           * extra info in the domain log (if the hook failed for example).
>           *

ACK

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list