]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuxmlconftest: Use virTestMakeDummyFD() to get VDPA disk fds
authorPeter Krempa <pkrempa@redhat.com>
Wed, 20 May 2026 11:59:12 +0000 (13:59 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 25 May 2026 11:28:58 +0000 (13:28 +0200)
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 <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
tests/qemuxmlconfdata/disk-vhostvdpa.x86_64-latest.args
tests/qemuxmlconftest.c

index cd48c61c7d402c611a99d90206cb7f2522f3cfb7..692df969ba795f5b9908d8b0c643356702a94cfb 100644 (file)
@@ -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"}' \
index ef071f564858379a8c15b9598daf8c20d65e123d..19839fb32e266b584c96b9e25f2c76ad05260b11 100644 (file)
@@ -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");
             }
         }
     }