diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fd4075814a5c8ddd62c420c22511e483158a9c44..4ec05a75e85111fad0c29b2c73fda17e093bfa3e 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -16483,6 +16483,7 @@ qemuDomainBlockPullCommon(virQEMUDriverPtr driver, unsigned int flags) { qemuDomainObjPrivatePtr priv = vm->privateData; + virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); char *device = NULL; virDomainDiskDefPtr disk; virStorageSourcePtr baseSource = NULL; @@ -16574,10 +16575,15 @@ qemuDomainBlockPullCommon(virQEMUDriverPtr driver, QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob = true; + if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0) + VIR_WARN("Unable to save status on vm %s after state change", + vm->def->name); + endjob: qemuDomainObjEndJob(driver, vm); cleanup: + virObjectUnref(cfg); VIR_FREE(basePath); VIR_FREE(backingPath); VIR_FREE(device); @@ -17305,6 +17311,7 @@ qemuDomainBlockCommit(virDomainPtr dom, unsigned int flags) { virQEMUDriverPtr driver = dom->conn->privateData; + virQEMUDriverConfigPtr cfg = NULL; qemuDomainObjPrivatePtr priv; virDomainObjPtr vm = NULL; char *device = NULL; @@ -17331,6 +17338,7 @@ qemuDomainBlockCommit(virDomainPtr dom, if (!(vm = qemuDomObjFromDomain(dom))) goto cleanup; priv = vm->privateData; + cfg = virQEMUDriverGetConfig(driver); if (virDomainBlockCommitEnsureACL(dom->conn, vm->def) < 0) goto cleanup; @@ -17497,24 +17505,18 @@ qemuDomainBlockCommit(virDomainPtr dom, goto endjob; } - if (ret == 0) + if (ret == 0) { QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob = true; - - if (mirror) { - if (ret == 0) { - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); - - mirror = NULL; - if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0) - VIR_WARN("Unable to save status on vm %s after block job", - vm->def->name); - virObjectUnref(cfg); - } else { - disk->mirror = NULL; - disk->mirrorJob = VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN; - } + mirror = NULL; + } else { + disk->mirror = NULL; + disk->mirrorJob = VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN; } + if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0) + VIR_WARN("Unable to save status on vm %s after block job", + vm->def->name); + endjob: if (ret < 0 && clean_access) { virErrorPtr orig_err = virSaveLastError(); @@ -17536,6 +17538,7 @@ qemuDomainBlockCommit(virDomainPtr dom, VIR_FREE(basePath); VIR_FREE(backingPath); VIR_FREE(device); + virObjectUnref(cfg); virDomainObjEndAPI(&vm); return ret; }