qemu/block
Kevin Wolf f24423bd90 qcow2: Fix refcount block allocation during qcow2_alloc_cluster_at()
Refcount block allocation and refcount table growth rely on
s->free_cluster_index pointing to somewhere after the current
allocation. Change qcow2_alloc_cluster_at() to fulfill this
assumption.

Without this change it could happen that a newly allocated refcount
block and the allocated data block point to the same area in the image
file, causing data corruption in the long run.

This fixes a bug that became first visible after commit 250196f1.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2012-04-20 15:56:19 +02:00
..
blkdebug.c block: push recursive flushing up from drivers 2012-04-05 14:54:39 +02:00
blkverify.c block: replace unchecked strdup/malloc/calloc with glib 2012-01-26 11:39:03 +01:00
bochs.c block: take lock around bdrv_read implementations 2011-10-21 17:34:14 +02:00
cloop.c block/cloop: Use g_free instead of free 2011-11-04 14:24:12 +01:00
cow.c block: Fix spelling in comment (ineffcient -> inefficient) 2012-04-19 15:48:52 +02:00
curl.c aio: remove process_queue callback and qemu_aio_process_queue 2012-04-19 16:37:53 +02:00
dmg.c block: take lock around bdrv_read implementations 2011-10-21 17:34:14 +02:00
iscsi.c aio: remove process_queue callback and qemu_aio_process_queue 2012-04-19 16:37:53 +02:00
nbd.c aio: remove process_queue callback and qemu_aio_process_queue 2012-04-19 16:37:53 +02:00
parallels.c block: take lock around bdrv_read implementations 2011-10-21 17:34:14 +02:00
qcow2-cache.c qcow2: Add some tracing 2012-03-12 15:14:06 +01:00
qcow2-cluster.c qcow2: Fix error handling in qcow2_alloc_cluster_offset 2012-04-19 16:03:27 +02:00
qcow2-refcount.c qcow2: Fix refcount block allocation during qcow2_alloc_cluster_at() 2012-04-20 15:56:19 +02:00
qcow2-snapshot.c qcow2: Allow >4 GB VM state 2011-12-15 12:40:33 +01:00
qcow2.c block: push recursive flushing up from drivers 2012-04-05 14:54:39 +02:00
qcow2.h qcow2: Reduce number of I/O requests 2012-03-12 15:14:07 +01:00
qcow.c block: push recursive flushing up from drivers 2012-04-05 14:54:39 +02:00
qed-check.c qed: image fragmentation statistics 2012-04-05 14:54:40 +02:00
qed-cluster.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
qed-gencb.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
qed-l2-cache.c qed: do not evict in-use L2 table cache entries 2012-03-12 15:14:06 +01:00
qed-table.c block: bdrv_aio_* do not return NULL 2011-12-15 12:40:07 +01:00
qed.c qed: remove incoming live migration blocker 2012-04-05 16:29:12 +02:00
qed.h qed: remove incoming live migration blocker 2012-04-05 16:29:12 +02:00
raw-posix-aio.h prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
raw-posix.c block: bdrv_eject(): Make eject_flag a real bool 2012-02-22 17:23:05 -02:00
raw-win32.c block: Rename bdrv_co_flush to bdrv_co_flush_to_disk 2011-11-11 14:02:59 +01:00
raw.c block: push recursive flushing up from drivers 2012-04-05 14:54:39 +02:00
rbd.c aio: remove process_queue callback and qemu_aio_process_queue 2012-04-19 16:37:53 +02:00
sheepdog.c aio: remove process_queue callback and qemu_aio_process_queue 2012-04-19 16:37:53 +02:00
stream.c block stream: close unused files and update ->backing_hd 2012-04-05 15:11:37 +02:00
vdi.c vdi: change goto to loop 2012-04-05 14:54:40 +02:00
vmdk.c block: push recursive flushing up from drivers 2012-04-05 14:54:39 +02:00
vpc.c block/vpc: write checksum back to footer after check 2012-04-05 14:54:40 +02:00
vvfat.c vvfat: avoid leaking file descriptor in commit_one_file() 2012-01-13 10:36:59 +00:00