[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