On 03/23/2012 06:48 AM, Paolo Bonzini wrote:
Il 23/03/2012 05:17, Eric Blake ha scritto:
> I was originally going to send this as two rounds, one for
> the XML additions of adding mirrors, and one for the flag
> addition to virDomainSnapshotDelete for mapping to drive-reopen;
> but it turned out that testing is easier if I finish the series.
>
> I will probably push rounds 1-3 tomorrow, since they have been
ACK'd
> (well, round 3 is still awaiting review), and since qemu has committed
> to the 'transaction' monitor command for qemu 1.1.
This part is still true, once I get round 3 reviewed.
>
> For reference, it is likely that RHEL 6.3 will not wait for qemu 1.1,
> but will instead provide RHEL-specific monitor commands named
> __com.redhat_drive-mirror and __com.redhat_drive-reopen; I have
> hopefully structured things well enough that it will be a couple
> lines of patching to qemu_monitor_json.c to recognize that alternate
> command name.
NACK.
RHEL can have all the hacks you want, but upstream oVirt is just another
client of libvirt and QEMU and things should be done properly there
using a new API based on block_stream. Such a new API would also be
extensible in the future to non-shared-storage migration with NBD +
qemu-nbd.
I spoke more with Paolo off-line; the NACK is a valid complaint that we
really don't want to commit to the hard-to-use API of round 4 (XML
changes) or round 5 (snapshot delete flags) this close to the release of
libvirt 0.9.11. Paolo is also complaining that my round 4/5 patches
provide snapshot mirroring, but that snapshot mirroring is not as nice
as streaming mirroring (that is, with snapshot mirroring, the backing
chain gets longer and you have to clean it up after the fact; with
streaming mirroring, the mirror has the same backing chain length as the
original).
My idea now is to work with Paolo at understanding how the same qemu
'transaction' and 'drive-reopen' commands can do both snapshot mirroring
and streaming mirroring, then I hope to have a counter-proposal RFC
posted by Monday, with an implementation sometime next week, that
exposes streaming mirroring via virDomainBlockRebase.
Then, because the idea of snapshot mirroring has been controversial, we
do _not_ want either solution in next week's 0.9.11 release, which gives
us a week or so to compare the two proposed implementations; hopefully
streaming mirroring really does look better, and we can commit to either
streaming mirroring or snapshot mirroring (and hopefully not both) in
time for libvirt 0.9.12 at the end-of-April release.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org