Message ID | 1500560441-5670-11-git-send-email-pl@kamp.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 07/20/2017 09:20 AM, Peter Lieven wrote: > Signed-off-by: Peter Lieven <pl@kamp.de> > --- > block/qcow2.c | 9 +++++++++ > qapi/block-core.json | 6 +++++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 9eb76df..9310715 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -68,6 +68,9 @@ > # @encrypt: details about encryption parameters; only set if image > # is encrypted (since 2.10) > # > +# @compress: details about parameters for compressed clusters; only set if > +# the compress format header extension is present (since 2.10) Would it be possible/wise to ALWAYS output compression information, even if it is the older style zlib with small window and default level? Made easier if you can represent all tunables of zlib (where you special-case writing the qcow2 header to omit the extension header when the user has requested the defaults). This is a new feature, and unfortunately we've missed soft freeze for 2.10. You'll want to update your series to uniformly state since 2.11.
Am 20.07.2017 um 18:05 schrieb Eric Blake: > On 07/20/2017 09:20 AM, Peter Lieven wrote: >> Signed-off-by: Peter Lieven <pl@kamp.de> >> --- >> block/qcow2.c | 9 +++++++++ >> qapi/block-core.json | 6 +++++- >> 2 files changed, 14 insertions(+), 1 deletion(-) >> >> diff --git a/qapi/block-core.json b/qapi/block-core.json >> index 9eb76df..9310715 100644 >> --- a/qapi/block-core.json >> +++ b/qapi/block-core.json >> @@ -68,6 +68,9 @@ >> # @encrypt: details about encryption parameters; only set if image >> # is encrypted (since 2.10) >> # >> +# @compress: details about parameters for compressed clusters; only set if >> +# the compress format header extension is present (since 2.10) > Would it be possible/wise to ALWAYS output compression information, even > if it is the older style zlib with small window and default level? Made > easier if you can represent all tunables of zlib (where you special-case > writing the qcow2 header to omit the extension header when the user has > requested the defaults). If we would store it in the header it will make the read and write of the header much more complicated if we don't add the window size to the default header (e.g. shrinking the format name to 14 and adding to uint8_t for level and window size) > > This is a new feature, and unfortunately we've missed soft freeze for > 2.10. You'll want to update your series to uniformly state since 2.11. > Okay.
diff --git a/block/qcow2.c b/block/qcow2.c index 0ba5977..59cf3b3 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -3942,6 +3942,15 @@ static ImageInfoSpecific *qcow2_get_specific_info(BlockDriverState *bs) spec_info->u.qcow2.data->encrypt = qencrypt; } + if (s->compress_format != -1) { + Qcow2Compress *qcompress = g_new0(Qcow2Compress, 1); + qcompress->format = s->compress_format; + qcompress->level = s->compress_level; + qcompress->has_level = true; + spec_info->u.qcow2.data->compress = qcompress; + spec_info->u.qcow2.data->has_compress = true; + } + return spec_info; } diff --git a/qapi/block-core.json b/qapi/block-core.json index 9eb76df..9310715 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -68,6 +68,9 @@ # @encrypt: details about encryption parameters; only set if image # is encrypted (since 2.10) # +# @compress: details about parameters for compressed clusters; only set if +# the compress format header extension is present (since 2.10) +# # Since: 1.7 ## { 'struct': 'ImageInfoSpecificQCow2', @@ -76,7 +79,8 @@ '*lazy-refcounts': 'bool', '*corrupt': 'bool', 'refcount-bits': 'int', - '*encrypt': 'ImageInfoSpecificQCow2Encryption' + '*encrypt': 'ImageInfoSpecificQCow2Encryption', + '*compress': 'Qcow2Compress' } } ##
Signed-off-by: Peter Lieven <pl@kamp.de> --- block/qcow2.c | 9 +++++++++ qapi/block-core.json | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-)