From: Daniel Henrique Barboza Date: Mon, 9 Dec 2019 23:15:17 +0000 (-0300) Subject: qemu: command: move qemuBuildChrChardevStr caps validation to qemu_domain X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=8ed79ecc8849d2383a8230e748426ba5a503d0c3;p=libvirt.git qemu: command: move qemuBuildChrChardevStr caps validation to qemu_domain Move QEMU caps validation of QEMU_CAPS_CHARDEV_FILE_APPEND and QEMU_CAPS_CHARDEV_LOGFILE to qemuDomainChrSourceDefValidate(). Reviewed-by: Cole Robinson Signed-off-by: Daniel Henrique Barboza --- diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 74e4111f8c..98cc05480f 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5141,12 +5141,6 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, case VIR_DOMAIN_CHR_TYPE_FILE: virBufferAsprintf(&buf, "file,id=%s", charAlias); - if (dev->data.file.append != VIR_TRISTATE_SWITCH_ABSENT && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FILE_APPEND)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("append not supported in this QEMU binary")); - return NULL; - } if (qemuBuildChrChardevFileStr(flags & QEMU_BUILD_CHARDEV_FILE_LOGD ? logManager : NULL, cmd, def, &buf, @@ -5282,11 +5276,6 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, } if (dev->logfile) { - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_LOGFILE)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("logfile not supported in this QEMU binary")); - return NULL; - } if (qemuBuildChrChardevFileStr(logManager, cmd, def, &buf, "logfile", dev->logfile, "logappend", dev->logappend) < 0) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 5bd5502c36..8ba724841d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5592,7 +5592,8 @@ qemuDomainChrSourceReconnectDefValidate(const virDomainChrSourceReconnectDef *de static int -qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def) +qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def, + virQEMUCapsPtr qemuCaps) { switch ((virDomainChrType)def->type) { case VIR_DOMAIN_CHR_TYPE_TCP: @@ -5605,11 +5606,19 @@ qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def) return -1; break; + case VIR_DOMAIN_CHR_TYPE_FILE: + if (def->data.file.append != VIR_TRISTATE_SWITCH_ABSENT && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FILE_APPEND)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("append not supported in this QEMU binary")); + return -1; + } + break; + case VIR_DOMAIN_CHR_TYPE_NULL: case VIR_DOMAIN_CHR_TYPE_VC: case VIR_DOMAIN_CHR_TYPE_PTY: case VIR_DOMAIN_CHR_TYPE_DEV: - case VIR_DOMAIN_CHR_TYPE_FILE: case VIR_DOMAIN_CHR_TYPE_PIPE: case VIR_DOMAIN_CHR_TYPE_STDIO: case VIR_DOMAIN_CHR_TYPE_UDP: @@ -5620,6 +5629,14 @@ qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def) break; } + if (def->logfile) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_LOGFILE)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("logfile not supported in this QEMU binary")); + return -1; + } + } + return 0; } @@ -5759,9 +5776,10 @@ qemuDomainChrTargetDefValidate(const virDomainChrDef *chr) static int qemuDomainChrDefValidate(const virDomainChrDef *dev, - const virDomainDef *def) + const virDomainDef *def, + virQEMUCapsPtr qemuCaps) { - if (qemuDomainChrSourceDefValidate(dev->source) < 0) + if (qemuDomainChrSourceDefValidate(dev->source, qemuCaps) < 0) return -1; if (qemuDomainChrTargetDefValidate(dev) < 0) @@ -5817,10 +5835,11 @@ qemuDomainChrDefValidate(const virDomainChrDef *dev, static int -qemuDomainSmartcardDefValidate(const virDomainSmartcardDef *def) +qemuDomainSmartcardDefValidate(const virDomainSmartcardDef *def, + virQEMUCapsPtr qemuCaps) { if (def->type == VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH && - qemuDomainChrSourceDefValidate(def->data.passthru) < 0) + qemuDomainChrSourceDefValidate(def->data.passthru, qemuCaps) < 0) return -1; return 0; @@ -5832,7 +5851,7 @@ qemuDomainRNGDefValidate(const virDomainRNGDef *def, virQEMUCapsPtr qemuCaps G_GNUC_UNUSED) { if (def->backend == VIR_DOMAIN_RNG_BACKEND_EGD && - qemuDomainChrSourceDefValidate(def->source.chardev) < 0) + qemuDomainChrSourceDefValidate(def->source.chardev, qemuCaps) < 0) return -1; return 0; @@ -5840,9 +5859,10 @@ qemuDomainRNGDefValidate(const virDomainRNGDef *def, static int -qemuDomainRedirdevDefValidate(const virDomainRedirdevDef *def) +qemuDomainRedirdevDefValidate(const virDomainRedirdevDef *def, + virQEMUCapsPtr qemuCaps) { - if (qemuDomainChrSourceDefValidate(def->source) < 0) + if (qemuDomainChrSourceDefValidate(def->source, qemuCaps) < 0) return -1; return 0; @@ -7762,11 +7782,11 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev, break; case VIR_DOMAIN_DEVICE_CHR: - ret = qemuDomainChrDefValidate(dev->data.chr, def); + ret = qemuDomainChrDefValidate(dev->data.chr, def, qemuCaps); break; case VIR_DOMAIN_DEVICE_SMARTCARD: - ret = qemuDomainSmartcardDefValidate(dev->data.smartcard); + ret = qemuDomainSmartcardDefValidate(dev->data.smartcard, qemuCaps); break; case VIR_DOMAIN_DEVICE_RNG: @@ -7774,7 +7794,7 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev, break; case VIR_DOMAIN_DEVICE_REDIRDEV: - ret = qemuDomainRedirdevDefValidate(dev->data.redirdev); + ret = qemuDomainRedirdevDefValidate(dev->data.redirdev, qemuCaps); break; case VIR_DOMAIN_DEVICE_WATCHDOG: