[libvirt] [PATCH 3/1] command: add virCommandAbort for cleanup paths

Daniel P. Berrange berrange at redhat.com
Wed Mar 23 12:19:36 UTC 2011


On Tue, Mar 22, 2011 at 04:45:09PM -0600, Eric Blake wrote:
> Sometimes, an asynchronous helper is started (such as a compressor
> or iohelper program), but a later error means that we want to
> abort that child.  Make this easier.
> 
>  /*
> @@ -1207,6 +1208,8 @@ virCommandRunAsync(virCommandPtr cmd, pid_t *pid)
> 
>      if (ret == 0 && pid)
>          *pid = cmd->pid;
> +    else
> +        cmd->reap = true;
> 
>      return ret;
>  }

[snip]

> @@ -1305,5 +1368,8 @@ virCommandFree(virCommandPtr cmd)
> 
>      VIR_FREE(cmd->pidfile);
> 
> +    if (cmd->reap)
> +        virCommandAbort(cmd);
> +
>      VIR_FREE(cmd);
>  }

We allow  virCommandRunAsync to be used for daemonized
commands, so I don't think it is safe to unconditionally
kill off the PID when free'ing the virCommandPtr instance.

Regards,
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