qemu-patch-raspberry4/block
Paolo Bonzini 402a47411b mirror: support more than one in-flight AIO operation
With AIO support in place, we can start copying more than one chunk
in parallel.  This patch introduces the required infrastructure for
this: the buffer is split into multiple granularity-sized chunks,
and there is a free list to access them.

Because of copy-on-write, a single operation may already require
multiple chunks to be available on the free list.

In addition, two different iterations on the HBitmap may want to
copy the same cluster.  We avoid this by keeping a bitmap of in-flight
I/O operations, and blocking until the previous iteration completes.
This should be a pretty rare occurrence, though; as long as there is
no overlap the next iteration can start before the previous one finishes.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2013-01-25 18:18:35 +01:00
..
blkdebug.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
blkverify.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
bochs.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
cloop.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +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 misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
curl.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
dmg.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
gluster.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
iscsi.c iscsi: add support for iovectors 2013-01-24 15:37:55 +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: support more than one in-flight AIO operation 2013-01-25 18:18:35 +01:00
nbd.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
parallels.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qcow.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qcow2-cache.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qcow2-cluster.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qcow2-refcount.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qcow2-snapshot.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qcow2.c qcow2: Fix segfault on zero-length write 2013-01-15 09:08:55 +01:00
qcow2.h block: move include files to include/block/ 2012-12-19 08:31: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 misc: move include files to include/qemu/ 2012-12-19 08:32:39 +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/raw-posix: Make hdev_aio_discard() available outside Linux 2013-01-19 14:35:02 +00:00
raw-win32.c block/raw-win32: Fix compiler warnings (wrong format specifiers) 2013-01-02 16:08:57 +01:00
raw.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
rbd.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
sheepdog.c sheepdog: clean up sd_aio_setup() 2013-01-15 13:40:10 +01:00
stream.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
vdi.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
vmdk.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
vpc.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
vvfat.c Replace remaining gmtime, localtime by gmtime_r, localtime_r 2013-01-11 09:44:37 +01:00
win32-aio.c win32-aio: use iov utility functions instead of open-coding them 2013-01-18 09:57:51 +01:00