Qemu's bitmap APIs don't reopen the appropriate images read-write for
modification. It's libvirt's duty to reopen them via blockdev-reopen
if we wish to modify the bitmaps.
Use the new helpers to reopen the images for bitmap manipulation.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_checkpoint.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/qemu/qemu_checkpoint.c b/src/qemu/qemu_checkpoint.c
index ea87b09aa0..5890deb471 100644
--- a/src/qemu/qemu_checkpoint.c
+++ b/src/qemu/qemu_checkpoint.c
@@ -300,6 +300,10 @@ qemuCheckpointDiscardBitmaps(virDomainObjPtr vm,
false, false, false) < 0)
goto relabel;
+ if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN) &&
+ qemuBlockReopenReadWrite(vm, src, QEMU_ASYNC_JOB_NONE) < 0)
+ goto relabel;
+
relabelimages = g_slist_prepend(relabelimages, src);
}
@@ -312,6 +316,9 @@ qemuCheckpointDiscardBitmaps(virDomainObjPtr vm,
for (next = relabelimages; next; next = next->next) {
virStorageSourcePtr src = next->data;
+ if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN))
+ ignore_value(qemuBlockReopenReadOnly(vm, src, QEMU_ASYNC_JOB_NONE));
+
ignore_value(qemuDomainStorageSourceAccessAllow(driver, vm, src,
true, false, false));
}
--
2.24.1