qemu: Assume QEMU_CAPS_DUMP_COMPLETED

Introduced in QEMU's commit of v2.6.0-rc0~74^2~6 the
DUMP_COMPLETED event is always available for all QEMU versions we
support (4.2.0, currently). Therefore, we can assume the
capability is always set and thus doesn't need to be checked for.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2022-11-07 14:43:02 +01:00
parent 5724035ed5
commit ac02c09dd8

View File

@ -3033,28 +3033,21 @@ qemuDumpToFd(virQEMUDriver *driver,
const char *dumpformat) const char *dumpformat)
{ {
qemuDomainObjPrivate *priv = vm->privateData; qemuDomainObjPrivate *priv = vm->privateData;
bool detach = false; int rc = -1;
int ret = -1;
detach = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DUMP_COMPLETED);
if (qemuSecuritySetImageFDLabel(driver->securityManager, vm->def, fd) < 0) if (qemuSecuritySetImageFDLabel(driver->securityManager, vm->def, fd) < 0)
return -1; return -1;
if (detach) { qemuDomainJobSetStatsType(vm->job->current,
qemuDomainJobSetStatsType(vm->job->current, QEMU_DOMAIN_JOB_STATS_TYPE_MEMDUMP);
QEMU_DOMAIN_JOB_STATS_TYPE_MEMDUMP);
} else {
g_clear_pointer(&vm->job->current, virDomainJobDataFree);
}
if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) < 0) if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) < 0)
return -1; return -1;
if (dumpformat) { if (dumpformat) {
ret = qemuMonitorGetDumpGuestMemoryCapability(priv->mon, dumpformat); rc = qemuMonitorGetDumpGuestMemoryCapability(priv->mon, dumpformat);
if (ret <= 0) { if (rc <= 0) {
virReportError(VIR_ERR_INVALID_ARG, virReportError(VIR_ERR_INVALID_ARG,
_("unsupported dumpformat '%s' " _("unsupported dumpformat '%s' "
"for this QEMU binary"), "for this QEMU binary"),
@ -3064,16 +3057,13 @@ qemuDumpToFd(virQEMUDriver *driver,
} }
} }
ret = qemuMonitorDumpToFd(priv->mon, fd, dumpformat, detach); rc = qemuMonitorDumpToFd(priv->mon, fd, dumpformat, true);
qemuDomainObjExitMonitor(vm); qemuDomainObjExitMonitor(vm);
if (ret < 0) if (rc < 0)
return -1; return -1;
if (detach) return qemuDumpWaitForCompletion(vm);
ret = qemuDumpWaitForCompletion(vm);
return ret;
} }