]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: hotplug: Refactor shmem props formatting to qemuMonitorCreateObjectProps
authorPeter Krempa <pkrempa@redhat.com>
Fri, 18 May 2018 12:48:22 +0000 (14:48 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 5 Jun 2018 06:13:59 +0000 (08:13 +0200)
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_hotplug.c

index d3c3ebf3a7fe3a4282b8029a0865c2cfb44c7b6a..3cf6e89986db6038f7973cb49480a476a805a046 100644 (file)
@@ -8787,43 +8787,25 @@ qemuBuildShmemDevStr(virDomainDefPtr def,
 virJSONValuePtr
 qemuBuildShmemBackendMemProps(virDomainShmemDefPtr shmem)
 {
+    char *mem_alias = NULL;
     char *mem_path = NULL;
     virJSONValuePtr ret = NULL;
 
     if (virAsprintf(&mem_path, "/dev/shm/%s", shmem->name) < 0)
         return NULL;
 
-    virJSONValueObjectCreate(&ret,
-                             "s:mem-path", mem_path,
-                             "U:size", shmem->size,
-                             "b:share", true,
-                             NULL);
-
-    VIR_FREE(mem_path);
-    return ret;
-}
-
-
-static char *
-qemuBuildShmemBackendMemStr(virDomainShmemDefPtr shmem)
-{
-    char *ret = NULL;
-    char *alias = NULL;
-    virJSONValuePtr props = qemuBuildShmemBackendMemProps(shmem);
-
-    if (!props)
-        return NULL;
-
-    if (virAsprintf(&alias, "shmmem-%s", shmem->info.alias) < 0)
+    if (virAsprintf(&mem_alias, "shmmem-%s", shmem->info.alias) < 0)
         goto cleanup;
 
-    ret = virQEMUBuildObjectCommandlineFromJSONType("memory-backend-file",
-                                                    alias,
-                                                    props);
- cleanup:
-    VIR_FREE(alias);
-    virJSONValueFree(props);
+    qemuMonitorCreateObjectProps(&ret, "memory-backend-file", mem_alias,
+                                 "s:mem-path", mem_path,
+                                 "U:size", shmem->size,
+                                 "b:share", true,
+                                 NULL);
 
+ cleanup:
+    VIR_FREE(mem_alias);
+    VIR_FREE(mem_path);
     return ret;
 }
 
@@ -8837,7 +8819,10 @@ qemuBuildShmemCommandLine(virLogManagerPtr logManager,
                           virQEMUCapsPtr qemuCaps,
                           bool chardevStdioLogd)
 {
+    virJSONValuePtr memProps = NULL;
+    virBuffer buf = VIR_BUFFER_INITIALIZER;
     char *devstr = NULL;
+    int rc;
 
     if (shmem->size) {
         /*
@@ -8871,11 +8856,17 @@ qemuBuildShmemCommandLine(virLogManagerPtr logManager,
         break;
 
     case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_PLAIN:
-        if (!(devstr = qemuBuildShmemBackendMemStr(shmem)))
+        if (!(memProps = qemuBuildShmemBackendMemProps(shmem)))
             return -1;
 
-        virCommandAddArgList(cmd, "-object", devstr, NULL);
-        VIR_FREE(devstr);
+        rc = virQEMUBuildObjectCommandlineFromJSON(&buf, memProps);
+        virJSONValueFree(memProps);
+
+        if (rc < 0)
+            return -1;
+
+        virCommandAddArg(cmd, "-object");
+        virCommandAddArgBuffer(cmd, &buf);
 
         ATTRIBUTE_FALLTHROUGH;
     case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL:
index e1cd0a8c5293fe95fecd57fab744de1aa7b485d9..202a2b996e9f2710c4bcca8db75e296c2e59d289 100644 (file)
@@ -2751,8 +2751,6 @@ qemuDomainAttachShmemDevice(virQEMUDriverPtr driver,
         if (!(props = qemuBuildShmemBackendMemProps(shmem)))
             goto cleanup;
 
-        if (virAsprintf(&memAlias, "shmmem-%s", shmem->info.alias) < 0)
-            goto cleanup;
     }
 
     qemuDomainObjEnterMonitor(driver, vm);
@@ -2762,12 +2760,8 @@ qemuDomainAttachShmemDevice(virQEMUDriverPtr driver,
                                      &shmem->server.chr) < 0)
             goto exit_monitor;
     } else {
-        if (qemuMonitorAddObjectType(priv->mon, "memory-backend-file",
-                                     memAlias, props) < 0) {
-            props = NULL;
+        if (qemuMonitorAddObject(priv->mon, &props, &memAlias) < 0)
             goto exit_monitor;
-        }
-        props = NULL;
     }
 
     release_backing = true;