Am 04.03.2013 um 16:19 hat Daniel P. Berrange geschrieben:
On Mon, Mar 04, 2013 at 04:05:50PM +0100, Kevin Wolf wrote:
> Am 04.03.2013 um 15:46 hat Daniel P. Berrange geschrieben:
> > On Mon, Mar 04, 2013 at 03:38:54PM +0100, Kevin Wolf wrote:
> > > Am 04.03.2013 um 15:27 hat Daniel P. Berrange geschrieben:
> > > > 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.
> >
> > The key distinction is that libvirt XML is recording an generic image
> > format, while the QEMU cli args are referring to a specific driver
> > implementation, which are support multiple formats. Typically these
> > map 1-to-1, but there's no such requirement in general. Hence will
> > refer to 'qcow3' in all its XML descriptions, and map to
'qcow2' when
> > talking to QEMU, or even just to 'qcow' if talking to a different impl
> > which supports all 3 versions in one driver.
>
> I'm not talking about the QEMU cli, but about qcow2 as the format as
> defined in the spec (which just happens to sit in qemu.git, but isn't
> qemu specific at all)
So you're saying that you consider the format name to be "qcow2"
regardless
of whether the version numer field is specified as 2 or 3.
Yes.
So in other words, if an application came along and required libvirt
to
set format=qcow3 on its CLI, we could justifiably refuse to do that in
libvirt claiming this is not in compliance with the spec ?
No, you would just check which features this image uses (which, if I
understood correctly, you need to save anyway), and if a version 3
feature is among it (the basic version 3 could be represented by either
a "feature flags" or "zero clusters" feature, which are what version
3
really means), pass it the 'qcow3' command line option it wants.
Of course, I would be disappointed that the tool thought it had to
invent format names, but it's not really blocking any functionality.
Just the same way it could happen that a tool uses different drivers for
other features that we introduce. For example, imagine that we introduce
a flag that modifies the L2 table structure to allow subclusters - a
change that we've been discussing before and that would have a massive
impact on the implementation, even though it's only a feature flag that
has changed, and not the version number. Using a different driver for
this looks much more likely than a different driver for version 2 and 3,
which was really a quite small step.
So the main problem that I see is the assumption "different version =>
big change, new feature flag => small change" and as a conclusion from
that "different version => possibly new driver, new feature flag =>
definitely only old driver". This isn't true at all.
Kevin