Patchwork [2/2] Documentation: Update image format information

login
register
mail settings
Submitter Kevin Wolf
Date Nov. 21, 2012, 1:23 p.m.
Message ID <1353504237-5608-3-git-send-email-kwolf@redhat.com>
Download mbox | patch
Permalink /patch/200688/
State New
Headers show

Comments

Kevin Wolf - Nov. 21, 2012, 1:23 p.m.
Document new options, mark QED as deprecated.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 qemu-img.texi |   37 ++++++++++++++++++++++++++++++-------
 1 files changed, 30 insertions(+), 7 deletions(-)
Stefan Hajnoczi - Nov. 21, 2012, 3:14 p.m.
On Wed, Nov 21, 2012 at 02:23:57PM +0100, Kevin Wolf wrote:
>  @item qed
> -Image format with support for backing files and compact image files (when your
> -filesystem or transport medium does not support holes).  Good performance due
> -to less metadata than the more featureful qcow2 format, especially with
> -cache=writethrough or cache=directsync.  Consider using qcow2 which will soon
> -have a similar optimization and is most actively developed.
> +Old QEMU image format. Left for compatibility.
> +
> +For new images, use qcow2 instead. You might want to consider using the
> +@code{lazy_refcounts=on} option to get a more QED-like behaviour.

The first sentence should be kept, it describes the general feature set
and scope of this image format.  I agree that the rest of the paragraph
can be dropped.

You could insert a statement saying that qcow2 is now preferred because
it is actively developed and offers advanced features and performance as
the very first sentence.

Stefan
Kevin Wolf - Nov. 21, 2012, 3:22 p.m.
Am 21.11.2012 16:14, schrieb Stefan Hajnoczi:
> On Wed, Nov 21, 2012 at 02:23:57PM +0100, Kevin Wolf wrote:
>>  @item qed
>> -Image format with support for backing files and compact image files (when your
>> -filesystem or transport medium does not support holes).  Good performance due
>> -to less metadata than the more featureful qcow2 format, especially with
>> -cache=writethrough or cache=directsync.  Consider using qcow2 which will soon
>> -have a similar optimization and is most actively developed.
>> +Old QEMU image format. Left for compatibility.
>> +
>> +For new images, use qcow2 instead. You might want to consider using the
>> +@code{lazy_refcounts=on} option to get a more QED-like behaviour.
> 
> The first sentence should be kept, it describes the general feature set
> and scope of this image format.  I agree that the rest of the paragraph
> can be dropped.
> 
> You could insert a statement saying that qcow2 is now preferred because
> it is actively developed and offers advanced features and performance as
> the very first sentence.

It's the same terse description as for qcow1. If we decided to describe
the format in more detail, we should do so consistently, and probably
also for non-native formats. (But why? The only use case is
compatibility with other/older hypervisors, which is mentioned.)

Kevin
Stefan Hajnoczi - Nov. 22, 2012, 7:37 a.m.
On Wed, Nov 21, 2012 at 04:22:07PM +0100, Kevin Wolf wrote:
> Am 21.11.2012 16:14, schrieb Stefan Hajnoczi:
> > On Wed, Nov 21, 2012 at 02:23:57PM +0100, Kevin Wolf wrote:
> >>  @item qed
> >> -Image format with support for backing files and compact image files (when your
> >> -filesystem or transport medium does not support holes).  Good performance due
> >> -to less metadata than the more featureful qcow2 format, especially with
> >> -cache=writethrough or cache=directsync.  Consider using qcow2 which will soon
> >> -have a similar optimization and is most actively developed.
> >> +Old QEMU image format. Left for compatibility.
> >> +
> >> +For new images, use qcow2 instead. You might want to consider using the
> >> +@code{lazy_refcounts=on} option to get a more QED-like behaviour.
> > 
> > The first sentence should be kept, it describes the general feature set
> > and scope of this image format.  I agree that the rest of the paragraph
> > can be dropped.
> > 
> > You could insert a statement saying that qcow2 is now preferred because
> > it is actively developed and offers advanced features and performance as
> > the very first sentence.
> 
> It's the same terse description as for qcow1. If we decided to describe
> the format in more detail, we should do so consistently, and probably
> also for non-native formats. (But why? The only use case is
> compatibility with other/older hypervisors, which is mentioned.)

