]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: add rdp state directory
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Sun, 16 Mar 2025 08:18:26 +0000 (12:18 +0400)
committerMartin Kletzander <mkletzan@redhat.com>
Tue, 18 Mar 2025 13:15:55 +0000 (14:15 +0100)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
src/qemu/qemu_conf.c
src/qemu/qemu_conf.h
src/qemu/qemu_driver.c
tests/testutilsqemu.c

index b376841388b968e8fd2291116e9df5bff504fdae..1708f4f5ad5b54cc55fb21ea739c5fd12f2b7cef 100644 (file)
@@ -226,6 +226,7 @@ virQEMUDriverConfig *virQEMUDriverConfigNew(bool privileged,
     cfg->configDir = g_strdup_printf("%s/qemu", cfg->configBaseDir);
     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->passtStateDir = g_strdup_printf("%s/passt", cfg->stateDir);
     cfg->dbusStateDir = g_strdup_printf("%s/dbus", cfg->stateDir);
 
@@ -327,6 +328,7 @@ static void virQEMUDriverConfigDispose(void *obj)
     g_free(cfg->slirpStateDir);
     g_free(cfg->passtStateDir);
     g_free(cfg->dbusStateDir);
+    g_free(cfg->rdpStateDir);
 
     g_free(cfg->libDir);
     g_free(cfg->cacheDir);
index 3e1b41af7387b3031463689c5ac4724b4be5d2e6..af1f59708f8f983dc8f7ff5547accc8bfb503264 100644 (file)
@@ -99,6 +99,7 @@ struct _virQEMUDriverConfig {
     char *slirpStateDir;
     char *passtStateDir;
     char *dbusStateDir;
+    char *rdpStateDir;
     /* These two directories are ones QEMU processes use (so must match
      * the QEMU user/group */
     char *libDir;
index f0e9681161018194612bc12d9b491e260b9d7c9a..6f0ce5a2f3648dde41c733133451763ae8528463 100644 (file)
@@ -648,6 +648,11 @@ qemuStateInitialize(bool privileged,
                              cfg->dbusStateDir);
         goto error;
     }
+    if (g_mkdir_with_parents(cfg->rdpStateDir, 0777) < 0) {
+        virReportSystemError(errno, _("Failed to create rdp state dir %1$s"),
+                             cfg->rdpStateDir);
+        goto error;
+    }
 
     qemu_driver->inhibitor = virInhibitorNew(
         VIR_INHIBITOR_WHAT_SHUTDOWN,
@@ -793,6 +798,13 @@ qemuStateInitialize(bool privileged,
                                  (int)cfg->group);
             goto error;
         }
+        if (chown(cfg->rdpStateDir, cfg->user, cfg->group) < 0) {
+            virReportSystemError(errno,
+                                 _("unable to set ownership of '%1$s' to %2$d:%3$d"),
+                                 cfg->rdpStateDir, (int)cfg->user,
+                                 (int)cfg->group);
+            goto error;
+        }
 
         run_uid = cfg->user;
         run_gid = cfg->group;
index 20409a6535acfdbfcc599242d49f84c95169cb07..6189b47d9bf167ed3514e557428e235deaaa60a3 100644 (file)
@@ -330,6 +330,8 @@ int qemuTestDriverInit(virQEMUDriver *driver)
     cfg->passtStateDir = g_strdup("/var/run/libvirt/qemu/passt");
     VIR_FREE(cfg->dbusStateDir);
     cfg->dbusStateDir = g_strdup("/var/run/libvirt/qemu/dbus");
+    VIR_FREE(cfg->rdpStateDir);
+    cfg->rdpStateDir = g_strdup("/var/run/libvirt/qemu/rdp");
 
     if (!g_mkdtemp(statedir)) {
         fprintf(stderr, "Cannot create fake stateDir");