On 02/20/2018 08:15 AM, Alberto Garcia wrote:
The documentation claims that the cluster descriptor contains the
number of sectors used to store the compressed data, but what it
actually contains is the number of sectors *minus one*.
That can be easily seen in qcow2_decompress_cluster(), that adds one
to the value stored in that field:
nb_csectors = ((cluster_offset >> s->csize_shift) & s->csize_mask) + 1;
Signed-off-by: Alberto Garcia <be...@igalia.com>
---
docs/interop/qcow2.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/docs/interop/qcow2.txt b/docs/interop/qcow2.txt
index d7fdb1fee3..b12972be82 100644
--- a/docs/interop/qcow2.txt
+++ b/docs/interop/qcow2.txt
@@ -429,7 +429,8 @@ Compressed Clusters Descriptor (x = 62 - (cluster_bits -
8)):
Bit 0 - x: Host cluster offset. This is usually _not_ aligned to a
cluster boundary!
- x+1 - 61: Compressed size of the images in sectors of 512 bytes
+ x+1 - 61: Size of the compressed data in sectors of 512 bytes,
+ minus one (that is, a value of n here means n+1 sectors).
Another way to read this field is as the index of the sector that
includes the tail of the compressed data (so a value of 0 means the data
ends in sector[0], occupying 1 sector; a value of 10 means the data ends
in sector[10], occupying 11 sectors...). But your wording is more compact.
Reviewed-by: Eric Blake <ebl...@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org