diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index c01fea49466e238cb167ff340f7e00017712691c..d02341fe5527e26bfb852e89c65de3b3cb3d4fac 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2057,11 +2057,13 @@ qemuDomainObjPrivateXMLFormatAllowReboot(virBufferPtr buf, } -static void +static int qemuDomainObjPrivateXMLFormatJob(virBufferPtr buf, virDomainObjPtr vm, qemuDomainObjPrivatePtr priv) { + virBuffer attrBuf = VIR_BUFFER_INITIALIZER; + virBuffer childBuf = VIR_BUFFER_INITIALIZER; qemuDomainJob job = priv->job.active; if (!qemuDomainTrackJob(job)) @@ -2069,37 +2071,34 @@ qemuDomainObjPrivateXMLFormatJob(virBufferPtr buf, if (job == QEMU_JOB_NONE && priv->job.asyncJob == QEMU_ASYNC_JOB_NONE) - return; + return 0; + + virBufferSetChildIndent(&childBuf, buf); - virBufferAsprintf(buf, "job.asyncJob)); + if (priv->job.phase) { - virBufferAsprintf(buf, " phase='%s'", + virBufferAsprintf(&attrBuf, " phase='%s'", qemuDomainAsyncJobPhaseToString(priv->job.asyncJob, priv->job.phase)); } - if (priv->job.asyncJob != QEMU_ASYNC_JOB_MIGRATION_OUT) { - virBufferAddLit(buf, "/>\n"); - } else { + + if (priv->job.asyncJob == QEMU_ASYNC_JOB_MIGRATION_OUT) { size_t i; virDomainDiskDefPtr disk; qemuDomainDiskPrivatePtr diskPriv; - virBufferAddLit(buf, ">\n"); - virBufferAdjustIndent(buf, 2); - for (i = 0; i < vm->def->ndisks; i++) { disk = vm->def->disks[i]; diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk); - virBufferAsprintf(buf, "\n", - disk->dst, - diskPriv->migrating ? "yes" : "no"); + virBufferAsprintf(&childBuf, "\n", + disk->dst, diskPriv->migrating ? "yes" : "no"); } - - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); } + + return virXMLFormatElement(buf, "job", &attrBuf, &childBuf); } @@ -2159,7 +2158,8 @@ qemuDomainObjPrivateXMLFormat(virBufferPtr buf, if (priv->lockState) virBufferAsprintf(buf, "%s\n", priv->lockState); - qemuDomainObjPrivateXMLFormatJob(buf, vm, priv); + if (qemuDomainObjPrivateXMLFormatJob(buf, vm, priv) < 0) + return -1; if (priv->fakeReboot) virBufferAddLit(buf, "\n");