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