qcow2: Support exact L1 table growth
commit72893756e0da74fcb626c52dfff1fc6e9de84f0c
authorStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Mon, 18 Oct 2010 15:53:53 +0000 (18 16:53 +0100)
committerKevin Wolf <kwolf@redhat.com>
Fri, 22 Oct 2010 12:49:35 +0000 (22 14:49 +0200)
treeca761120b722477d05c62f2a1d9cd25bd5352ee3
parentd03703c81a202cea156811e5dbc8e88627c19986
qcow2: Support exact L1 table growth

The L1 table grow operation includes a size calculation that bumps up
the new L1 table size in order to anticipate the size needs of vmstate
data.  This helps reduce the number of times that the L1 table has to be
grown when vmstate data is appended.

This size overhead is not necessary during image creation,
bdrv_truncate(), or snapshot goto operations.  In fact, existing
qemu-iotests that exercise table growth are no longer able to trigger it
because image creation preallocates an L1 table that is too large after
changes to qcow_create2().

This patch keeps the size calculation but also adds exact growth for
callers that do not want to inflate the L1 table size unnecessarily.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/qcow2-cluster.c
block/qcow2-snapshot.c
block/qcow2.c
block/qcow2.h