[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC V6 21/33] qcow2: Drop hash for a given cluster whe
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [RFC V6 21/33] qcow2: Drop hash for a given cluster when dedup makes refcount > 2^16/2. |
Date: |
Thu, 7 Feb 2013 11:23:47 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Feb 06, 2013 at 01:31:54PM +0100, Benoît Canet wrote:
> diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
> index a932ff6..fa2559f 100644
> --- a/block/qcow2-refcount.c
> +++ 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);
> + }
update_cluster_refcount() calls update_refcount() followed by
get_refcount(). It is not necessary to add the deduplication argument
to update_refcount and perform this check inside update_refcount().
Please either use update_cluster_refcount() or write a similar function,
then you'll get back the actual refcount value and can test it in dedup
code.
> if (refcount == 0 && cluster_index < s->free_cluster_index) {
> s->free_cluster_index = cluster_index;
> }
> diff --git a/block/qcow2.h b/block/qcow2.h
> index dc378a7..f281832 100644
> --- a/block/qcow2.h
> +++ b/block/qcow2.h
> @@ -65,6 +65,8 @@
> #define DEFAULT_DEDUP_CLUSTER_SIZE 4096
>
> #define HASH_LENGTH 32
> +/* indicate that this cluster refcount has reached its maximum value */
> +#define QCOW_FLAG_HALF_MAX_REFCOUNT (1LL << 61)
Missing from the spec.
- [Qemu-devel] [RFC V6 17/33] qcow2-cache: Allow to choose table size at creation., (continued)
- [Qemu-devel] [RFC V6 17/33] qcow2-cache: Allow to choose table size at creation., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 15/33] qcow2: Load and save deduplication table header extension., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 18/33] qcow2: Extract qcow2_add_feature and qcow2_remove_feature., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 16/33] qcow2: Extract qcow2_do_table_init., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 20/33] qcow2: Add a deduplication boolean to update_refcount., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 21/33] qcow2: Drop hash for a given cluster when dedup makes refcount > 2^16/2., Benoît Canet, 2013/02/06
- Re: [Qemu-devel] [RFC V6 21/33] qcow2: Drop hash for a given cluster when dedup makes refcount > 2^16/2.,
Stefan Hajnoczi <=
- [Qemu-devel] [RFC V6 22/33] qcow2: Remove hash when cluster is deleted., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 19/33] block: Add qcow2_dedup format and image creation code., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 25/33] qcow2: Serialize write requests when deduplication is activated., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 30/33] qcow2: Integrate SKEIN hash algorithm in deduplication., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 32/33] qemu-iotests: Filter dedup=on/off so existing tests don't break., Benoît Canet, 2013/02/06