summary refs log tree commit diff stats
path: root/scripts/qapi/types.py
diff options
context:
space:
mode:
authorAlberto Garcia <berto@igalia.com>2020-06-17 16:00:36 +0200
committerMax Reitz <mreitz@redhat.com>2020-07-06 08:33:06 +0200
commita5675f390116a927e320984f02f473a6affc9fcd (patch)
tree33283366384bc7c3703cf36c497761c4afd7c018 /scripts/qapi/types.py
parente8de7ba9ea086c427cd36a10bc3506ac20aa4895 (diff)
downloadfocaccia-qemu-a5675f390116a927e320984f02f473a6affc9fcd.tar.gz
focaccia-qemu-a5675f390116a927e320984f02f473a6affc9fcd.zip
qcow2: Fix preallocation on images with unaligned sizes
When resizing an image with qcow2_co_truncate() using the falloc or
full preallocation modes the code assumes that both the old and new
sizes are cluster-aligned.

There are two problems with this:

  1) The calculation of how many clusters are involved does not always
     get the right result.

     Example: creating a 60KB image and resizing it (with
     preallocation=full) to 80KB won't allocate the second cluster.

  2) No copy-on-write is performed, so in the previous example if
     there is a backing file then the first 60KB of the first cluster
     won't be filled with data from the backing file.

This patch fixes both issues.

Signed-off-by: Alberto Garcia <berto@igalia.com>
Message-Id: <20200617140036.20311-1-berto@igalia.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'scripts/qapi/types.py')
0 files changed, 0 insertions, 0 deletions