We have been always setting the capability on if qemu has QEMU_CAPS_DEVICE. --- src/qemu/qemu_capabilities.c | 19 +++++++------------ src/qemu/qemu_command.c | 39 +++++++-------------------------------- src/qemu/qemu_command.h | 3 +-- src/qemu/qemu_hotplug.c | 2 +- 4 files changed, 16 insertions(+), 47 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 13427ed..1e8450d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4079,8 +4079,7 @@ virQEMUCapsGetDefaultMachine(virQEMUCapsPtr qemuCaps) static int -virQEMUCapsFillDomainLoaderCaps(virQEMUCapsPtr qemuCaps, - virDomainCapsLoaderPtr capsLoader, +virQEMUCapsFillDomainLoaderCaps(virDomainCapsLoaderPtr capsLoader, char **loader, size_t nloader) { @@ -4112,25 +4111,22 @@ virQEMUCapsFillDomainLoaderCaps(virQEMUCapsPtr qemuCaps, VIR_DOMAIN_LOADER_TYPE_PFLASH); - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_READONLY)) - VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->readonly, - VIR_TRISTATE_BOOL_YES, - VIR_TRISTATE_BOOL_NO); + VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->readonly, + VIR_TRISTATE_BOOL_YES, + VIR_TRISTATE_BOOL_NO); return 0; } static int -virQEMUCapsFillDomainOSCaps(virQEMUCapsPtr qemuCaps, - virDomainCapsOSPtr os, +virQEMUCapsFillDomainOSCaps(virDomainCapsOSPtr os, char **loader, size_t nloader) { virDomainCapsLoaderPtr capsLoader = &os->loader; os->supported = true; - if (virQEMUCapsFillDomainLoaderCaps(qemuCaps, capsLoader, - loader, nloader) < 0) + if (virQEMUCapsFillDomainLoaderCaps(capsLoader, loader, nloader) < 0) return -1; return 0; } @@ -4358,8 +4354,7 @@ virQEMUCapsFillDomainCaps(virDomainCapsPtr domCaps, domCaps->maxvcpus = maxvcpus; - if (virQEMUCapsFillDomainOSCaps(qemuCaps, os, - loader, nloader) < 0 || + if (virQEMUCapsFillDomainOSCaps(os, loader, nloader) < 0 || virQEMUCapsFillDomainDeviceDiskCaps(qemuCaps, domCaps->machine, disk) < 0 || virQEMUCapsFillDomainDeviceGraphicsCaps(qemuCaps, graphics) < 0 || diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index acee310..48a6658 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1283,8 +1283,7 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk, disk->device == VIR_DOMAIN_DISK_DEVICE_LUN) && disk->bus != VIR_DOMAIN_DISK_BUS_IDE) virBufferAddLit(&opt, ",boot=on"); - if (disk->src->readonly && - virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_READONLY)) { + if (disk->src->readonly) { if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK) { if (disk->bus == VIR_DOMAIN_DISK_BUS_IDE) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -2064,16 +2063,8 @@ qemuBuildFSStr(virDomainFSDefPtr fs, virBufferAsprintf(&opt, ",id=%s%s", QEMU_FSDEV_HOST_PREFIX, fs->info.alias); virBufferAsprintf(&opt, ",path=%s", fs->src); - if (fs->readonly) { - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_FSDEV_READONLY)) { - virBufferAddLit(&opt, ",readonly"); - } else { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("readonly filesystem is not supported by this " - "QEMU binary")); - goto error; - } - } + if (fs->readonly) + virBufferAddLit(&opt, ",readonly"); if (virBufferCheckError(&opt) < 0) goto error; @@ -4493,8 +4484,7 @@ qemuBuildSCSIiSCSIHostdevDrvStr(virDomainHostdevDefPtr dev) } char * -qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev, - virQEMUCapsPtr qemuCaps) +qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev) { virBuffer buf = VIR_BUFFER_INITIALIZER; char *source = NULL; @@ -4513,16 +4503,8 @@ qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev, virDomainDeviceAddressTypeToString(dev->info->type), dev->info->alias); - if (dev->readonly) { - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_READONLY)) { - virBufferAddLit(&buf, ",readonly=on"); - } else { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("this qemu doesn't support 'readonly' " - "for -drive")); - goto error; - } - } + if (dev->readonly) + virBufferAddLit(&buf, ",readonly=on"); if (virBufferCheckError(&buf) < 0) goto error; @@ -4925,7 +4907,7 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, char *drvstr; virCommandAddArg(cmd, "-drive"); - if (!(drvstr = qemuBuildSCSIHostdevDrvStr(hostdev, qemuCaps))) + if (!(drvstr = qemuBuildSCSIHostdevDrvStr(hostdev))) return -1; virCommandAddArg(cmd, drvstr); VIR_FREE(drvstr); @@ -8660,13 +8642,6 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, unit++; if (loader->readonly) { - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_READONLY)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("this qemu doesn't support passing " - "readonly attribute")); - goto cleanup; - } - virBufferAsprintf(&buf, ",readonly=%s", virTristateSwitchTypeToString(loader->readonly)); } diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index c777701..1c22705 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -161,8 +161,7 @@ char *qemuBuildUSBHostdevDevStr(const virDomainDef *def, virDomainHostdevDefPtr dev, virQEMUCapsPtr qemuCaps); -char *qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev, - virQEMUCapsPtr qemuCaps); +char *qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev); char *qemuBuildSCSIHostdevDevStr(const virDomainDef *def, virDomainHostdevDefPtr dev, diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index fc1bf6e..5f34a76 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1928,7 +1928,7 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn, if (qemuDomainSecretHostdevPrepare(conn, priv, hostdev) < 0) goto cleanup; - if (!(drvstr = qemuBuildSCSIHostdevDrvStr(hostdev, priv->qemuCaps))) + if (!(drvstr = qemuBuildSCSIHostdevDrvStr(hostdev))) goto cleanup; if (!(devstr = qemuBuildSCSIHostdevDevStr(vm->def, hostdev, priv->qemuCaps))) -- 2.7.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list