[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH V5 01/10] specs/qcow2: add compress format exten
Re: [Qemu-block] [PATCH V5 01/10] specs/qcow2: add compress format extension
Tue, 25 Jul 2017 22:29:25 +0200
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1
Am 25.07.2017 um 17:03 schrieb Eric Blake:
> On 07/25/2017 09:41 AM, Peter Lieven wrote:
>> Signed-off-by: Peter Lieven <address@hidden>
>> docs/interop/qcow2.txt | 51
>> roms/ipxe | 2 +-
>> 2 files changed, 51 insertions(+), 2 deletions(-)
>> +== Compress format extension ==
>> +The compress format extension is an optional header extension. It provides
>> +the ability to specify the compress algorithm and compress parameters
> s/the compress algorithm/the compression algorithm/
>> +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
>> +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
> Why did you name it "deflate" instead of "zlib" again?
zlib provides raw deflate encoding and gzip encoding both with and without
We use raw deflate encoding without header in QEMU. And the name of the
algorithm is deflate.
I found it more appropriate than zlib.
>> + 14: compress_level (uint8_t)
>> + 0 = default compress level (valid for all formats,
>> + Additional valid compression levels for deflate
>> + All values between 1 and 9. 1 gives best speed, 9 gives
>> + compression. The default compression level is defined by
>> + 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.
> What must this be set to for other algorithms? I guess we get to that
> in later patches.
Its only used by the deflate algorithm. At this point we only have that
lzo has no such encoding. If we add e.g. lzma it has a dictionary size which is
a power of two (typcial value would be 2^20).
>> + Valid window sizes for deflate compression range from 8
>> + 15 inclusively.
>> +Note: Omitting the incompatible "Compress format bit" results in the usage
>> +of deflate compression with default compression level and a window size of
>> +(which was default before QEMU 2.11). If exactly these parameters are
>> +it is free to the implementation to omit the "Compress format bit" and the
> s/it is free to the implementation to omit/the implementation may omit/
>> +compress format extension when updating the QCOW2 header.
>> == Host cluster management ==
>> qcow2 manages the allocation of host clusters by maintaining a reference
>> diff --git a/roms/ipxe b/roms/ipxe
>> index 0600d3a..b991c67 160000
>> --- a/roms/ipxe
>> +++ b/roms/ipxe
>> @@ -1 +1 @@
>> -Subproject commit 0600d3ae94f93efd10fc6b3c7420a9557a3a1670
>> +Subproject commit b991c67c1d91574ef22336cc3a5944d1e63230c9
Yes, oops. But I guess I have to respin anyway ;-)
Can you also have a look at the remainder of the series?
- [Qemu-block] [PATCH V5 00/10] add Qcow2 compress format extension, Peter Lieven, 2017/07/25
- [Qemu-block] [PATCH V5 10/10] block/qcow2: add compress info to image specific info, Peter Lieven, 2017/07/25
- [Qemu-block] [PATCH V5 03/10] block/qcow2: parse compress create options, Peter Lieven, 2017/07/25
- [Qemu-block] [PATCH V5 06/10] block/qcow2: simplify ret usage in qcow2_create, Peter Lieven, 2017/07/25
- [Qemu-block] [PATCH V5 09/10] block/qcow2: add lzo compress format, Peter Lieven, 2017/07/25
- [Qemu-block] [PATCH V5 07/10] block/qcow2: optimize qcow2_co_pwritev_compressed, Peter Lieven, 2017/07/25