From: Peter Krempa <pkrempa(a)redhat.com>
Add a helper that will collect the logic for determinin whether a VM
supports floppy disks.
Use it in the capabilities code and when validating the VM definition at
startup.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_capabilities.c | 3 +--
src/qemu/qemu_domain.c | 12 ++++++++++++
src/qemu/qemu_domain.h | 4 ++++
src/qemu/qemu_process.c | 5 ++---
.../disk-floppy-pseries.ppc64-latest.err | 2 +-
5 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index b600dd38b8..19716497d8 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -6450,8 +6450,7 @@ virQEMUCapsFillDomainDeviceDiskCaps(virQEMUCaps *qemuCaps,
VIR_DOMAIN_DISK_DEVICE_CDROM,
VIR_DOMAIN_DISK_DEVICE_LUN);
- /* PowerPC pseries based VMs do not support floppy device */
- if (!qemuDomainMachineIsPSeries(machine, qemuCaps->arch)) {
+ if (qemuDomainMachineSupportsFloppy(machine, qemuCaps)) {
VIR_DOMAIN_CAPS_ENUM_SET(disk->diskDevice, VIR_DOMAIN_DISK_DEVICE_FLOPPY);
VIR_DOMAIN_CAPS_ENUM_SET(disk->bus, VIR_DOMAIN_DISK_BUS_FDC);
}
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index a7e4198316..7a308d488b 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -11525,3 +11525,15 @@ qemuDomainCheckCPU(virArch arch,
return virCPUCompareUnusable(arch, hypervisorCPU, cpu,
blockers, failIncompatible);
}
+
+
+bool
+qemuDomainMachineSupportsFloppy(const char *machine,
+ virQEMUCaps *qemuCaps)
+{
+ /* PowerPC pseries based VMs do not support floppy device */
+ if (qemuDomainMachineIsPSeries(machine, virQEMUCapsGetArch(qemuCaps)))
+ return false;
+
+ return true;
+}
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index ee6074c9f6..c7287eb669 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -1167,3 +1167,7 @@ qemuDomainCheckCPU(virArch arch,
virCPUDef *cpu,
virQEMUCapsHostCPUType compatCPU,
bool failIncompatible);
+
+bool
+qemuDomainMachineSupportsFloppy(const char *machine,
+ virQEMUCaps *qemuCaps);
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 04e5c005a0..7e444bb8b4 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -5620,11 +5620,10 @@ qemuProcessStartValidateDisks(virDomainObj *vm,
return -1;
}
- /* PowerPC pseries based VMs do not support floppy device */
if (disk->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
- qemuDomainIsPSeries(vm->def)) {
+ !qemuDomainMachineSupportsFloppy(vm->def->os.machine, qemuCaps)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("PowerPC pseries machines do not support floppy
device"));
+ _("this machine type do not support floppy
devices"));
return -1;
}
diff --git a/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.err
b/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.err
index b4b580a684..e00287728d 100644
--- a/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.err
+++ b/tests/qemuxmlconfdata/disk-floppy-pseries.ppc64-latest.err
@@ -1 +1 @@
-unsupported configuration: PowerPC pseries machines do not support floppy device
+unsupported configuration: this machine type do not support floppy devices
--
2.49.0