On Wed, Feb 06, 2013 at 01:31:49PM +0100, Benoît Canet wrote: > diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c > index 296c440..9c16816 100644 > --- a/block/qcow2-refcount.c > +++ b/block/qcow2-refcount.c > @@ -31,27 +31,44 @@ static int64_t alloc_clusters_noref(BlockDriverState *bs, > int64_t size); > /*********************************************************/ > /* refcount handling */ > > -int qcow2_refcount_init(BlockDriverState *bs) > +int qcow2_do_table_init(BlockDriverState *bs, > + uint64_t **table, > + int64_t offset, > + int size, > + bool is_refcount) > { > - BDRVQcowState *s = bs->opaque; > - int ret, refcount_table_size2, i; > - > - refcount_table_size2 = s->refcount_table_size * sizeof(uint64_t); > - s->refcount_table = g_malloc(refcount_table_size2); > - if (s->refcount_table_size > 0) { > - BLKDBG_EVENT(bs->file, BLKDBG_REFTABLE_LOAD); > - ret = bdrv_pread(bs->file, s->refcount_table_offset, > - s->refcount_table, refcount_table_size2); > - if (ret != refcount_table_size2) > + int ret, size2, i; > + > + size2 = size * sizeof(uint64_t); > + *table = g_malloc(size2); > + if (size > 0) { > + if (is_refcount) { > + BLKDBG_EVENT(bs->file, BLKDBG_REFTABLE_LOAD); > + }
Please add a blkdebug event for dedup table loading.