qemu/block
Kevin Wolf ecdd5333ab qcow2: Gather clusters in a looping loop
Instead of just checking once in exactly this order if there are
dependendies, non-COW clusters and new allocation, this starts looping
around these. This way we can, for example, gather non-COW clusters after
new allocations as long as the host cluster offsets stay contiguous.

Once handle_dependencies() is extended so that COW areas of in-flight
allocations can be overwritten, this allows to continue with gathering
other clusters (we wouldn't be able to do that without this change
because we would have missed a possible second dependency in one of the
next clusters).

This means that in the typical sequential write case, we can combine the
COW overwrite of one cluster with the allocation of the next cluster as
soon as something like Delayed COW gets actually implemented. It is only
by avoiding splitting requests this way that Delayed COW actually starts
improving performance noticably.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2013-03-28 11:52:44 +01:00
..
blkdebug.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
blkverify.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
bochs.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
cloop.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
commit.c block: fix null-pointer bug on error case in block commit 2013-01-17 10:51:11 +01:00
cow.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
curl.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
dmg.c block: Make find_image_format safe with NULL filename 2013-03-22 17:51:32 +01:00
gluster.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
iscsi.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
linux-aio.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
Makefile.objs build: move rules from Makefile to */Makefile.objs 2012-12-19 08:29:06 +01:00
mirror.c mirror: do nothing on zero-sized disk 2013-01-25 18:18:35 +01:00
nbd.c nbd: Check against invalid option combinations 2013-03-22 17:51:32 +01:00
parallels.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
qcow2-cache.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qcow2-cluster.c qcow2: Gather clusters in a looping loop 2013-03-28 11:52:44 +01:00
qcow2-refcount.c qcow2: Fix "total clusters" number in bdrv_check 2013-03-28 11:52:42 +01:00
qcow2-snapshot.c qcow2: flush in qcow2_update_snapshot_refcount() 2013-03-15 16:07:50 +01:00
qcow2.c qcow2: Allow requests with multiple l2metas 2013-03-28 11:52:44 +01:00
qcow2.h qcow2: Allow requests with multiple l2metas 2013-03-28 11:52:44 +01:00
qcow.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
qed-check.c qed: mark image clean after repair succeeds 2012-08-10 10:25:12 +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 misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qed.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
qed.h block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
raw-aio.h block: make discard asynchronous 2013-01-15 10:03:47 +01:00
raw-posix.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
raw-win32.c block: Add options QDict to bdrv_file_open() prototypes (fix MinGW build) 2013-03-25 09:53:04 +01:00
raw.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
rbd.c rbd: fix compile error 2013-03-25 09:51:43 +01:00
sheepdog.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
stream.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
vdi.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
vmdk.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
vpc.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
vvfat.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
win32-aio.c win32-aio: use iov utility functions instead of open-coding them 2013-01-18 09:57:51 +01:00