qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC] qcow3 format in libvirt


From: Kevin Wolf
Subject: Re: [Qemu-devel] [RFC] qcow3 format in libvirt
Date: Mon, 4 Mar 2013 15:38:54 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

Am 04.03.2013 um 15:27 hat Daniel P. Berrange geschrieben:
> On Mon, Mar 04, 2013 at 03:04:53PM +0100, Kevin Wolf wrote:
> > Am 04.03.2013 um 14:09 hat Daniel P. Berrange geschrieben:
> > > On Mon, Mar 04, 2013 at 01:58:12PM +0100, Ján Tomko wrote:
> > > > Before posting another version of my patches [1], attempting to add
> > > > support for the new qcow format to libvirt, I would like to know if this
> > > > sounds reasonable:
> > > > 
> > > > A new format named 'qcow3' would be added, along with a <features>
> > > > sub-element for target.
> > > > 
> > > > <volume>
> > > >   <name>qcow3test</name>
> > > >   <source>
> > > >   </source>
> > > >   <capacity unit='GiB'>8</capacity>
> > > >   <target>
> > > >     <path>/var/lib/libvirt/images/qcow3test</path>
> > > >     <format type='qcow3'/>
> > > >     <features>
> > > >       <lazy_refcounts/>
> > > >     </features>
> > > >   </target>
> > > > </volume>
> > > > 
> > > > I think that libvirt shouldn't care if the features are compatible or
> > > > incompatible, as we don't know what features are supported by the
> > > > hypervisor. Would the features be any good as tri-state (on, off, 
> > > > default?).
> > > > 
> > > > While the qcow3 format is handled by the qcow2 driver in QEMU,
> > > > <driver name='qemu' type='qcow2'/> should be enough for domains,
> > > 
> > > We should use qcow3 everywhere IMHO, regardless of whether qcow2
> > > technically works in this context.
> > 
> > I think it makes much more sense to deal with it the way qemu does
> > instead of inventing new names. This has much more of an (incompatible)
> > feature flag than of a different image format. So to fit it in your
> > proposed syntax:
> 
> The issue is that QEMU is not the only thing that implements the qcow
> format. There are a number of other impls out there, and we can't just
> assume that they will all be providing a qcow2 driver that automagically
> opens a qcow3 image format. Just in the same way we didn't assume that
> a 'qcow' (version 1) driver would open a version 2 image.

That's true. Other implementation actually tend to have a 'qcow' driver
that deals with both qcow1 and qcow2. But these two are actually
different enough that calling them two different formats might be
acceptable.

In contrast, version 3 images share _exactly_ the same structure with
version 2 images, the just have additional header fields and support
some new flags in some structures (that were previously reserved).

If you call this a different image format, then scratch that whole
<feature> idea, because then each newly added feature is a new image
format by your standards.

> It so happens that with QEMU if you specify format=qcow2 and give it
> a qcow3 image, QEMU will open it, but libvirt can't assume that, since
> this is a mere implementation detail. Hence libvirt must explicitly
> refer to 'qcow3' in the XML and map it to qcow2 if applicable when
> talking to QEMU.

If you need this information, sure, save it. I'm just requesting that
you don't abuse the format name for it.

> > But I guess you call all VMDKs just "vmdk", despite the fact that they
> > are really just a collection of different subformats. Right?
> 
> Yes, but that is really a bug in our representation of vmdk.

How are you going to fix it? Do you think having ten different format
names all starting with "vmdk" will make tools user friendly?

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]