From: Kevin Wolf <kwolf@redhat.com>
To: Peter Lieven <pl@kamp.de>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org, lersek@redhat.com,
den@openvz.org, mreitz@redhat.com, eblake@redhat.com,
berrange@redhat.com
Subject: Re: [Qemu-devel] [PATCH V5 01/10] specs/qcow2: add compress format extension
Date: Mon, 11 Sep 2017 16:22:49 +0200 [thread overview]
Message-ID: <20170911142249.GB6951@localhost.localdomain> (raw)
In-Reply-To: <1500993699-19299-2-git-send-email-pl@kamp.de>
Am 25.07.2017 um 16:41 hat Peter Lieven geschrieben:
> Signed-off-by: Peter Lieven <pl@kamp.de>
> ---
> docs/interop/qcow2.txt | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-
> roms/ipxe | 2 +-
> 2 files changed, 51 insertions(+), 2 deletions(-)
>
> diff --git a/docs/interop/qcow2.txt b/docs/interop/qcow2.txt
> index d7fdb1f..d0d2a8f 100644
> --- a/docs/interop/qcow2.txt
> +++ b/docs/interop/qcow2.txt
> @@ -86,7 +86,12 @@ in the description of a field.
> be written to (unless for regaining
> consistency).
>
> - Bits 2-63: Reserved (set to 0)
> + Bit 2: Compress format bit. If and only if this bit
> + is set then the compress format extension
> + MUST be present and MUST be parsed and checked
> + for compatibility.
> +
> + Bits 3-63: Reserved (set to 0)
>
> 80 - 87: compatible_features
> Bitmask of compatible features. An implementation can
> @@ -137,6 +142,7 @@ be stored. Each extension has a structure like the following:
> 0x6803f857 - Feature name table
> 0x23852875 - Bitmaps extension
> 0x0537be77 - Full disk encryption header pointer
> + 0xC03183A3 - Compress format extension
> other - Unknown header extension, can be safely
> ignored
>
> @@ -311,6 +317,49 @@ The algorithms used for encryption vary depending on the method
> in the LUKS header, with the physical disk sector as the
> input tweak.
>
> +
> +== Compress format extension ==
> +
> +The compress format extension is an optional header extension. It provides
> +the ability to specify the compress algorithm and compress parameters
> +that are used for compressed clusters. This new header MUST be present if
> +the incompatible-feature bit "compress format bit" is set and MUST be absent
> +otherwise.
> +
> +The fields of the compress format extension are:
> +
> + Byte 0 - 13: compress_format_name (padded with zeros, but not
> + necessarily null terminated if it has full length).
> + Valid compression format names currently are:
> +
> + deflate: Standard zlib deflate compression without
> + compression header
> +
> + 14: compress_level (uint8_t)
> +
> + 0 = default compress level (valid for all formats, default)
> +
> + Additional valid compression levels for deflate compression:
> +
> + All values between 1 and 9. 1 gives best speed, 9 gives best
> + compression. The default compression level is defined by zlib
> + and currently defaults to 6.
> +
> + 15: compress_window_size (uint8_t)
> +
> + Window or dictionary size used by the compression format.
> + Currently only used by the deflate compression algorithm.
> +
> + Valid window sizes for deflate compression range from 8 to
> + 15 inclusively.
So what is the plan with respect to adding new compression algorithms?
If I understand correctly, we'll use the same extension type
(0xC03183A3) and a different compress_format_name. However, the other
algorithm will likely have different options and also a different number
of options. Will the meaning of bytes 14-end then depend on the specific
algorithm?
Part of why I'm asking this is because I wonder why compress_format_name
is 14 characters. It looks to me as if that is intended to make the
header a round 16 bytes for the deflate algorithm. But unless we say
"16 bits ought to be enough for every algorithm", this is just
optimising a special case. (Or actually not optimising, but just moving
the padding from the end of the header extension to padding inside the
compress_format_name field.)
Wouldn't 8 bytes still be plenty of space for a format name, and look
more natural? Then any format that requires options would have a little
more space without immediately going to a 24 byte header extension.
Kevin
next prev parent reply other threads:[~2017-09-11 14:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-25 14:41 [Qemu-devel] [PATCH V5 00/10] add Qcow2 compress format extension Peter Lieven
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 01/10] specs/qcow2: add " Peter Lieven
2017-07-25 15:03 ` Eric Blake
2017-07-25 20:29 ` Peter Lieven
2017-07-25 21:01 ` Eric Blake
2017-09-11 14:22 ` Kevin Wolf [this message]
2017-09-18 10:09 ` Peter Lieven
2017-09-18 10:50 ` Kevin Wolf
2017-12-13 16:43 ` Peter Lieven
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 02/10] qapi/block-core: add Qcow2Compress parameters Peter Lieven
2017-07-25 21:21 ` Eric Blake
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 03/10] block/qcow2: parse compress create options Peter Lieven
2017-07-25 21:26 ` Eric Blake
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 04/10] qemu-img: add documentation for compress settings Peter Lieven
2017-07-25 21:34 ` Eric Blake
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 05/10] block/qcow2: read and write the compress format extension Peter Lieven
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 06/10] block/qcow2: simplify ret usage in qcow2_create Peter Lieven
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 07/10] block/qcow2: optimize qcow2_co_pwritev_compressed Peter Lieven
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 08/10] block/qcow2: start using the compress format extension Peter Lieven
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 09/10] block/qcow2: add lzo compress format Peter Lieven
2017-07-25 21:41 ` Eric Blake
2017-07-25 14:41 ` [Qemu-devel] [PATCH V5 10/10] block/qcow2: add compress info to image specific info Peter Lieven
2017-07-25 21:55 ` Eric Blake
2017-07-26 9:05 ` Peter Lieven
2017-08-03 18:59 ` Peter Lieven
2017-09-11 14:08 ` Kevin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170911142249.GB6951@localhost.localdomain \
--to=kwolf@redhat.com \
--cc=berrange@redhat.com \
--cc=den@openvz.org \
--cc=eblake@redhat.com \
--cc=lersek@redhat.com \
--cc=mreitz@redhat.com \
--cc=pl@kamp.de \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.