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

qemu: snapshot: Properly handle image locking

Images that became the backing chain of the current image due to the
snapshot need to be unlocked in the lock manager. Also if qemu was
paused during the snapshot the current top level images need to be
released until qemu is resumed so that they can be acquired properly.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1191901
上级 cbb4d229
......@@ -14486,6 +14486,23 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver,
virStorageFileUnlink(diskdata[i].src) < 0)
VIR_WARN("Unable to remove just-created %s", diskdata[i].src->path);
}
} else {
/* on successful snapshot we need to remove locks from the now-old
* disks and if the VM is paused release locks on the images since qemu
* stopped using them*/
bool paused = virDomainObjGetState(vm, NULL) != VIR_DOMAIN_RUNNING;
for (i = 0; i < snap->def->ndisks; i++) {
if (!diskdata[i].disk)
continue;
if (paused)
virDomainLockImageDetach(driver->lockManager, vm,
diskdata[i].disk->src);
virDomainLockImageDetach(driver->lockManager, vm,
diskdata[i].disk->src->backingStore);
}
}
if (ret == 0 || !actions) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册