From ebe0bd5590415981f5b01a5cf4aa702b269566f9 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Mon, 27 Apr 2015 13:57:20 +0200 Subject: [PATCH] qemu: blockCopy: Allow reuse of raw image for shallow block copy The documentation states that for shallow block copy the image has to have the same guest visible content as backing file of the current image if the file is being reused. This condition can be achieved also with a raw file (or a qcow without a backing file) so remove the condition that would disallow it. (This patch additionally fixes crash described in https://bugzilla.redhat.com/show_bug.cgi?id=1215569 ) --- src/qemu/qemu_driver.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 80463f20d0..581211aabf 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -17122,11 +17122,17 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm, if (qemuDomainDetermineDiskChain(driver, vm, disk, false, true) < 0) goto endjob; + /* clear the _SHALLOW flag if there is only one layer */ + if (!disk->src->backingStore) + flags &= ~VIR_DOMAIN_BLOCK_COPY_SHALLOW; + + /* unless the user provides a pre-created file, shallow copy into a raw + * file is not possible */ if ((flags & VIR_DOMAIN_BLOCK_COPY_SHALLOW) && - mirror->format == VIR_STORAGE_FILE_RAW && - disk->src->backingStore->path) { + !(flags & VIR_DOMAIN_BLOCK_COPY_REUSE_EXT) && + mirror->format == VIR_STORAGE_FILE_RAW) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("disk '%s' has backing file, so raw shallow copy " + _("shallow copy of disk '%s' into a raw file " "is not possible"), disk->dst); goto endjob; -- GitLab