On 01/16/2013 09:24 AM, Benoît Canet wrote: > A new physical cluster with the same hash value will be used for further > occurence of this hash.
s/occurence/occurrence/ > --- > block/qcow2-dedup.c | 32 ++++++++++++++++++++++++++++++++ > block/qcow2-refcount.c | 3 +++ > block/qcow2.h | 4 ++++ > 3 files changed, 39 insertions(+) > > +++ b/block/qcow2-refcount.c > @@ -489,6 +489,9 @@ int QEMU_WARN_UNUSED_RESULT > update_refcount(BlockDriverState *bs, > ret = -EINVAL; > goto fail; > } > + if (s->has_dedup && deduplication && refcount >= 0xFFFF/2) { > + qcow2_dedup_refcount_half_max_reached(bs, cluster_index); You are hardcoding to a width of 16 bits; however, version 3 makes the refcount field variable-sized: 96 - 99: refcount_order Describes the width of a reference count block entry (width in bits = 1 << refcount_order). For version 2 images, the order is always assumed to be 4 (i.e. the width is 16 bits). Hmm, what happens if refcount_order is 0 to disable reference counting? That setting is valid for creating a qcow2 file that can't be used for internal snapshots. But it also interferes with dedup; so you probably want to add some additional requirements in the spec (patch 1/36) that when dedup is in use, refcount_order must be a minimum value (or require that it be exactly 4, for a width of 16 bits). -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature