qemu-patch-raspberry4/block
Paolo Bonzini b812f6719c mirror: perform COW if the cluster size is bigger than the granularity
When mirroring runs, the backing files for the target may not yet be
ready.  However, this means that a copy-on-write operation on the target
would fill the missing sectors with zeros.  Copy-on-write only happens
if the granularity of the dirty bitmap is smaller than the cluster size
(and only for clusters that are allocated in the source after the job
has started copying).  So far, the granularity was fixed to 1MB; to avoid
the problem we detected the situation and required the backing files to
be available in that case only.

However, we want to lower the granularity for efficiency, so we need
a better solution.  The solution is to always copy a whole cluster the
first time it is touched.  The code keeps a bitmap of clusters that
have already been allocated by the mirroring job, and only does "manual"
copy-on-write if the chunk being copied is zero in the bitmap.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2013-01-25 18:18:33 +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: perform COW if the cluster size is bigger than the granularity 2013-01-25 18:18:33 +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