[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC V6 14/33] qcow2: Create qcow2_is_cluster_to_dedup.
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [RFC V6 14/33] qcow2: Create qcow2_is_cluster_to_dedup. |
Date: |
Thu, 7 Feb 2013 10:53:39 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Feb 06, 2013 at 01:31:47PM +0100, Benoît Canet wrote:
> diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
> index 5b1d20d..fedcf57 100644
> --- a/block/qcow2-cluster.c
> +++ b/block/qcow2-cluster.c
> @@ -514,6 +514,58 @@ out:
> return ret;
> }
>
> +/* Check if a cluster is to deduplicate given it's index
s/it's/its/
> + *
> + * @index: The logical index of the cluster starting from 0
> + * @physical_sect: The physical sector of the cluster as return value
> + * @err: 0 on success, negative on error
> + * @ret: True if the cluster is to deduplicate else false
> + */
> +bool qcow2_is_cluster_to_dedup(BlockDriverState *bs,
> + uint64_t index,
> + uint64_t *physical_sect,
> + int *err)
> +{
> + BDRVQcowState *s = bs->opaque;
> + unsigned int l1_index, l2_index;
> + uint64_t offset;
> + uint64_t l2_offset;
> + uint64_t *l2_table = NULL;
> +
> + *physical_sect = 0;
> + *err = 0;
> +
> + l1_index = index >> s->l2_bits;
> +
> + if (l1_index >= s->l1_size) {
> + return false;
> + }
> +
> + /* no l1 entry */
> + if (!(s->l1_table[l1_index] & QCOW_OFLAG_COPIED)) {
> + return false;
> + }
Why check QCOW_OFLAG_COPIED? Try this from qcow2_get_cluster_offset():
l2_offset = s->l1_table[l1_index] & L1E_OFFSET_MASK;
if (!l2_offset) {
ret = QCOW2_CLUSTER_UNALLOCATED;
goto out;
}
- Re: [Qemu-devel] [RFC V6 13/33] qcow2: make the deduplication forget a cluster hash when a cluster is to dedupe, (continued)
- [Qemu-devel] [RFC V6 29/33] qcow2: Do not overwrite existing entries with QCOW_OFLAG_COPIED., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 26/33] qcow2: Add verification of dedup table., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 23/33] qcow2: Add qcow2_dedup_is_running to probe if dedup is running., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 24/33] qcow2: Integrate deduplication in qcow2_co_writev loop., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 14/33] qcow2: Create qcow2_is_cluster_to_dedup., Benoît Canet, 2013/02/06
- Re: [Qemu-devel] [RFC V6 14/33] qcow2: Create qcow2_is_cluster_to_dedup.,
Stefan Hajnoczi <=
- [Qemu-devel] [RFC V6 28/33] qcow2: Add check_dedup_l2 in order to check l2 of dedup table., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 09/33] qcow2: Implement qcow2_compute_cluster_hash., Benoît Canet, 2013/02/06
- [Qemu-devel] [RFC V6 10/33] qcow2: Extract qcow2_dedup_grow_table, Benoît Canet, 2013/02/06
- Re: [Qemu-devel] [RFC V6 00/33] QCOW2 deduplication core functionality, Stefan Hajnoczi, 2013/02/08