[PATCH 20/24] qemu: Use qemuBuildChrChardevCommand for vhost-user disk backend

Peter Krempa pkrempa at redhat.com
Thu Dec 9 12:30:55 UTC 2021


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 at redhat.com>
---
 src/qemu/qemu_block.c   |  1 -
 src/qemu/qemu_block.h   |  1 -
 src/qemu/qemu_command.c | 18 ++++--------------
 3 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index f6a7f2b750..87dca40179 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -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);
 }

diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h
index 54601a48a9..184a549d5c 100644
--- a/src/qemu/qemu_block.h
+++ b/src/qemu/qemu_block.h
@@ -99,7 +99,6 @@ struct qemuBlockStorageSourceAttachData {

     virDomainChrSourceDef *chardevDef;
     char *chardevAlias;
-    char *chardevCmd;
     bool chardevAdded;

     virJSONValue *authsecretProps;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 0fb7b83d3f..0bfe76c29c 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -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);
 }

-- 
2.31.1




More information about the libvir-list mailing list