qemu/block
Kevin Wolf 493810940b qcow2: Add QcowCache
This adds some new cache functions to qcow2 which can be used for caching
refcount blocks and L2 tables. When used with cache=writethrough they work
like the old caching code which is spread all over qcow2, so for this case we
have merely a cleanup.

The interesting case is with writeback caching (this includes cache=none) where
data isn't written to disk immediately but only kept in cache initially. This
leads to some form of metadata write batching which avoids the current "write
to refcount block, flush, write to L2 table" pattern for each single request
when a lot of cluster allocations happen. Instead, cache entries are only
written out if its required to maintain the right order. In the pure cluster
allocation case this means that all metadata updates for requests are done in
memory initially and on sync, first the refcount blocks are written to disk,
then fsync, then L2 tables.

This improves performance of scenarios with lots of cluster allocations
noticably (e.g. installation or after taking a snapshot).

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2011-01-24 11:08:51 +01:00
..
blkdebug.c block: Allow bdrv_flush to return errors 2010-11-04 12:52:16 +01:00
blkverify.c block: avoid a warning on 64 bit hosts with long as int64_t 2010-11-04 13:54:37 +01:00
bochs.c bochs: use qemu block API 2010-05-17 10:20:05 +02:00
cloop.c cloop: use qemu block API 2010-05-17 10:20:04 +02:00
cow.c block: Allow bdrv_flush to return errors 2010-11-04 12:52:16 +01:00
curl.c Fix %lld or %llx printf format use 2010-05-22 08:02:12 +00:00
dmg.c dmg: use qemu block API 2010-05-17 10:20:05 +02:00
nbd.c nbd: correctly manage default port 2010-09-21 15:39:42 +02:00
parallels.c parallels: use qemu block API 2010-05-17 10:20:05 +02:00
qcow.c block: Remove unused s->hd in various drivers 2010-11-24 17:31:06 +01:00
qcow2-cache.c qcow2: Add QcowCache 2011-01-24 11:08:51 +01:00
qcow2-cluster.c qcow2: fix unaligned access 2011-01-24 11:08:50 +01:00
qcow2-refcount.c qcow2: Invalidate cache after failed read 2010-11-04 13:54:37 +01:00
qcow2-snapshot.c block/qcow2.c: rename qcow_ functions to qcow2_ 2010-12-17 16:15:01 +01:00
qcow2.c Add proper -errno error return values to qcow2_open() 2010-12-17 16:15:04 +01:00
qcow2.h qcow2: Add QcowCache 2011-01-24 11:08:51 +01:00
qed-check.c qed: Consistency check support 2010-12-17 16:11:04 +01:00
qed-cluster.c qed: Table, L2 cache, and cluster functions 2010-12-17 16:11:04 +01:00
qed-gencb.c qed: Table, L2 cache, and cluster functions 2010-12-17 16:11:04 +01:00
qed-l2-cache.c qed: Table, L2 cache, and cluster functions 2010-12-17 16:11:04 +01:00
qed-table.c qed: Table, L2 cache, and cluster functions 2010-12-17 16:11:04 +01:00
qed.c qed: Consistency check support 2010-12-17 16:11:04 +01:00
qed.h qed: Consistency check support 2010-12-17 16:11:04 +01:00
raw-posix-aio.h Remove aio_ctx from paio_* interface 2009-10-30 08:39:34 -05:00
raw-posix.c raw-posix: add discard support 2010-12-17 16:11:03 +01:00
raw-win32.c Fix win32 build 2010-11-07 15:10:40 +00:00
raw.c block: add discard support 2010-12-17 16:11:03 +01:00
rbd.c ceph/rbd block driver for qemu-kvm 2010-12-14 15:44:21 +01:00
rbd_types.h ceph/rbd block driver for qemu-kvm 2010-12-14 15:44:21 +01:00
sheepdog.c sheepdog: remove unnecessary includes 2010-08-30 18:29:22 +02:00
vdi.c block: Remove unused s->hd in various drivers 2010-11-24 17:31:06 +01:00
vmdk.c block: Remove unused s->hd in various drivers 2010-11-24 17:31:06 +01:00
vpc.c vpc: fix a file descriptor leak 2011-01-12 19:49:00 +00:00
vvfat.c vvfat: fix a file descriptor leak 2011-01-12 19:48:58 +00:00