On 06/06/2014 03:25 AM, Peter Krempa wrote:
On 06/06/14 00:52, Eric Blake wrote:
> The current implementation of 'virsh blockcopy' (virDomainBlockRebase)
> is limited to copying to a local file name. But future patches want
> to extend it to also copy to network disks. This patch converts over
> to a virStorageSourcePtr, although it should have no semantic change
> visible to the user, in anticipation of those future patches being
> able to use more fields for non-file destinations.
>
> - char *mirror;
> - int mirrorFormat; /* virStorageFileFormat */
> + virStorageSourcePtr mirror;
You adjust the type here, but don't adjust the code in
virDomainDiskDefFree ...
> bool mirroring;
>
> struct {
You need to change:
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b8e7c50..827c401 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1203,7 +1203,7 @@ virDomainDiskDefFree(virDomainDiskDefPtr def)
virStorageSourceFree(def->src);
VIR_FREE(def->serial);
VIR_FREE(def->dst);
- VIR_FREE(def->mirror);
+ virStorageSourceFree(def->mirror);
D'oh - I missed one (I guess I had been grep'ing for disk->mirror,
rather than .*->mirror). Thanks for spotting it.
ACK with that addressed,
Findings in 3 and 4 addressed, and I've pushed through this point of the
series.
I realized off-list that active commit has a major difference from
blockcopy: right now, libvirt refuses to do blockcopy on anything but a
transient domain, so there is no impact to a persistent domain
definition. But since I allowed block-commit on a persistent domain, if
the transient definition is updated due to a pivot at the end of a
blockcopy, the persistent definition must also be altered so that the
next boot of the domain will use the right file (on a pivot, the old
active file becomes stale and will no longer contain a consistent view
of guest data). The alteration of the persistent definition is similar
to what must happen when snapshot creation alters a disk source.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org