On 08/26/2014 09:46 AM, Peter Krempa wrote:
On 08/26/14 13:21, Eric Blake wrote:
> The hard part of managing the disk copy is already coded; all
> this had to do was convert the XML and virTypedParameters into
> the internal representation.
>
> With this patch, all blockcopy operations that used the old
> API should also work via the new API. Additional extensions,
> such as supporting the granularity tunable or a network rather
> than file destination, will be added as later patches.
>
> + ret = qemuDomainBlockCopyCommon(&vm, dom->conn, disk,
dest,
> + bandwidth, flags);
I don't think you need to do the dance with passing vm as an pointer and
having it returned. Insted you can unlock/free it in
qemuDomainBlockCopyCommon.
This will also clean the messy part in 5/8.
But it was the fact that there was transfer semantics that confused me.
qemuDomainBlockCopyCommon cannot return early if it MUST free vm on all
exit paths, and I found it easier to reason about the code if the
function that allocated vm also freed it. I'll think about whether to
change anything for v3.
> +
> + cleanup:
> + virStorageSourceFree(dest);
> + if (vm)
> + virObjectUnlock(vm);
> + return ret;
> +}
> +
> +
> static int
>
ACK
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org