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
