On 06/06/2014 05:51 AM, Peter Krempa wrote:
On 06/06/14 00:52, Eric Blake wrote:
> Now that qemu 2.0 allows commit of the active layer, people are
> attempting to use virsh blockcommit and getting into a stuck
> state, because libvirt is unprepared to handle the two-phase
> commit required by qemu.
>
> This patch adds a flag to the libvirt API that a user MUST
> supply in order to acknowledge that they will be using two-phase
> semantics. It might be possible to have a mode where if the
> flag is omitted, we automatically do the case 2 semantics on
> the user's behalf; but before that happens, I must do additional
> patches to track the fact that we are doing an active commit
> in the domain XML. Later patches will add support of the flag,
> and once 2-phase semantics are working, we can then decide
> whether to relax things to allow an omitted flag to cause an
> automatic pivot.
>
> + /* XXX Should we auto-pivot when COMMIT_ACTIVE is not
specified? */
I think we should do it in the future and possibly document the expected
behavior.
> + if (!(flags & VIR_DOMAIN_BLOCK_COMMIT_ACTIVE)) {
> + virReportError(VIR_ERR_INVALID_ARG,
> + _("commit of '%s' active layer requires
active flag"),
> + disk->dst);
> + goto endjob;
> + }
> }
>
> if (!topSource->backingStore) {
ACK, adding the docs for the auto-pivot commit if you don't specify any
flag can be postponed.
Agreed - we can document the new semantics once they are implemented.
I've pushed this patch now to reserve the bit, even though I still need
to post a v3 of the rest of the series with changes such as ensuring the
persistent definition is updated appropriately.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org