On 11/10/2014 06:45 AM, Max Reitz wrote:
Refcounts may have a width of up to 64 bit, so qemu should use the
same
s/bit/bits/
width to represent refcount values internally.
Signed-off-by: Max Reitz <address@hidden>
---
block/qcow2-cluster.c | 9 ++++++---
block/qcow2-refcount.c | 37 ++++++++++++++++++++-----------------
block/qcow2.h | 7 ++++---
3 files changed, 30 insertions(+), 23 deletions(-)
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index df0b2c9..ab43902 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -1640,7 +1640,7 @@ static int
expand_zero_clusters_in_l1(BlockDriverState *bs, uint64_t *l1_table,
for (i = 0; i < l1_size; i++) {
uint64_t l2_offset = l1_table[i] & L1E_OFFSET_MASK;
bool l2_dirty = false;
- int l2_refcount;
+ int64_t l2_refcount;
You may want to mention in the commit message that you choose a signed
type to allow negative for errors, and therefore we really allow
only up
to 63 useful bits. Or even mention that this is okay because no one
can feasibly generate an image with more than 2^63 refs to the same
cluster (there isn't that much storage or time to do such a task in our
lifetime...)