From: Peter Krempa <[email protected]>

While VDPA disks did use real FDs they used convoluted infrastructure
for mapping them to specific numbers. Remove that since we can now mask
them from the output args instead.

Signed-off-by: Peter Krempa <[email protected]>
---
 .../disk-vhostvdpa.x86_64-latest.args         |  2 +-
 tests/qemuxmlconftest.c                       | 36 +++++--------------
 2 files changed, 9 insertions(+), 29 deletions(-)

diff --git a/tests/qemuxmlconfdata/disk-vhostvdpa.x86_64-latest.args 
b/tests/qemuxmlconfdata/disk-vhostvdpa.x86_64-latest.args
index cd48c61c7d..692df969ba 100644
--- a/tests/qemuxmlconfdata/disk-vhostvdpa.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/disk-vhostvdpa.x86_64-latest.args
@@ -27,7 +27,7 @@ 
XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
 -no-shutdown \
 -boot strict=on \
 -device 
'{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
--add-fd set=0,fd=XXXXXXX,opaque=libvirt-1-storage-vdpa \
+-add-fd set=0,fd=@vdpa-libvirt-1-storage-fd@,opaque=libvirt-1-storage-vdpa \
 -blockdev 
'{"driver":"virtio-blk-vhost-vdpa","path":"/dev/fdset/0","node-name":"libvirt-1-storage","read-only":false,"cache":{"direct":true,"no-flush":false}}'
 \
 -device 
'{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x2","drive":"libvirt-1-storage","id":"virtio-disk0","bootindex":1,"write-cache":"on"}'
 \
 -audiodev '{"id":"audio1","driver":"none"}' \
diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c
index ef071f5648..19839fb32e 100644
--- a/tests/qemuxmlconftest.c
+++ b/tests/qemuxmlconftest.c
@@ -173,34 +173,14 @@ testCompareXMLToArgvCreateArgs(virQEMUDriver *drv,
             STREQ(disk->src->path, "/dev/cdrom"))
             disk->src->hostcdrom = true;

-        if (info->args.vdpafds) {
-            for (src = disk->src; virStorageSourceIsBacking(src); src = 
src->backingStore) {
-                gpointer value;
-
-                if (src->type != VIR_STORAGE_TYPE_VHOST_VDPA)
-                    continue;
-
-                if ((value = g_hash_table_lookup(info->args.vdpafds, 
src->vdpadev))) {
-                    int fd = GPOINTER_TO_INT(value);
-                    qemuDomainStorageSourcePrivate *srcpriv;
-                    VIR_AUTOCLOSE fakefd = open("/dev/zero", O_RDWR);
-
-                    if (fcntl(fd, F_GETFD) != -1) {
-                        fprintf(stderr, "fd '%d' is already in use\n", fd);
-                        abort();
-                    }
-
-                    if (dup2(fakefd, fd) < 0) {
-                        fprintf(stderr, "failed to duplicate fake fd: %s",
-                                g_strerror(errno));
-                        abort();
-                    }
-
-                    srcpriv = qemuDomainStorageSourcePrivateFetch(src);
-
-                    srcpriv->fdpass = 
qemuFDPassNew(qemuBlockStorageSourceGetStorageNodename(src), priv);
-                    qemuFDPassAddFD(srcpriv->fdpass, &fd, "-vdpa");
-                }
+        for (src = disk->src; virStorageSourceIsBacking(src); src = 
src->backingStore) {
+            if (src->type == VIR_STORAGE_TYPE_VHOST_VDPA) {
+                qemuDomainStorageSourcePrivate *srcpriv = 
qemuDomainStorageSourcePrivateFetch(src);
+                int fd = virTestMakeDummyFD(g_strdup_printf("@vdpa-%s-fd@",
+                                                            
qemuBlockStorageSourceGetStorageNodename(src)));
+
+                srcpriv->fdpass = 
qemuFDPassNew(qemuBlockStorageSourceGetStorageNodename(src), priv);
+                qemuFDPassAddFD(srcpriv->fdpass, &fd, "-vdpa");
             }
         }
     }
-- 
2.54.0

Reply via email to