diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b93fd8310f..edb128c881 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4577,6 +4577,21 @@ virQEMUCapsInitQMPVersionCaps(virQEMUCapsPtr qemuCaps) } +/** + * virQEMUCapsInitProcessCapsInterlock: + * @qemuCaps: QEMU capabilities + * + * A capability which requires a different capability being present in order + * for libvirt to be able to drive it properly should be processed here. + */ +void +virQEMUCapsInitProcessCapsInterlock(virQEMUCapsPtr qemuCaps) +{ + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) + virQEMUCapsClear(qemuCaps, QEMU_CAPS_INCREMENTAL_BACKUP); +} + + /** * virQEMUCapsInitProcessCaps: * @qemuCaps: QEMU capabilities @@ -4627,6 +4642,8 @@ virQEMUCapsInitProcessCaps(virQEMUCapsPtr qemuCaps) virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_DISK_DEVICE_ID) && virQEMUCapsGet(qemuCaps, QEMU_CAPS_SAVEVM_MONITOR_NODES)) virQEMUCapsSet(qemuCaps, QEMU_CAPS_BLOCKDEV); + + virQEMUCapsInitProcessCapsInterlock(qemuCaps); } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 3fd8bebe79..4d7d836e8c 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -555,6 +555,8 @@ void virQEMUCapsClear(virQEMUCapsPtr qemuCaps, bool virQEMUCapsGet(virQEMUCapsPtr qemuCaps, virQEMUCapsFlags flag); +void virQEMUCapsInitProcessCapsInterlock(virQEMUCapsPtr qemuCaps); + bool virQEMUCapsHasPCIMultiBus(virQEMUCapsPtr qemuCaps, const virDomainDef *def);