qemu-e2k/block
Alberto Garcia 1a52b73dba qcow2: Handle QCowL2Meta on error in preallocate_co()
If qcow2_alloc_cluster_offset() or qcow2_alloc_cluster_link_l2() fail
then this function simply returns the error code, potentially leaking
the QCowL2Meta structure and leaving stale items in s->cluster_allocs.

A second problem is that this function calls qcow2_free_any_clusters()
on failure but passing a host cluster offset instead of an L2 entry.
Luckily for normal uncompressed clusters a raw offset also works like
a valid L2 entry so it works just the same, but we should be using
qcow2_free_clusters() instead.

This patch fixes both problems by using qcow2_handle_l2meta().

Signed-off-by: Alberto Garcia <berto@igalia.com>
Message-Id: <cd3a6b9abd43f9c0b60be413d760f0cacc67eb66.1599573989.git.berto@igalia.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
2020-09-15 11:05:13 +02:00
..
monitor commit: Deal with filters 2020-09-07 12:31:31 +02:00
accounting.c
aio_task.c
amend.c block/amend: Check whether the node exists 2020-07-27 12:37:25 +02:00
backup-top.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
backup-top.h
backup.c backup: Deal with filters 2020-09-07 12:31:31 +02:00
blkdebug.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
blklogwrites.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
blkreplay.c
blkverify.c
block-backend.c commit: Deal with filters 2020-09-07 12:31:31 +02:00
block-copy.c block-copy: Use CAF to find sync=top base 2020-09-07 12:31:31 +02:00
bochs.c
cloop.c
commit.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
copy-on-read.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
create.c
crypto.c block/crypto: disallow write sharing by default 2020-07-21 10:49:02 +02:00
crypto.h
curl.c
dirty-bitmap.c
dmg-bz2.c
dmg-lzfse.c
dmg.c
dmg.h
file-posix.c file-posix: Handle EINVAL fallocate return value 2020-07-21 16:28:57 +02:00
file-win32.c file-win32: Fix "locking" option 2020-09-10 11:11:12 +02:00
filter-compress.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
gluster.c
io_uring.c
io.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
iscsi-opts.c
iscsi.c iscsi: return -EIO when sense fields are meaningless 2020-07-10 18:02:23 -04:00
linux-aio.c
meson.build block: always link with zlib 2020-09-01 01:51:51 -04:00
mirror.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
nbd.c block/nbd: use non-blocking connect: fix vm hang on connect() 2020-09-02 16:47:23 -05:00
nfs.c
null.c block/null: Implement bdrv_get_allocated_file_size 2020-09-07 12:31:31 +02:00
nvme.c block/nvme: Pair doorbell registers 2020-09-10 11:11:13 +02:00
parallels.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
parallels.h
qapi-sysemu.c
qapi.c block: Leave BDS.backing_{file,format} constant 2020-09-07 12:31:31 +02:00
qcow2-bitmap.c qcow2: Use macros for the L1, refcount and bitmap table entry sizes 2020-09-15 11:05:12 +02:00
qcow2-cache.c
qcow2-cluster.c qcow2: Rewrite the documentation of qcow2_alloc_cluster_offset() 2020-09-15 11:05:13 +02:00
qcow2-refcount.c qcow2: Use macros for the L1, refcount and bitmap table entry sizes 2020-09-15 11:05:12 +02:00
qcow2-snapshot.c qcow2: Use macros for the L1, refcount and bitmap table entry sizes 2020-09-15 11:05:12 +02:00
qcow2-threads.c
qcow2.c qcow2: Handle QCowL2Meta on error in preallocate_co() 2020-09-15 11:05:13 +02:00
qcow2.h qcow2: Use macros for the L1, refcount and bitmap table entry sizes 2020-09-15 11:05:12 +02:00
qcow.c qcow: Tolerate backing_fmt= 2020-07-14 15:18:59 +02:00
qed-check.c
qed-cluster.c
qed-l2-cache.c
qed-table.c
qed.c
qed.h
quorum.c block/quorum.c: stable children names 2020-09-15 11:05:12 +02:00
raw-format.c
rbd.c
replication.c
sheepdog.c sheepdog: Add trivial backing_fmt support 2020-07-14 15:18:59 +02:00
snapshot.c block/snapshot: Fix fallback 2020-09-07 12:31:31 +02:00
ssh.c
stream.c stream: Deal with filters 2020-09-07 12:31:31 +02:00
throttle-groups.c throttle-groups: Move ThrottleGroup typedef to header 2020-08-27 14:04:54 -04:00
throttle.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
trace-events trace-events: Fix attribution of trace points to source 2020-09-09 17:17:58 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vdi.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
vhdx-endian.c
vhdx-log.c
vhdx.c block/vhdx: Support vhdx image only with 512 bytes logical sector size 2020-09-15 11:05:13 +02:00
vhdx.h
vmdk.c vmdk: Drop vmdk_co_flush() 2020-09-07 12:31:31 +02:00
vpc.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
vvfat.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
win32-aio.c
write-threshold.c