mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-13 08:58:33 +03:00
qemu: driver: Save status XML when starting a block job
Few jobs (which don't) use the 'mirror' element did not save the status XML. It will be helpful to do so once we start tracking jobs fully.
This commit is contained in:
parent
d39173ff7a
commit
cb1e4ca203
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user