Hi, this is something I did while working on the subcluster series but it's independent from it so I thought to send it already.
In short: qcow2_get_cluster_offset() returns a host cluster offset but none of the callers actually wants the offset of the cluster, they want the host offset into the cluster. There's a pre-existing exception with compressed clusters. In this case the returned value was overloaded to contain a cluster offset or a compressed cluster descriptor, depending on the cluster type. This is kind of ugly, and we could make it more explicit using a union or something like that but I don't think it's worth the effort here, so I just documented it. Berto Alberto Garcia (2): qcow2: Make Qcow2AioTask store the full host offset qcow2: Convert qcow2_get_cluster_offset() into qcow2_get_host_offset() block/qcow2.h | 4 +-- block/qcow2-cluster.c | 38 ++++++++++++---------- block/qcow2.c | 74 ++++++++++++++++++------------------------- 3 files changed, 55 insertions(+), 61 deletions(-) -- 2.20.1