"usb-storage.werror", /* X_QEMU_CAPS_USB_STORAGE_WERROR */
"egl-headless", /* QEMU_CAPS_EGL_HEADLESS */
"vfio-pci.display", /* QEMU_CAPS_VFIO_PCI_DISPLAY */
- "blockdev", /* QEMU_CAPS_BLOCKDEV */
+ "blockdev", /* X_QEMU_CAPS_BLOCKDEV */
/* 315 */
"vfio-ap", /* QEMU_CAPS_DEVICE_VFIO_AP */
static void
virQEMUCapsInitQMPVersionCaps(virQEMUCaps *qemuCaps)
{
- /* While the removal of pre-blockdev code is in progress we always hard-code
- * the support for QEMU_CAPS_BLOCKDEV */
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_BLOCKDEV);
-
/* -enable-fips is deprecated in QEMU 5.2.0, and QEMU
* should be built with gcrypt to achieve FIPS compliance
* automatically / implicitly
/**
* This maps the qemu features to the entries in <features> of the domain
- * capability XML.
+ * capability XML. Use QEMU_CAPS_LAST to always enable a domain feature.
* */
static const struct virQEMUCapsDomainFeatureCapabilityTuple domCapsTuples[] = {
{ VIR_DOMAIN_CAPS_FEATURE_IOTHREADS, QEMU_CAPS_OBJECT_IOTHREAD },
{ VIR_DOMAIN_CAPS_FEATURE_VMCOREINFO, QEMU_CAPS_DEVICE_VMCOREINFO },
{ VIR_DOMAIN_CAPS_FEATURE_GENID, QEMU_CAPS_DEVICE_VMGENID },
- { VIR_DOMAIN_CAPS_FEATURE_BACKING_STORE_INPUT, QEMU_CAPS_BLOCKDEV },
+ { VIR_DOMAIN_CAPS_FEATURE_BACKING_STORE_INPUT, QEMU_CAPS_LAST },
{ VIR_DOMAIN_CAPS_FEATURE_BACKUP, QEMU_CAPS_INCREMENTAL_BACKUP },
};
size_t i;
for (i = 0; i < G_N_ELEMENTS(domCapsTuples); i++) {
- if (virQEMUCapsGet(qemuCaps, domCapsTuples[i].qemucap))
+ if (virQEMUCapsGet(qemuCaps, domCapsTuples[i].qemucap) ||
+ domCapsTuples[i].qemucap == QEMU_CAPS_LAST)
domCaps->features[domCapsTuples[i].domcap] = VIR_TRISTATE_BOOL_YES;
else
domCaps->features[domCapsTuples[i].domcap] = VIR_TRISTATE_BOOL_NO;
X_QEMU_CAPS_USB_STORAGE_WERROR, /* -device usb-storage,werror=..,rerror=.. */
QEMU_CAPS_EGL_HEADLESS, /* -display egl-headless */
QEMU_CAPS_VFIO_PCI_DISPLAY, /* -device vfio-pci.display */
- QEMU_CAPS_BLOCKDEV, /* -blockdev and blockdev-add are supported */
+ X_QEMU_CAPS_BLOCKDEV, /* -blockdev and blockdev-add are supported */
/* 315 */
QEMU_CAPS_DEVICE_VFIO_AP, /* -device vfio-ap */
return -1;
}
- /* The code is being cleaned up to always assume the support for
- * -blockdev thus we must no longer allow users to clear it */
- if (tmp == QEMU_CAPS_BLOCKDEV)
- continue;
-
virQEMUCapsClear(priv->qemuCaps, tmp);
}
}
return -1;
}
- /* The code is being cleaned up to always assume the support for
- * -blockdev thus we must no longer allow users to clear it */
- if (tmp == QEMU_CAPS_BLOCKDEV)
- continue;
-
virQEMUCapsClear(priv->qemuCaps, tmp);
}
}
<flag name='vhost-vsock'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='machine.pseries.cap-htm'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='vhost-vsock'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='vfio-ap'/>
<flag name='zpci'/>
<flag name='memory-backend-memfd'/>
<flag name='mch.extended-tseg-mbytes'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='tpm-emulator'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='machine.pseries.cap-htm'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='vhost-vsock'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='mch.extended-tseg-mbytes'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='memory-backend-file.discard-data'/>
<flag name='screendump_device'/>
<flag name='egl-headless'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='mch.extended-tseg-mbytes'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='tpm-emulator'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='machine.pseries.cap-htm'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='vhost-vsock'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='vhost-vsock'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='vfio-ap'/>
<flag name='zpci'/>
<flag name='memory-backend-memfd'/>
<flag name='mch.extended-tseg-mbytes'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='tpm-emulator'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='vhost-vsock'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='vfio-ap'/>
<flag name='zpci'/>
<flag name='memory-backend-memfd'/>
<flag name='sev-guest'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='mch.extended-tseg-mbytes'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='tpm-emulator'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='machine.pseries.cap-hpt-max-page-size'/>
<flag name='machine.pseries.cap-htm'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='mch.extended-tseg-mbytes'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='tpm-emulator'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='machine.pseries.cap-htm'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='mch.extended-tseg-mbytes'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
<flag name='mch.extended-tseg-mbytes'/>
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
- <flag name='blockdev'/>
<flag name='memory-backend-memfd'/>
<flag name='memory-backend-memfd.hugetlb'/>
<flag name='iothread.poll-max-ns'/>
virQEMUCapsInitQMPBasicArch(priv->qemuCaps);
- virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_VIRTIO_SCSI);
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_USB_STORAGE);
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_CCW);
if (!(info->args.fakeCaps = virQEMUCapsNew()))
abort();
- /* until removal of the flags is completed we force them also in tests */
- virQEMUCapsSet(info->args.fakeCaps, QEMU_CAPS_BLOCKDEV);
-
info->conf = conf;
info->args.newargs = true;