Move all all driver directory creation and permission handling
from qemuStateInitialize to its own function. This is just code
movement

Signed-off-by: Cole Robinson <[email protected]>
---
 src/qemu/qemu_driver.c | 299 ++++++++++++++++++++++-------------------
 1 file changed, 158 insertions(+), 141 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 861795724a..b9f5e976b2 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -518,68 +518,11 @@ qemuDomainFindMaxID(virDomainObj *vm,
 }
 
 
-/**
- * qemuStateInitialize:
- *
- * Initialization function for the QEMU daemon
- */
-static virDrvStateInitResult
-qemuStateInitialize(bool privileged,
-                    const char *root,
-                    bool monolithic G_GNUC_UNUSED,
-                    virStateInhibitCallback callback,
-                    void *opaque)
+static int
+qemuStateInitializeDirs(bool privileged,
+                        virQEMUDriverConfig *cfg)
 {
-    g_autofree char *driverConf = NULL;
-    virQEMUDriverConfig *cfg;
-    uid_t run_uid = -1;
-    gid_t run_gid = -1;
-    size_t i;
-    const char *defsecmodel = NULL;
-    g_autoptr(virIdentity) identity = virIdentityGetCurrent();
-    virDomainDriverAutoStartConfig autostartCfg;
-
-    qemu_driver = g_new0(virQEMUDriver, 1);
-
-    qemu_driver->lockFD = -1;
-
-    if (virMutexInit(&qemu_driver->lock) < 0) {
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("cannot initialize mutex"));
-        VIR_FREE(qemu_driver);
-        return VIR_DRV_STATE_INIT_ERROR;
-    }
-
-    qemu_driver->privileged = privileged;
-    qemu_driver->hostarch = virArchFromHost();
-    if (root != NULL)
-        qemu_driver->embeddedRoot = g_strdup(root);
-
-    if (!(qemu_driver->domains = virDomainObjListNew()))
-        goto error;
-
-    /* Init domain events */
-    qemu_driver->domainEventState = virObjectEventStateNew();
-    if (!qemu_driver->domainEventState)
-        goto error;
-
-    /* read the host sysinfo */
-    if (privileged)
-        qemu_driver->hostsysinfo = virSysinfoRead();
-
-    if (!(qemu_driver->config = cfg = virQEMUDriverConfigNew(privileged, 
root)))
-        goto error;
-
-    driverConf = g_strdup_printf("%s/qemu.conf", cfg->configBaseDir);
-
-    if (virQEMUDriverConfigLoadFile(cfg, driverConf, privileged) < 0)
-        goto error;
-
-    if (virQEMUDriverConfigValidate(cfg) < 0)
-        goto error;
-
-    if (virQEMUDriverConfigSetDefaults(cfg) < 0)
-        goto error;
+    int ret = -1;
 
     if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) {
         virReportSystemError(errno, _("Failed to create state dir %1$s"),
@@ -659,81 +602,6 @@ qemuStateInitialize(bool privileged,
         goto error;
     }
 
-    qemu_driver->inhibitor = virInhibitorNew(
-        VIR_INHIBITOR_WHAT_SHUTDOWN,
-        _("Libvirt QEMU"),
-        _("QEMU/KVM virtual machines are running"),
-        VIR_INHIBITOR_MODE_DELAY,
-        callback,
-        opaque);
-
-    if ((qemu_driver->lockFD =
-         virPidFileAcquire(cfg->stateDir, "driver", getpid())) < 0)
-        goto error;
-
-    if (!(qemu_driver->lockManager =
-          virLockManagerPluginNew(cfg->lockManagerName ?
-                                  cfg->lockManagerName : "nop",
-                                  "qemu",
-                                  cfg->configBaseDir,
-                                  0)))
-        goto error;
-
-   if (cfg->macFilter) {
-        if (!(qemu_driver->ebtables = ebtablesContextNew("qemu"))) {
-            virReportSystemError(errno,
-                                 _("failed to enable mac filter in '%1$s'"),
-                                 __FILE__);
-            goto error;
-        }
-
-        if (ebtablesAddForwardPolicyReject(qemu_driver->ebtables) < 0)
-            goto error;
-   }
-
-    /* Allocate bitmap for remote display port reservations. We cannot
-     * do this before the config is loaded properly, since the port
-     * numbers are configurable now */
-    if ((qemu_driver->remotePorts =
-         virPortAllocatorRangeNew(_("display"),
-                                  cfg->remotePortMin,
-                                  cfg->remotePortMax)) == NULL)
-        goto error;
-
-    if ((qemu_driver->webSocketPorts =
-         virPortAllocatorRangeNew(_("webSocket"),
-                                  cfg->webSocketPortMin,
-                                  cfg->webSocketPortMax)) == NULL)
-        goto error;
-
-    if ((qemu_driver->rdpPorts =
-         virPortAllocatorRangeNew(_("rdp"),
-                                  cfg->rdpPortMin,
-                                  cfg->rdpPortMax)) == NULL)
-        goto error;
-
-
-    if ((qemu_driver->migrationPorts =
-         virPortAllocatorRangeNew(_("migration"),
-                                  cfg->migrationPortMin,
-                                  cfg->migrationPortMax)) == NULL)
-        goto error;
-
-    if ((qemu_driver->backupPorts =
-         virPortAllocatorRangeNew(_("backup"),
-                                  cfg->backupPortMin,
-                                  cfg->backupPortMax)) == NULL)
-        goto error;
-
-    if (qemuSecurityInit(qemu_driver) < 0)
-        goto error;
-
-    if (!(qemu_driver->hostdevMgr = virHostdevManagerGetDefault()))
-        goto error;
-
-    if (qemuMigrationDstErrorInit(qemu_driver) < 0)
-        goto error;
-
     if (privileged) {
         g_autofree char *channeldir = NULL;
 
@@ -830,7 +698,161 @@ qemuStateInitialize(bool privileged,
                                  (int)cfg->group);
             goto error;
         }
+    }
 
+    if (privileged &&
+        virFileUpdatePerm(cfg->memoryBackingDir,
+                          0, S_IXGRP | S_IXOTH) < 0)
+        goto error;
+
+    ret = 0;
+error:
+    return ret;
+}
+
+
+/**
+ * qemuStateInitialize:
+ *
+ * Initialization function for the QEMU daemon
+ */
+static virDrvStateInitResult
+qemuStateInitialize(bool privileged,
+                    const char *root,
+                    bool monolithic G_GNUC_UNUSED,
+                    virStateInhibitCallback callback,
+                    void *opaque)
+{
+    g_autofree char *driverConf = NULL;
+    virQEMUDriverConfig *cfg;
+    uid_t run_uid = -1;
+    gid_t run_gid = -1;
+    size_t i;
+    const char *defsecmodel = NULL;
+    g_autoptr(virIdentity) identity = virIdentityGetCurrent();
+    virDomainDriverAutoStartConfig autostartCfg;
+
+    qemu_driver = g_new0(virQEMUDriver, 1);
+
+    qemu_driver->lockFD = -1;
+
+    if (virMutexInit(&qemu_driver->lock) < 0) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("cannot initialize mutex"));
+        VIR_FREE(qemu_driver);
+        return VIR_DRV_STATE_INIT_ERROR;
+    }
+
+    qemu_driver->privileged = privileged;
+    qemu_driver->hostarch = virArchFromHost();
+    if (root != NULL)
+        qemu_driver->embeddedRoot = g_strdup(root);
+
+    if (!(qemu_driver->domains = virDomainObjListNew()))
+        goto error;
+
+    /* Init domain events */
+    qemu_driver->domainEventState = virObjectEventStateNew();
+    if (!qemu_driver->domainEventState)
+        goto error;
+
+    /* read the host sysinfo */
+    if (privileged)
+        qemu_driver->hostsysinfo = virSysinfoRead();
+
+    if (!(qemu_driver->config = cfg = virQEMUDriverConfigNew(privileged, 
root)))
+        goto error;
+
+    driverConf = g_strdup_printf("%s/qemu.conf", cfg->configBaseDir);
+
+    if (virQEMUDriverConfigLoadFile(cfg, driverConf, privileged) < 0)
+        goto error;
+
+    if (virQEMUDriverConfigValidate(cfg) < 0)
+        goto error;
+
+    if (virQEMUDriverConfigSetDefaults(cfg) < 0)
+        goto error;
+
+    if (qemuStateInitializeDirs(privileged, cfg) < 0)
+        goto error;
+
+    qemu_driver->inhibitor = virInhibitorNew(
+        VIR_INHIBITOR_WHAT_SHUTDOWN,
+        _("Libvirt QEMU"),
+        _("QEMU/KVM virtual machines are running"),
+        VIR_INHIBITOR_MODE_DELAY,
+        callback,
+        opaque);
+
+    if ((qemu_driver->lockFD =
+         virPidFileAcquire(cfg->stateDir, "driver", getpid())) < 0)
+        goto error;
+
+    if (!(qemu_driver->lockManager =
+          virLockManagerPluginNew(cfg->lockManagerName ?
+                                  cfg->lockManagerName : "nop",
+                                  "qemu",
+                                  cfg->configBaseDir,
+                                  0)))
+        goto error;
+
+   if (cfg->macFilter) {
+        if (!(qemu_driver->ebtables = ebtablesContextNew("qemu"))) {
+            virReportSystemError(errno,
+                                 _("failed to enable mac filter in '%1$s'"),
+                                 __FILE__);
+            goto error;
+        }
+
+        if (ebtablesAddForwardPolicyReject(qemu_driver->ebtables) < 0)
+            goto error;
+   }
+
+    /* Allocate bitmap for remote display port reservations. We cannot
+     * do this before the config is loaded properly, since the port
+     * numbers are configurable now */
+    if ((qemu_driver->remotePorts =
+         virPortAllocatorRangeNew(_("display"),
+                                  cfg->remotePortMin,
+                                  cfg->remotePortMax)) == NULL)
+        goto error;
+
+    if ((qemu_driver->webSocketPorts =
+         virPortAllocatorRangeNew(_("webSocket"),
+                                  cfg->webSocketPortMin,
+                                  cfg->webSocketPortMax)) == NULL)
+        goto error;
+
+    if ((qemu_driver->rdpPorts =
+         virPortAllocatorRangeNew(_("rdp"),
+                                  cfg->rdpPortMin,
+                                  cfg->rdpPortMax)) == NULL)
+        goto error;
+
+
+    if ((qemu_driver->migrationPorts =
+         virPortAllocatorRangeNew(_("migration"),
+                                  cfg->migrationPortMin,
+                                  cfg->migrationPortMax)) == NULL)
+        goto error;
+
+    if ((qemu_driver->backupPorts =
+         virPortAllocatorRangeNew(_("backup"),
+                                  cfg->backupPortMin,
+                                  cfg->backupPortMax)) == NULL)
+        goto error;
+
+    if (qemuSecurityInit(qemu_driver) < 0)
+        goto error;
+
+    if (!(qemu_driver->hostdevMgr = virHostdevManagerGetDefault()))
+        goto error;
+
+    if (qemuMigrationDstErrorInit(qemu_driver) < 0)
+        goto error;
+
+    if (privileged) {
         run_uid = cfg->user;
         run_gid = cfg->group;
     }
@@ -859,11 +881,6 @@ qemuStateInitialize(bool privileged,
             goto error;
     }
 
-    if (privileged &&
-        virFileUpdatePerm(cfg->memoryBackingDir,
-                          0, S_IXGRP | S_IXOTH) < 0)
-        goto error;
-
     /* Get all the running persistent or transient configs first */
     if (virDomainObjListLoadAllConfigs(qemu_driver->domains,
                                        cfg->stateDir,
-- 
2.53.0

Reply via email to