提交 cb1e4ca2 编写于 作者: P Peter Krempa

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.
上级 d39173ff
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册