[PATCH v2 0/2] qemu: prevent too-deeply nested backing XML

Patch 1 is new in the series. Patch 2 deals (partially) with review feedback on v1. Peter Krempa (2): qemu: snapshot: Always rewrite backingStore data when reusing existing images qemu: snapshot: Prevent too-nested domain XML when doing inactive snapshot src/qemu/qemu_driver.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -- 2.24.1

Don't adopt the backing store data when reusing images provided by the user. This will force a backing chain re-probe as users might have passed in something unexpected in the overlay where our view of the backing chain would not correspond. This is done only for inactive snapshots as there we have way less verification. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_driver.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 0b23c747ce..e5e7b05e93 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14676,7 +14676,8 @@ qemuDomainSnapshotCreateInactiveExternal(virQEMUDriverPtr driver, if (virStorageSourceInitChainElement(newsrc, defdisk->src, false) < 0) goto cleanup; - if (virStorageSourceHasBacking(defdisk->src)) { + if (!reuse && + virStorageSourceHasBacking(defdisk->src)) { defdisk->src->readonly = true; newsrc->backingStore = g_steal_pointer(&defdisk->src); } else { -- 2.24.1

Similarly to 510d154a0b41aa70aadabc0918d16dee22882394 we need to prevent doing too deeply nested backing chains and reject them with a sane error message. Add a loop to go through the snapshots prior to attempting actually creating them to prevent some possible inconsistent scenarios. We don't need to do it when reusing backing chains as we'll be re-detecting the backing chain in that case anyways. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_driver.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e5e7b05e93..8faca96a23 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14630,6 +14630,9 @@ qemuDomainSnapshotCreateInactiveExternal(virQEMUDriverPtr driver, if (!snapdisk->src->format) snapdisk->src->format = VIR_STORAGE_FILE_QCOW2; + if (qemuDomainStorageSourceValidateDepth(defdisk->src, 1, defdisk->dst) < 0) + return -1; + /* creates cmd line args: qemu-img create -f qcow2 -o */ if (!(cmd = virCommandNewArgList(qemuImgPath, "create", -- 2.24.1

On 1/24/20 10:29 AM, Peter Krempa wrote:
Patch 1 is new in the series. Patch 2 deals (partially) with review feedback on v1.
Peter Krempa (2): qemu: snapshot: Always rewrite backingStore data when reusing existing images qemu: snapshot: Prevent too-nested domain XML when doing inactive snapshot
Series: Reviewed-by: Eric Blake <eblake@redhat.com>
src/qemu/qemu_driver.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
-- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
participants (2)
-
Eric Blake
-
Peter Krempa