]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: add standalone VNC state directory
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Wed, 22 Apr 2026 14:14:32 +0000 (18:14 +0400)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 4 Jun 2026 12:20:46 +0000 (14:20 +0200)
Add a state directory for the standalone qemu-vnc process, following
the same pattern used for the RDP state directory.

Signed-off-by: Marc-André Lureau <marcandre.lureau@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 9b94733a38fc01305734810e86f78222ab2a6497..5d28ad17af0422926b82b50fe9539b45fcb00adf 100644 (file)
@@ -242,6 +242,7 @@ virQEMUDriverConfig *virQEMUDriverConfigNew(bool privileged,
     cfg->autostartDir = g_strdup_printf("%s/qemu/autostart", cfg->configBaseDir);
     cfg->slirpStateDir = g_strdup_printf("%s/slirp", cfg->stateDir);
     cfg->rdpStateDir = g_strdup_printf("%s/rdp", cfg->stateDir);
+    cfg->vncStateDir = g_strdup_printf("%s/vnc", cfg->stateDir);
     cfg->passtStateDir = g_strdup_printf("%s/passt", cfg->stateDir);
     cfg->dbusStateDir = g_strdup_printf("%s/dbus", cfg->stateDir);
 
@@ -368,6 +369,7 @@ static void virQEMUDriverConfigDispose(void *obj)
     g_free(cfg->passtStateDir);
     g_free(cfg->dbusStateDir);
     g_free(cfg->rdpStateDir);
+    g_free(cfg->vncStateDir);
 
     g_free(cfg->libDir);
     g_free(cfg->cacheDir);
index a2ca4ddbdb7b8afd05439d012a79a2465fdf70f7..7b692f7306072b68073112b0a05fbfa7c61c0d87 100644 (file)
@@ -112,6 +112,7 @@ struct _virQEMUDriverConfig {
     char *passtStateDir;
     char *dbusStateDir;
     char *rdpStateDir;
+    char *vncStateDir;
     /* These two directories are ones QEMU processes use (so must match
      * the QEMU user/group */
     char *libDir;
index dbb907547689cdfe13e3d1494b76185a0a13eaca..2071f13b4588fad868ea0db9d6b5ea014b9b46a2 100644 (file)
@@ -658,6 +658,11 @@ qemuStateInitialize(bool privileged,
                              cfg->rdpStateDir);
         goto error;
     }
+    if (g_mkdir_with_parents(cfg->vncStateDir, 0777) < 0) {
+        virReportSystemError(errno, _("Failed to create vnc state dir %1$s"),
+                             cfg->vncStateDir);
+        goto error;
+    }
 
     qemu_driver->inhibitor = virInhibitorNew(
         VIR_INHIBITOR_WHAT_SHUTDOWN,
@@ -830,6 +835,13 @@ qemuStateInitialize(bool privileged,
                                  (int)cfg->group);
             goto error;
         }
+        if (chown(cfg->vncStateDir, cfg->user, cfg->group) < 0) {
+            virReportSystemError(errno,
+                                 _("unable to set ownership of '%1$s' to %2$d:%3$d"),
+                                 cfg->vncStateDir, (int)cfg->user,
+                                 (int)cfg->group);
+            goto error;
+        }
 
         run_uid = cfg->user;
         run_gid = cfg->group;