From: Peter Krempa Date: Wed, 20 May 2026 11:59:12 +0000 (+0200) Subject: qemuxmlconftest: Use virTestMakeDummyFD() to get VDPA disk fds X-Git-Tag: v12.4.0-rc1~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f7f2bf2aa0d949688b964ff482a9ca7825f4bdda;p=thirdparty%2Flibvirt.git qemuxmlconftest: Use virTestMakeDummyFD() to get VDPA disk fds 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 Reviewed-by: Michal Privoznik --- 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"); } } }