c313de
From 8069bb50b2548acd3f2176499ede205e6099c067 Mon Sep 17 00:00:00 2001
c313de
Message-Id: <8069bb50b2548acd3f2176499ede205e6099c067@dist-git>
c313de
From: Michal Privoznik <mprivozn@redhat.com>
c313de
Date: Thu, 27 Jun 2019 15:18:17 +0200
c313de
Subject: [PATCH] Revert "Separate out StateAutoStart from StateInitialize"
c313de
MIME-Version: 1.0
c313de
Content-Type: text/plain; charset=UTF-8
c313de
Content-Transfer-Encoding: 8bit
c313de
c313de
This reverts commit e4a969092bda5b3b952963fdf6658895165040b7.
c313de
c313de
Now that drivers may call virConnectOpen() on secondary drivers, it
c313de
doesn't make much sense to have autostart separated from driver
c313de
initialization callback. In fact, it creates a problem because one
c313de
driver during its initialization might try to fetch an object from
c313de
another driver but since the object is yet to be autostarted the fetch
c313de
fails. This has been observed in reality: qemu driver performs
c313de
qemuProcessReconnect() during qemu's stateInitialize phase which may
c313de
call virDomainDiskTranslateSourcePool() which connects to the storage
c313de
driver to look up the volume. But the storage driver did not autostart
c313de
its pools yet therefore volume lookup fails and the domain is killed.
c313de
c313de
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
c313de
Reviewed-by: Ján Tomko <jtomko@redhat.com>
c313de
(cherry picked from commit 07a9c8bae8b80ef1650e6d05869cbf55c6aea837)
c313de
c313de
https://bugzilla.redhat.com/show_bug.cgi?id=1685151
c313de
c313de
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
c313de
Message-Id: <4ed5f8f4edd0053cc14f4bb579a945b606b36f5a.1561641375.git.mprivozn@redhat.com>
c313de
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
c313de
---
c313de
 src/driver-state.h |  4 ----
c313de
 src/libvirt.c      | 14 +-------------
c313de
 2 files changed, 1 insertion(+), 17 deletions(-)
c313de
c313de
diff --git a/src/driver-state.h b/src/driver-state.h
c313de
index 1cb3e4faf3..e1e060bcc5 100644
c313de
--- a/src/driver-state.h
c313de
+++ b/src/driver-state.h
c313de
@@ -30,9 +30,6 @@ typedef int
c313de
                          virStateInhibitCallback callback,
c313de
                          void *opaque);
c313de
 
c313de
-typedef void
c313de
-(*virDrvStateAutoStart)(void);
c313de
-
c313de
 typedef int
c313de
 (*virDrvStateCleanup)(void);
c313de
 
c313de
@@ -48,7 +45,6 @@ typedef virStateDriver *virStateDriverPtr;
c313de
 struct _virStateDriver {
c313de
     const char *name;
c313de
     virDrvStateInitialize stateInitialize;
c313de
-    virDrvStateAutoStart stateAutoStart;
c313de
     virDrvStateCleanup stateCleanup;
c313de
     virDrvStateReload stateReload;
c313de
     virDrvStateStop stateStop;
c313de
diff --git a/src/libvirt.c b/src/libvirt.c
c313de
index 52f4dd2808..c9e5f47fd4 100644
c313de
--- a/src/libvirt.c
c313de
+++ b/src/libvirt.c
c313de
@@ -637,11 +637,7 @@ virRegisterStateDriver(virStateDriverPtr driver)
c313de
  * @callback: callback to invoke to inhibit shutdown of the daemon
c313de
  * @opaque: data to pass to @callback
c313de
  *
c313de
- * Initialize all virtualization drivers. Accomplished in two phases,
c313de
- * the first being state and structure initialization followed by any
c313de
- * auto start supported by the driver.  This is done to ensure dependencies
c313de
- * that some drivers may have on another driver having been initialized
c313de
- * will exist, such as the storage driver's need to use the secret driver.
c313de
+ * Initialize all virtualization drivers.
c313de
  *
c313de
  * Returns 0 if all succeed, -1 upon any failure.
c313de
  */
c313de
@@ -669,14 +665,6 @@ virStateInitialize(bool privileged,
c313de
             }
c313de
         }
c313de
     }
c313de
-
c313de
-    for (i = 0; i < virStateDriverTabCount; i++) {
c313de
-        if (virStateDriverTab[i]->stateAutoStart) {
c313de
-            VIR_DEBUG("Running global auto start for %s state driver",
c313de
-                      virStateDriverTab[i]->name);
c313de
-            virStateDriverTab[i]->stateAutoStart();
c313de
-        }
c313de
-    }
c313de
     return 0;
c313de
 }
c313de
 
c313de
-- 
c313de
2.22.0
c313de