← Back to team overview

openstack team mailing list archive

Re: Libvirt Snapshots


On Fri, Mar 09, 2012 at 09:21:59AM -0800, Justin Santa Barbara wrote:
> Thanks for the background.  My thoughts:
> * Telling a user to build from source isn't a great option for them -
> it's painful, they don't get updates automatically etc.  Are we going
> to start distributing packages again?
> * I can't imagine any open source project removing functionality like
> the QEMU pass-through - those sort of tactics are confined to
> commercial products that are trying to lock you in, in my experience.
> I'm sure libvirt would never try that, and if they did I'm sure it
> would rapidly be forked.

It is not that we would intentionally remove the functionality. It
is more a problem that libvirt or QEMU changes the way they behave,
and this breaks some assumptions that are being relied upon by the
user of the passthrough. For example, in the past we have changed
the way we configure networks, and changed the way we configure
disks several times. Both those cases would have broken apps if
they had been using the passthrough feature.

I can't guarentee that if you use passthrough for managing snapshots,
that you won't get broken by future libvirt, because libvirt's
support for snapshots is under active development both at the libvirt
and QEMU layers. So an assumption that works today, may not work in
the future.

> * I can imagine that libvirt might switch to the JSON QEMU monitor
> protocol (I don't understand why it isn't already, I'm probably wrong
> here?).  Thankfully the QEMU JSON protocol also has a pass-through,
> but we would ideally switch to the better protocol when/if libvirt
> switches over.

We already use the JSON monitor protocol, if enabled at build time,
but it is configurable by the packager, so you can't neccessarily
predict it.

> * It sounds like this is the exact use-case for which the pass-through
> functionality was designed - libvirt doesn't support what we need (at
> least in commonly-utilized versions), we have some additional
> potential roadmap features that may not be supported, so we _should_
> use the pass-through.

The only safe way to use the passthrough, is to limit it to precise
versions. ie, you would want to default to using the modern libvirt
APIs, and *only* fallback to using pasthrough on older versions. That
should be reasonably safe, since old code doesn't often change itself :-)
So basically you'd be writing two version of the openstack snapshot
code, and hopefully throw away the pasthrough version in a couple of
releases time.

|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|