[libvirt] [PATCH V3 2/2] enhance processWatchdogEvent()
Eric Blake
eblake at redhat.com
Fri Apr 15 16:36:10 UTC 2011
On 04/14/2011 09:11 PM, Wen Congyang wrote:
> This patch do the following two things:
s/do/does/
> 1. hold an extra reference while handling watchdog event
> If the domain is not persistent, and qemu quits unexpectedly before
> calling processWatchdogEvent(), vm will be freed and the function
> processWatchdogEvent() will be dangerous.
>
> 2. unlock qemu driver and vm before returning from processWatchdogEvent()
> When the function processWatchdogEvent() failed, we only free wdEvent,
> but forget to unlock qemu driver and vm, free dumpfile.
>
>
> ---
> src/qemu/qemu_driver.c | 34 ++++++++++++++++++++++------------
> src/qemu/qemu_process.c | 4 ++++
> 2 files changed, 26 insertions(+), 12 deletions(-)
Looks like your v2 caught my review comments correctly. But I found one
more issue:
> +++ b/src/qemu/qemu_process.c
> @@ -428,6 +428,10 @@ qemuProcessHandleWatchdog(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
> if (VIR_ALLOC(wdEvent) == 0) {
> wdEvent->action = VIR_DOMAIN_WATCHDOG_ACTION_DUMP;
> wdEvent->vm = vm;
> + /* Hold an extra reference because we can't allow 'vm' to be
> + * deleted before handling watchdog event is finished.
> + */
> + virDomainObjRef(vm);
> ignore_value(virThreadPoolSendJob(driver->workerPool, wdEvent));
Now that we have increased the ref count, we should decrease it if we
are unable to send a job to the thread pool. That is, replace the
ignore_value() with:
if (virThreadPoolSendJob(...) < 0) {
virDomainObjUnref(vm);
VIR_FREE(wdEvent);
}
ACK with that change squashed in.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110415/6cfd196f/attachment-0001.sig>
More information about the libvir-list
mailing list