diff options
author | Alberto Garcia <berto@igalia.com> | 2020-06-17 16:00:36 +0200 |
---|---|---|
committer | Max Reitz <mreitz@redhat.com> | 2020-07-06 08:33:06 +0200 |
commit | a5675f390116a927e320984f02f473a6affc9fcd (patch) | |
tree | 33283366384bc7c3703cf36c497761c4afd7c018 /fpu | |
parent | e8de7ba9ea086c427cd36a10bc3506ac20aa4895 (diff) | |
download | qemu-a5675f390116a927e320984f02f473a6affc9fcd.zip qemu-a5675f390116a927e320984f02f473a6affc9fcd.tar.gz qemu-a5675f390116a927e320984f02f473a6affc9fcd.tar.bz2 |
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 'fpu')
0 files changed, 0 insertions, 0 deletions