Yes, we should have descriptions of other formats too.

Users dealing with existing guests using these formats should still have
access to general information about the formats.  For example, if I'm a
new user and it's my job to work with an existing qcow1 disk image then
it's not very helpful to just see a terse "Use qcow2 instead" message.

It's not good to drop documentation on a feature because it is
deprecated.

Stefan
Kevin Wolf - Nov. 22, 2012, 9:08 a.m.
Am 22.11.2012 08:37, schrieb Stefan Hajnoczi:
> On Wed, Nov 21, 2012 at 04:22:07PM +0100, Kevin Wolf wrote:
>> Am 21.11.2012 16:14, schrieb Stefan Hajnoczi:
>>> On Wed, Nov 21, 2012 at 02:23:57PM +0100, Kevin Wolf wrote:
>>>>  @item qed
>>>> -Image format with support for backing files and compact image files (when your
>>>> -filesystem or transport medium does not support holes).  Good performance due
>>>> -to less metadata than the more featureful qcow2 format, especially with
>>>> -cache=writethrough or cache=directsync.  Consider using qcow2 which will soon
>>>> -have a similar optimization and is most actively developed.
>>>> +Old QEMU image format. Left for compatibility.
>>>> +
>>>> +For new images, use qcow2 instead. You might want to consider using the
>>>> +@code{lazy_refcounts=on} option to get a more QED-like behaviour.
>>>
>>> The first sentence should be kept, it describes the general feature set
>>> and scope of this image format.  I agree that the rest of the paragraph
>>> can be dropped.
>>>
>>> You could insert a statement saying that qcow2 is now preferred because
>>> it is actively developed and offers advanced features and performance as
>>> the very first sentence.
>>
>> It's the same terse description as for qcow1. If we decided to describe
>> the format in more detail, we should do so consistently, and probably
>> also for non-native formats. (But why? The only use case is
>> compatibility with other/older hypervisors, which is mentioned.)
> 
> Yes, we should have descriptions of other formats too.
> 
> Users dealing with existing guests using these formats should still have
> access to general information about the formats.  For example, if I'm a
> new user and it's my job to work with an existing qcow1 disk image then
> it's not very helpful to just see a terse "Use qcow2 instead" message.
>
> It's not good to drop documentation on a feature because it is
> deprecated.

I can see your point, but the whole section starts to become a bit
lengthy then for a man page. Also, I don't think that your qcow1 user
really needs a detailed description - he already has a format and
doesn't have to choose one, so the characteristics aren't that
important. If he considers converting the image, we're back to raw and
qcow2.

Maybe we should keep the current descriptions for raw and qcow2 (as they
are what users really choose between for new images), and extend and
move the documentation of other formats into qemu-doc.texi and mention
them in the man page of qemu-img only as "Also supported for
compatibility with other hypervisors or older QEMU versions: vmdk, vdi,
qed, ... See the QEMU Emulator User Documentation for more information
on these."

