From 74ee4616dd3159f4456ec9d4fd22b4604394440b Mon Sep 17 00:00:00 2001 Message-Id: <74ee4616dd3159f4456ec9d4fd22b4604394440b@dist-git> From: Peter Krempa Date: Mon, 16 Mar 2020 22:12:17 +0100 Subject: [PATCH] qemuCheckpointDiscardBitmaps: Reopen images for bitmap modifications MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Eric Blake (cherry picked from commit c6d117528cc0ddb325abd67d69b6d4ebc1bfe608) https://bugzilla.redhat.com/show_bug.cgi?id=1799013 Message-Id: Reviewed-by: Ján Tomko --- 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 fe54af74ec..6e3a432022 100644 --- a/src/qemu/qemu_checkpoint.c +++ b/src/qemu/qemu_checkpoint.c @@ -302,6 +302,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); } @@ -314,6 +318,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.25.1