All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v5 0/3] qcow2 metadata cache
@ 2011-01-24 16:08 Kevin Wolf
  2011-01-24 16:08 ` [Qemu-devel] [PATCH v5 1/3] qcow2: Add QcowCache Kevin Wolf
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Kevin Wolf @ 2011-01-24 16:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf

block-queue turned out to be too big effort to be useful for quickly fixing the
performance problems that qcow2 got since we introduced the metadata flushes.
While I still think the idea is right, it needs more time and qcow2 doesn't
have more time. Let's come back to block-queue later when the most urgent qcow2
problems are fixed.

So this is the idea of block-queue applied to the very specific case of qcow2.
Whereas block-queue tried to be a generic solution for all kind of things and
tried to make all writes asynchronous at the same time, this is only about
batching writes to refcount blocks and L2 tables in qcow2 and getting the
dependencies right. (Yes, the L1 table and refcount table is left alone. They
are almost never written to anyway.)

This should be much easier to understand and review, and I myself feel a bit
more confident about it than with block-queue, too.

v1:
- Don't read newly allocated tables from the disk before memsetting them to
  zero

v2:
- Addressed Stefan's review comments
- Added patch 3 to avoid an unnecessary bdrv_flush after COW

v3:
- Some error path fixes (esp. missing or double qcow2_cache_put)

v4:
- Pay attention to make writethrough performance not even worse in
  update_refcount
- Add some blkdebug events back so that "failures" in qemu-iotests are kept
  minimal. Some diff between master and this series is left in test 026, but
  it's harmless.

v5:
- Fixed return value of alloc_refcount_block
- Removed unnecessary bdrv_flush

Kevin Wolf (3):
  qcow2: Add QcowCache
  qcow2: Use QcowCache
  qcow2: Batch flushes for COW

 Makefile.objs          |    2 +-
 block/qcow2-cache.c    |  314 ++++++++++++++++++++++++++++++++++++++++++++++++
 block/qcow2-cluster.c  |  208 +++++++++++---------------------
 block/qcow2-refcount.c |  260 ++++++++++++++++-----------------------
 block/qcow2.c          |   48 +++++++-
 block/qcow2.h          |   32 ++++-
 6 files changed, 565 insertions(+), 299 deletions(-)
 create mode 100644 block/qcow2-cache.c

-- 
1.7.2.3

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-01-28  8:08 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-24 16:08 [Qemu-devel] [PATCH v5 0/3] qcow2 metadata cache Kevin Wolf
2011-01-24 16:08 ` [Qemu-devel] [PATCH v5 1/3] qcow2: Add QcowCache Kevin Wolf
2011-01-24 16:08 ` [Qemu-devel] [PATCH v5 2/3] qcow2: Use QcowCache Kevin Wolf
2011-01-24 16:08 ` [Qemu-devel] [PATCH v5 3/3] qcow2: Batch flushes for COW Kevin Wolf
2011-01-27  7:52 ` [Qemu-devel] [PATCH v5 0/3] qcow2 metadata cache TeLeMan
2011-01-27  9:04   ` Kevin Wolf
2011-01-28  2:36     ` TeLeMan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.