The specs for the host cluster offset of a compressed cluster were not clear that the offset is in terms of sectors, and requires a shift by 9 to be a byte offset. Add some more text to make the interpretation obvious.
CC: [email protected] Signed-off-by: Eric Blake <[email protected]> --- docs/specs/qcow2.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/specs/qcow2.txt b/docs/specs/qcow2.txt index 80cdfd0..7049415 100644 --- a/docs/specs/qcow2.txt +++ b/docs/specs/qcow2.txt @@ -323,11 +323,16 @@ Standard Cluster Descriptor: Compressed Clusters Descriptor (x = 62 - (cluster_bits - 8)): - Bit 0 - x: Host cluster offset. This is usually _not_ aligned to a - cluster boundary! + Bit 0 - x: Bits 9-(x+9) of 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 +The bits of the host cluster offset not specified in the cluster descriptor +are 0 (bits 0-8 are obvious because a 512-byte sector is the smallest +addressable unit, while bits 56-63 implies that a qcow2 file cannot exceed +2^56 bytes in size). + If a cluster is unallocated, read requests shall read the data from the backing file (except if bit 0 in the Standard Cluster Descriptor is set). If there is no backing file or the backing file is smaller than the image, they shall read -- 2.5.0
