]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu-conf: add slirp state dir
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Thu, 8 Aug 2019 14:55:04 +0000 (18:55 +0400)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 6 Sep 2019 10:47:47 +0000 (12:47 +0200)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_conf.c
src/qemu/qemu_conf.h
src/qemu/qemu_driver.c

index 4f96b0aaa56292ca245a2177fbdd184fc3cdf5c7..bf9ab32a12aa34db909a6b637564115a6377ccc7 100644 (file)
@@ -247,6 +247,8 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
         goto error;
     if (virAsprintf(&cfg->autostartDir, "%s/qemu/autostart", cfg->configBaseDir) < 0)
         goto error;
+    if (virAsprintf(&cfg->slirpStateDir, "%s/slirp", cfg->stateDir) < 0)
+        goto error;
 
     /* Set the default directory to find TLS X.509 certificates.
      * This will then be used as a fallback if the service specific
@@ -335,6 +337,7 @@ static void virQEMUDriverConfigDispose(void *obj)
     VIR_FREE(cfg->swtpmLogDir);
     VIR_FREE(cfg->stateDir);
     VIR_FREE(cfg->swtpmStateDir);
+    VIR_FREE(cfg->slirpStateDir);
 
     VIR_FREE(cfg->libDir);
     VIR_FREE(cfg->cacheDir);
index a85ae50e14db7326c5bb06a8fa8f2bd6c868a5ad..8473d6d4ca0f21cbf16c8ad2e90b173f0544abba 100644 (file)
@@ -96,6 +96,7 @@ struct _virQEMUDriverConfig {
     char *swtpmLogDir;
     char *stateDir;
     char *swtpmStateDir;
+    char *slirpStateDir;
     /* These two directories are ones QEMU processes use (so must match
      * the QEMU user/group */
     char *libDir;
index 7124349f8e1824a253f2eea7c003f941b0f1ef23..69c841d5f51f5aaa732f9c9acddff8e957759a30 100644 (file)
@@ -832,6 +832,11 @@ qemuStateInitialize(bool privileged,
                              cfg->memoryBackingDir);
         goto error;
     }
+    if (virFileMakePath(cfg->slirpStateDir) < 0) {
+        virReportSystemError(errno, _("Failed to create slirp state dir %s"),
+                             cfg->slirpStateDir);
+        goto error;
+    }
 
     if ((qemu_driver->lockFD =
          virPidFileAcquire(cfg->stateDir, "driver", false, getpid())) < 0)
@@ -971,6 +976,13 @@ qemuStateInitialize(bool privileged,
                                  (int)cfg->group);
             goto error;
         }
+        if (chown(cfg->slirpStateDir, cfg->user, cfg->group) < 0) {
+            virReportSystemError(errno,
+                                 _("unable to set ownership of '%s' to %d:%d"),
+                                 cfg->slirpStateDir, (int)cfg->user,
+                                 (int)cfg->group);
+            goto error;
+        }
 
         run_uid = cfg->user;
         run_gid = cfg->group;