diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 20b019ba4a..d88f017457 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -5227,6 +5227,11 @@ virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps) 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); + virQEMUCapsSet(qemuCaps, QEMU_CAPS_BLOCKDEV_HOSTDEV_SCSI); + /* -enable-fips is deprecated in QEMU 5.2.0, and QEMU * should be built with gcrypt to achieve FIPS compliance * automatically / implicitly @@ -5246,17 +5251,11 @@ virQEMUCapsInitQMPVersionCaps(virQEMUCaps *qemuCaps) void virQEMUCapsInitProcessCapsInterlock(virQEMUCaps *qemuCaps) { - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) - virQEMUCapsClear(qemuCaps, QEMU_CAPS_BLOCKDEV_BACKUP); - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV_BACKUP) && virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN) && virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BLOCK_BITMAP_MAPPING)) virQEMUCapsSet(qemuCaps, QEMU_CAPS_INCREMENTAL_BACKUP); - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) - virQEMUCapsSet(qemuCaps, QEMU_CAPS_BLOCKDEV_HOSTDEV_SCSI); - /* The -compat qemu command line argument is implemented using a newer * method which doesn't show up in query-command-line-options. As we'll use * it only for development and testing purposes we can base the capability @@ -5301,13 +5300,6 @@ virQEMUCapsInitProcessCaps(virQEMUCaps *qemuCaps) if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_UNAVAILABLE_FEATURES)) virQEMUCapsSet(qemuCaps, QEMU_CAPS_CANONICAL_CPU_FEATURES); - /* To avoid guest ABI regression, blockdev shall be enabled only when - * we are able to pass the custom 'device_id' for SCSI disks and cdroms. */ - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCK_FILE_AUTO_READONLY_DYNAMIC) && - virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_DISK_DEVICE_ID) && - virQEMUCapsGet(qemuCaps, QEMU_CAPS_SAVEVM_MONITOR_NODES)) - virQEMUCapsSet(qemuCaps, QEMU_CAPS_BLOCKDEV); - /* We can't probe "esp" as a type via virQEMUCapsObjectTypes * array as it is only usable when builtin to the machine type */ diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 9c773b06b0..5f69c57fd4 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -5623,6 +5623,12 @@ qemuProcessStartUpdateCustomCaps(virDomainObj *vm) 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 || + tmp == QEMU_CAPS_BLOCKDEV_HOSTDEV_SCSI) + continue; + virQEMUCapsClear(priv->qemuCaps, tmp); } } @@ -5647,6 +5653,12 @@ qemuProcessStartUpdateCustomCaps(virDomainObj *vm) 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 || + tmp == QEMU_CAPS_BLOCKDEV_HOSTDEV_SCSI) + continue; + virQEMUCapsClear(priv->qemuCaps, tmp); } } diff --git a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml index e21ba9372b..8ea7ad5714 100644 --- a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml @@ -141,7 +141,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml index 8cba4628ee..4a165e5c6b 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml @@ -111,6 +111,7 @@ + @@ -139,11 +140,13 @@ + +