Kevin
Stefan Hajnoczi - Nov. 22, 2012, 11:59 a.m.
On Thu, Nov 22, 2012 at 10:08:06AM +0100, Kevin Wolf wrote:
> Am 22.11.2012 08:37, schrieb Stefan Hajnoczi:
> > On Wed, Nov 21, 2012 at 04:22:07PM +0100, Kevin Wolf wrote:
> >> Am 21.11.2012 16:14, schrieb Stefan Hajnoczi:
> >>> On Wed, Nov 21, 2012 at 02:23:57PM +0100, Kevin Wolf wrote:
> >>>>  @item qed
> >>>> -Image format with support for backing files and compact image files (when your
> >>>> -filesystem or transport medium does not support holes).  Good performance due
> >>>> -to less metadata than the more featureful qcow2 format, especially with
> >>>> -cache=writethrough or cache=directsync.  Consider using qcow2 which will soon
> >>>> -have a similar optimization and is most actively developed.
> >>>> +Old QEMU image format. Left for compatibility.
> >>>> +
> >>>> +For new images, use qcow2 instead. You might want to consider using the
> >>>> +@code{lazy_refcounts=on} option to get a more QED-like behaviour.
> >>>
> >>> The first sentence should be kept, it describes the general feature set
> >>> and scope of this image format.  I agree that the rest of the paragraph
> >>> can be dropped.
> >>>
> >>> You could insert a statement saying that qcow2 is now preferred because
> >>> it is actively developed and offers advanced features and performance as
> >>> the very first sentence.
> >>
> >> It's the same terse description as for qcow1. If we decided to describe
> >> the format in more detail, we should do so consistently, and probably
> >> also for non-native formats. (But why? The only use case is
> >> compatibility with other/older hypervisors, which is mentioned.)
> > 
> > Yes, we should have descriptions of other formats too.
> > 
> > Users dealing with existing guests using these formats should still have
> > access to general information about the formats.  For example, if I'm a
> > new user and it's my job to work with an existing qcow1 disk image then
> > it's not very helpful to just see a terse "Use qcow2 instead" message.
> >
> > It's not good to drop documentation on a feature because it is
> > deprecated.
> 
> I can see your point, but the whole section starts to become a bit
> lengthy then for a man page. Also, I don't think that your qcow1 user
> really needs a detailed description - he already has a format and
> doesn't have to choose one, so the characteristics aren't that
> important. If he considers converting the image, we're back to raw and
> qcow2.
> 
> Maybe we should keep the current descriptions for raw and qcow2 (as they
> are what users really choose between for new images), and extend and
> move the documentation of other formats into qemu-doc.texi and mention
> them in the man page of qemu-img only as "Also supported for
> compatibility with other hypervisors or older QEMU versions: vmdk, vdi,
> qed, ... See the QEMU Emulator User Documentation for more information
> on these."

Sounds good.

Stefan

Patch

diff --git a/qemu-img.texi b/qemu-img.texi
index 60b83fc..2fdb3ef 100644
--- a/qemu-img.texi
+++ b/qemu-img.texi
@@ -247,6 +247,13 @@  support of multiple VM snapshots.
 
 Supported options:
 @table @code
+@item compat
+Determines the qcow2 version to use. @code{compat=0.10} uses the traditional
+image format that can be read by any QEMU since 0.10 (this is the default).
+@code{compat=1.1} enables image format extensions that only QEMU 1.1 and
+newer understand. Amongst others, this includes zero clusters, which allow
+efficient copy-on-read for sparse images.
+
 @item backing_file
 File name of a base image (see @option{create} subcommand)
 @item backing_fmt
@@ -267,14 +274,23 @@  Preallocation mode (allowed values: off, metadata). An image with preallocated
 metadata is initially larger but can improve performance when the image needs
 to grow.
 
+@item lazy_refcounts
+If this option is set to @code{on}, reference count updates are postponed with
+the goal of avoiding metadata I/O and improving performance. This is
+particularly interesting with @option{cache=writethrough} which doesn't batch
+metadata updates. The tradeoff is that after a host crash, the reference count
+tables must be rebuilt, i.e. on the next open an (automatic) @code{qemu-img
+check -r all} is required, which may take some time.
+
+This option can only be enabled if @code{compat=1.1} is specified.
+
 @end table
 
 @item qed
-Image format with support for backing files and compact image files (when your
-filesystem or transport medium does not support holes).  Good performance due
-to less metadata than the more featureful qcow2 format, especially with
-cache=writethrough or cache=directsync.  Consider using qcow2 which will soon
-have a similar optimization and is most actively developed.
+Old QEMU image format. Left for compatibility.
+
+For new images, use qcow2 instead. You might want to consider using the
+@code{lazy_refcounts=on} option to get a more QED-like behaviour.
 
 Supported options:
 @table @code
@@ -315,10 +331,17 @@  VMware 3 and 4 compatible image format.
 
 Supported options:
 @table @code
-@item backing_fmt
-Image format of the base image
+@item backing_file
+File name of a base image (see @option{create} subcommand).
 @item compat6
 Create a VMDK version 6 image (instead of version 4)
+@item subformat
+Specifies which VMDK subformat to use. Valid options are
+@code{monolithicSparse} (default),
+@code{monolithicFlat},
+@code{twoGbMaxExtentSparse},
+@code{twoGbMaxExtentFlat} and
+@code{streamOptimized}.
 @end table
 
 @item vpc