[libvirt] [PATCH 04/10] conf: use virDomainChrSourceDef to save the path

Luyao Huang lhuang at redhat.com
Wed Jun 17 03:56:15 UTC 2015


As the backend of shmem server is a unix type chr device,
save it in virDomainChrSourceDef can reuse the exist
code for chr device.

Signed-off-by: Luyao Huang <lhuang at redhat.com>
---
 src/conf/domain_conf.c  |  8 +++++---
 src/conf/domain_conf.h  |  2 +-
 src/qemu/qemu_command.c | 16 +++-------------
 3 files changed, 9 insertions(+), 17 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 60d4d07..306b718 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1945,7 +1945,7 @@ void virDomainShmemDefFree(virDomainShmemDefPtr def)
         return;
 
     virDomainDeviceInfoClear(&def->info);
-    VIR_FREE(def->server.path);
+    virDomainChrSourceDefClear(&def->server.chr);
     VIR_FREE(def->name);
     VIR_FREE(def);
 }
@@ -11042,8 +11042,10 @@ virDomainShmemDefParseXML(xmlNodePtr node,
     if ((server = virXPathNode("./server[1]", ctxt))) {
         def->server.enabled = true;
 
+        def->server.chr.type = VIR_DOMAIN_CHR_TYPE_UNIX;
+        def->server.chr.data.nix.listen = false;
         if ((tmp = virXMLPropString(server, "path")))
-            def->server.path = virFileSanitizePath(tmp);
+            def->server.chr.data.nix.path = virFileSanitizePath(tmp);
         VIR_FREE(tmp);
     }
 
@@ -19997,7 +19999,7 @@ virDomainShmemDefFormat(virBufferPtr buf,
 
     if (def->server.enabled) {
         virBufferAddLit(buf, "<server");
-        virBufferEscapeString(buf, " path='%s'", def->server.path);
+        virBufferEscapeString(buf, " path='%s'", def->server.chr.data.nix.path);
         virBufferAddLit(buf, "/>\n");
     }
 
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index ba17a8d..a4b1bf3 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1599,7 +1599,7 @@ struct _virDomainShmemDef {
     unsigned long long size;
     struct {
         bool enabled;
-        char *path;
+        virDomainChrSourceDef chr;
     } server;
     struct {
         bool enabled;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 0414f77..5d55794 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -8500,24 +8500,14 @@ qemuBuildShmemBackendStr(virDomainShmemDefPtr shmem,
                          virQEMUCapsPtr qemuCaps)
 {
     char *devstr = NULL;
-    virDomainChrSourceDef source = {
-        .type = VIR_DOMAIN_CHR_TYPE_UNIX,
-        .data.nix = {
-            .path = shmem->server.path,
-            .listen = false,
-        }
-    };
 
-    if (!shmem->server.path &&
-        virAsprintf(&source.data.nix.path,
+    if (!shmem->server.chr.data.nix.path &&
+        virAsprintf(&shmem->server.chr.data.nix.path,
                     "/var/lib/libvirt/shmem-%s-sock",
                     shmem->name) < 0)
         return NULL;
 
-    devstr = qemuBuildChrChardevStr(&source, shmem->info.alias, qemuCaps);
-
-    if (!shmem->server.path)
-        VIR_FREE(source.data.nix.path);
+    devstr = qemuBuildChrChardevStr(&shmem->server.chr, shmem->info.alias, qemuCaps);
 
     return devstr;
 }
-- 
1.8.3.1




More information about the libvir-list mailing list