]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Use qemuBuildChrChardevCommand for vhost-user disk backend
authorPeter Krempa <pkrempa@redhat.com>
Thu, 4 Nov 2021 16:12:13 +0000 (17:12 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 10 Dec 2021 15:37:42 +0000 (16:37 +0100)
Now that the API for qemuBuildChrChardevCommand is sane enough, we can
use it to centralize formatting of '-chardev' generally.

For virtiofs we don't have a centrally stored chardev source so we
allocate one inline for temporary use.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_block.c
src/qemu/qemu_block.h
src/qemu/qemu_command.c

index f6a7f2b750708846f5054aa390b4b9987e0345aa..87dca4017920f844f32923be7822441d786a9483 100644 (file)
@@ -1655,7 +1655,6 @@ qemuBlockStorageSourceAttachDataFree(qemuBlockStorageSourceAttachData *data)
     g_free(data->driveCmd);
     g_free(data->driveAlias);
     g_free(data->chardevAlias);
-    g_free(data->chardevCmd);
     g_free(data);
 }
 
index 54601a48a95d775626e6d8050c7170a3fa825202..184a549d5c0adc43e0ffcdfc786142ee2fb6f437 100644 (file)
@@ -99,7 +99,6 @@ struct qemuBlockStorageSourceAttachData {
 
     virDomainChrSourceDef *chardevDef;
     char *chardevAlias;
-    char *chardevCmd;
     bool chardevAdded;
 
     virJSONValue *authsecretProps;
index 0fb7b83d3fa77f876b20f057748b830bbc70ade6..0bfe76c29c46fca78d550dd16e2377216cd8242c 100644 (file)
@@ -2591,8 +2591,10 @@ qemuBuildBlockStorageSourceAttachDataCommandline(virCommand *cmd,
     if (data->driveCmd)
         virCommandAddArgList(cmd, "-drive", data->driveCmd, NULL);
 
-    if (data->chardevCmd)
-        virCommandAddArgList(cmd, "-chardev", data->chardevCmd, NULL);
+    if (data->chardevDef) {
+        if (qemuBuildChardevCommand(cmd, data->chardevDef, data->chardevAlias, qemuCaps) < 0)
+            return -1;
+    }
 
     if (data->storageProps) {
         if (!(tmp = virJSONValueToString(data->storageProps, false)))
@@ -10959,24 +10961,12 @@ static qemuBlockStorageSourceAttachData *
 qemuBuildStorageSourceAttachPrepareChardev(virDomainDiskDef *disk)
 {
     g_autoptr(qemuBlockStorageSourceAttachData) data = NULL;
-    g_auto(virBuffer) chardev = VIR_BUFFER_INITIALIZER;
 
     data = g_new0(qemuBlockStorageSourceAttachData, 1);
 
     data->chardevDef = disk->src->vhostuser;
     data->chardevAlias = qemuDomainGetVhostUserChrAlias(disk->info.alias);
 
-    virBufferAddLit(&chardev, "socket");
-    virBufferAsprintf(&chardev, ",id=%s", data->chardevAlias);
-    virBufferAddLit(&chardev, ",path=");
-    virQEMUBuildBufferEscapeComma(&chardev, disk->src->vhostuser->data.nix.path);
-
-    qemuBuildChrChardevReconnectStr(&chardev,
-                                    &disk->src->vhostuser->data.nix.reconnect);
-
-    if (!(data->chardevCmd = virBufferContentAndReset(&chardev)))
-        return NULL;
-
     return g_steal_pointer(&data);
 }