[libvirt] [PATCH] Revert hack for autodestroy in qemuProcessStop

Daniel P. Berrange berrange at redhat.com
Thu Feb 28 16:44:38 UTC 2013


From: "Daniel P. Berrange" <berrange at redhat.com>

This reverts the hack done in

commit 568a6cda277f04ab9baaeb97490e548b7b608aa6
Author: Jiri Denemark <jdenemar at redhat.com>
Date:   Fri Feb 15 15:11:47 2013 +0100

    qemu: Avoid deadlock in autodestroy

since we now have a fix which avoids the deadlock scenario
entirely
---
 src/qemu/qemu_conf.h    | 4 ----
 src/qemu/qemu_domain.h  | 1 -
 src/qemu/qemu_process.c | 8 +-------
 3 files changed, 1 insertion(+), 12 deletions(-)

diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
index d547d97..6bb3dee 100644
--- a/src/qemu/qemu_conf.h
+++ b/src/qemu/qemu_conf.h
@@ -254,10 +254,6 @@ struct qemuDomainDiskInfo {
     int io_status;
 };
 
-/*
- * To avoid a certain deadlock this callback must never call any
- * virQEMUCloseCallbacks* API.
- */
 typedef virDomainObjPtr (*virQEMUCloseCallback)(virQEMUDriverPtr driver,
                                                 virDomainObjPtr vm,
                                                 virConnectPtr conn);
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 30e6b97..dacbb54 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -138,7 +138,6 @@ struct _qemuDomainObjPrivate {
 
     bool gotShutdown;
     bool beingDestroyed;
-    bool autoDestroyed;
     char *pidfile;
 
     int nvcpupids;
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 1b9eede..9f1507a 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -4232,8 +4232,7 @@ void qemuProcessStop(virQEMUDriverPtr driver,
     qemuDomainCleanupRun(driver, vm);
 
     /* Stop autodestroy in case guest is restarted */
-    if (!priv->autoDestroyed)
-        qemuProcessAutoDestroyRemove(driver, vm);
+    qemuProcessAutoDestroyRemove(driver, vm);
 
     /* now that we know it's stopped call the hook if present */
     if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
@@ -4614,13 +4613,8 @@ qemuProcessAutoDestroy(virQEMUDriverPtr driver,
 
     VIR_DEBUG("Killing domain");
 
-    /* We need to prevent qemuProcessStop from removing this function from
-     * closeCallbacks since that would cause a deadlock.
-     */
-    priv->autoDestroyed = true;
     qemuProcessStop(driver, dom, VIR_DOMAIN_SHUTOFF_DESTROYED,
                     VIR_QEMU_PROCESS_STOP_MIGRATED);
-    priv->autoDestroyed = false;
 
     virDomainAuditStop(dom, "destroyed");
     event = virDomainEventNewFromObj(dom,
-- 
1.7.11.7




More information about the libvir-list mailing list