qemu-e2k/block
Stefan Hajnoczi f9cb2860bd qcow2: drop flush in update_cluster_refcount()
The update_cluster_refcount() function increments/decrements a cluster's
refcount and then returns the new refcount value.

There is no need to flush since both update_cluster_refcount() callers
already take care of this:

1. qcow2_alloc_bytes() calls update_cluster_refcount() when compressed
   sectors will be appended to an existing cluster with enough free
   space.  qcow2_alloc_bytes() already flushes so there is no need to do
   so in update_cluster_refcount().

2. qcow2_update_snapshot_refcount() sets a cache dependency on refcounts
   if it needs to update L2 entries.  It also flushes before completing.

Removing this flush significantly speeds up qcow2 snapshot creation:

  $ qemu-img create -f qcow2 test.qcow2 -o size=50G,preallocation=metadata
  $ time qemu-img snapshot -c new test.qcow2

Time drops from more than 3 minutes to under 1 second.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2013-03-15 16:07:50 +01:00
..
blkdebug.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
blkverify.c block: Add options QDict to bdrv_open() prototype 2013-03-15 16:07:49 +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_open() 2013-03-15 16:07:49 +01:00
curl.c block/curl: only restrict protocols with libcurl>=7.19.4 2013-02-13 11:57:35 -06:00
dmg.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
gluster.c error: Strip trailing '\n' from error string arguments (again) 2013-02-11 08:13:19 -06:00
iscsi.c iscsi: add iscsi_truncate support 2013-03-05 17:51:51 +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 misc: move include files to include/qemu/ 2012-12-19 08:32:39 +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: Allow lazy refcounts to be enabled on the command line 2013-03-15 16:07:49 +01:00
qcow2-refcount.c qcow2: drop flush in update_cluster_refcount() 2013-03-15 16:07:50 +01:00
qcow2-snapshot.c qcow2: flush in qcow2_update_snapshot_refcount() 2013-03-15 16:07:50 +01:00
qcow2.c qcow2: Allow lazy refcounts to be enabled on the command line 2013-03-15 16:07:49 +01:00
qcow2.h qcow2: Allow lazy refcounts to be enabled on the command line 2013-03-15 16:07:49 +01:00
qcow.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +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_open() 2013-03-15 16:07:49 +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: detect readonly Linux block devices using BLKROGET 2013-02-12 12:22:49 +01:00
raw-win32.c block/raw-win32: Fix compiler warnings (wrong format specifiers) 2013-01-02 16:08:57 +01:00
raw.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
rbd.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
sheepdog.c sheepdog: add support for connecting to unix domain socket 2013-03-04 09:54:17 +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_open() prototype 2013-03-15 16:07:49 +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_open() prototype 2013-03-15 16:07:49 +01:00
win32-aio.c win32-aio: use iov utility functions instead of open-coding them 2013-01-18 09:57:51 +01:00