]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Convert passing of 'vhostfd' to 'qemuFDPassDirect'
authorPeter Krempa <pkrempa@redhat.com>
Mon, 16 May 2022 13:08:05 +0000 (15:08 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 17 May 2022 17:31:07 +0000 (19:31 +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_domain.c
src/qemu/qemu_domain.h
src/qemu/qemu_hotplug.c
src/qemu/qemu_interface.c
tests/qemuxml2argvmock.c

index 9b9d9b1ab3f3bc9d70148652d8c63a1f8f2683d7..a626e2c99c5ba2f441b254e931ccc03751907fd0 100644 (file)
@@ -4224,7 +4224,7 @@ qemuBuildHostNetProps(virDomainNetDef *net)
 
             nfds = 0;
             for (n = netpriv->vhostfds; n; n = n->next) {
-                virBufferAsprintf(&buf, "%s:", qemuFDPassGetPath(n->data));
+                virBufferAsprintf(&buf, "%s:", qemuFDPassDirectGetPath(n->data));
                 nfds++;
             }
 
@@ -8886,10 +8886,8 @@ qemuBuildInterfaceCommandLine(virQEMUDriver *driver,
             return -1;
     }
 
-    for (n = netpriv->vhostfds; n; n = n->next) {
-        if (qemuFDPassTransferCommand(n->data, cmd) < 0)
-            return -1;
-    }
+    for (n = netpriv->vhostfds; n; n = n->next)
+        qemuFDPassDirectTransferCommand(n->data, cmd);
 
     if (qemuFDPassTransferCommand(netpriv->slirpfd, cmd) < 0 ||
         qemuFDPassTransferCommand(netpriv->vdpafd, cmd) < 0)
index 4305d5db0682929a4eb3f352f8d6989b1ffd102b..eba556a6e78f6de2d9bdef792cd9bf68a8c824d4 100644 (file)
@@ -1053,7 +1053,7 @@ qemuDomainNetworkPrivateClearFDs(qemuDomainNetworkPrivate *priv)
 
     g_clear_pointer(&priv->slirpfd, qemuFDPassFree);
     g_clear_pointer(&priv->vdpafd, qemuFDPassFree);
-    g_slist_free_full(g_steal_pointer(&priv->vhostfds), (GDestroyNotify) qemuFDPassFree);
+    g_slist_free_full(g_steal_pointer(&priv->vhostfds), (GDestroyNotify) qemuFDPassDirectFree);
     g_slist_free_full(g_steal_pointer(&priv->tapfds), (GDestroyNotify) qemuFDPassFree);
 }
 
index e9eda8903ec2f1e382880608e88d6e874f143237..9475c30e0c029da5595dfa334a051108d4a5f27a 100644 (file)
@@ -405,7 +405,7 @@ struct _qemuDomainNetworkPrivate {
     /* file descriptor transfer helpers */
     qemuFDPass *slirpfd;
     GSList *tapfds;
-    GSList *vhostfds;
+    GSList *vhostfds; /* qemuFDPassDirect */
     qemuFDPass *vdpafd;
 };
 
index f7fcd9d3f715a5a137915d71a6f3dae54a18683d..192329db4b2eca2f2cce93152fd75a2ccc63602a 100644 (file)
@@ -1380,7 +1380,7 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
     }
 
     for (n = netpriv->vhostfds; n; n = n->next) {
-        if (qemuFDPassTransferMonitor(n->data, priv->mon) < 0) {
+        if (qemuFDPassDirectTransferMonitor(n->data, priv->mon) < 0) {
             qemuDomainObjExitMonitor(vm);
             goto cleanup;
         }
@@ -1528,7 +1528,7 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
         qemuFDPassTransferMonitorRollback(n->data, priv->mon);
 
     for (n = netpriv->vhostfds; n; n = n->next)
-        qemuFDPassTransferMonitorRollback(n->data, priv->mon);
+        qemuFDPassDirectTransferMonitorRollback(n->data, priv->mon);
 
     qemuDomainObjExitMonitor(vm);
     virErrorRestore(&originalError);
index bda96808eb4bc46d6c295dc693a2dd61b09f4eaa..ba03277025e17d09dca1977da32433c6f9f0d184 100644 (file)
@@ -700,12 +700,10 @@ int
 qemuInterfaceOpenVhostNet(virDomainObj *vm,
                           virDomainNetDef *net)
 {
-    qemuDomainObjPrivate *priv = vm->privateData;
     qemuDomainNetworkPrivate *netpriv = QEMU_DOMAIN_NETWORK_PRIVATE(net);
     size_t i;
     const char *vhostnet_path = net->backend.vhost;
     size_t vhostfdSize = net->driver.virtio.queues;
-    g_autofree char *prefix = g_strdup_printf("vhostfd-%s", net->info.alias);
 
     if (!vhostfdSize)
         vhostfdSize = 1;
@@ -743,8 +741,7 @@ qemuInterfaceOpenVhostNet(virDomainObj *vm,
 
     for (i = 0; i < vhostfdSize; i++) {
         VIR_AUTOCLOSE fd = open(vhostnet_path, O_RDWR);
-        g_autoptr(qemuFDPass) pass = qemuFDPassNewDirect(prefix, priv);
-        g_autofree char *suffix = g_strdup_printf("%zu", i);
+        g_autofree char *name = g_strdup_printf("vhostfd-%s%zu", net->info.alias, i);
 
         /* If the config says explicitly to use vhost and we couldn't open it,
          * report an error.
@@ -761,8 +758,7 @@ qemuInterfaceOpenVhostNet(virDomainObj *vm,
             break;
         }
 
-        qemuFDPassAddFD(pass, &fd, suffix);
-        netpriv->vhostfds = g_slist_prepend(netpriv->vhostfds, g_steal_pointer(&pass));
+        netpriv->vhostfds = g_slist_prepend(netpriv->vhostfds, qemuFDPassDirectNew(name, &fd));
     }
 
     netpriv->vhostfds = g_slist_reverse(netpriv->vhostfds);
index aa82ffa2d673b4427b78e4a7b1804f9b1fa18390..bb14f775f3eb7519ba509623fed3e2272e5470c2 100644 (file)
@@ -226,12 +226,10 @@ virNetDevOpenvswitchGetVhostuserIfname(const char *path G_GNUC_UNUSED,
 }
 
 int
-qemuInterfaceOpenVhostNet(virDomainObj *vm,
+qemuInterfaceOpenVhostNet(virDomainObj *vm G_GNUC_UNUSED,
                           virDomainNetDef *net)
 {
-    qemuDomainObjPrivate *priv = vm->privateData;
     qemuDomainNetworkPrivate *netpriv = QEMU_DOMAIN_NETWORK_PRIVATE(net);
-    g_autofree char *prefix = g_strdup_printf("vhostfd-%s", net->info.alias);
     size_t vhostfdSize = net->driver.virtio.queues;
     size_t i;
 
@@ -242,12 +240,10 @@ qemuInterfaceOpenVhostNet(virDomainObj *vm,
         return 0;
 
     for (i = 0; i < vhostfdSize; i++) {
-        g_autoptr(qemuFDPass) pass = qemuFDPassNewDirect(prefix, priv);
-        g_autofree char *suffix = g_strdup_printf("%zu", i);
+        g_autofree char *name = g_strdup_printf("vhostfd-%s%zu", net->info.alias, i);
         int fd = STDERR_FILENO + 42 + i;
 
-        qemuFDPassAddFD(pass, &fd, suffix);
-        netpriv->vhostfds = g_slist_prepend(netpriv->vhostfds, g_steal_pointer(&pass));
+        netpriv->vhostfds = g_slist_prepend(netpriv->vhostfds, qemuFDPassDirectNew(name, &fd));
     }
 
     netpriv->vhostfds = g_slist_reverse(netpriv->vhostfds);