qcow2: use one single memory block for the L2/refcount cache tables
commit72e80b89015bab196f0f0e83b12b0eee75fa0574
authorAlberto Garcia <berto@igalia.com>
Mon, 11 May 2015 12:54:53 +0000 (11 15:54 +0300)
committerKevin Wolf <kwolf@redhat.com>
Fri, 22 May 2015 15:08:01 +0000 (22 17:08 +0200)
treebccf75bc1b4f2268827580f456f55770cc29a93e
parent13c4941cdd8685d28c7e3a09e393a5579b58db46
qcow2: use one single memory block for the L2/refcount cache tables

The qcow2 L2/refcount cache contains one separate table for each cache
entry. Doing one allocation per table adds unnecessary overhead and it
also requires us to store the address of each table separately.

Since the size of the cache is constant during its lifetime, it's
better to have an array that contains all the tables using one single
allocation.

In my tests measuring freshly created caches with sizes 128MB (L2) and
32MB (refcount) this uses around 10MB of RAM less.

Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/qcow2-cache.c
block/qcow2-cluster.c
block/qcow2-refcount.c
block/qcow2.h