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 @@
+
+