On Wed, Dec 03, 2014 at 02:37:30PM +0100, Max Reitz wrote:
> Since refcounts do not always have to be a uint16_t, all refcount blocks
> and arrays in memory should not have a specific type (thus they become
> pointers to void) and for accessing them, two helper functions are used
> (a getter and a setter). Those functions are called indirectly through
> function pointers in the BDRVQcowState so they may later be exchanged
> for different refcount orders.
> 
> With the check and repair functions using this function, the refcount
> array they are creating will be in big endian byte order; additionally,
> using realloc_refcount_array() makes the size of this refcount array
> always cluster-aligned. Both combined allow rebuild_refcount_structure()
> to drop the bounce buffer which was used to convert parts of the
> refcount array to big endian byte order and store them on disk. Instead,
> those parts can now be written directly.
> 
> Signed-off-by: Max Reitz <mre...@redhat.com>
> ---
>  block/qcow2-refcount.c | 122 
> ++++++++++++++++++++++++++++---------------------
>  block/qcow2.h          |   8 ++++
>  2 files changed, 79 insertions(+), 51 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>

Attachment: pgpRhHjDTSXEc.pgp
Description: PGP signature

Reply via email to