qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	Avi Kivity <avi@redhat.com>,
	Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH v6 0/5] qed: Add QEMU Enhanced Disk format
Date: Mon,  6 Dec 2010 16:07:58 +0000	[thread overview]
Message-ID: <1291651683-11990-1-git-send-email-stefanha@linux.vnet.ibm.com> (raw)

For a changelog against v5, see below.

QEMU Enhanced Disk format is a disk image format that forgoes features
found in qcow2 in favor of better levels of performance and data
integrity.  Due to its simpler on-disk layout, it is possible to safely
perform metadata updates more efficiently.

Installations, suspend-to-disk, and other allocation-heavy I/O workloads
will see increased performance due to fewer I/Os and syncs.  Workloads
that do not cause new clusters to be allocated will perform similar to
raw images due to in-memory metadata caching.

The format supports sparse disk images.  It does not rely on the host
filesystem holes feature, making it a good choice for sparse disk images
that need to be transferred over channels where holes are not supported.

Backing files are supported so only deltas against a base image can be
stored.  The base image may be smaller than the image file.

The file format is extensible so that additional features can be added
later with graceful compatibility handling.  A specification for the file
format is included in this patchset.

Internal snapshots are not supported.  This eliminates the need for
additional metadata to track copy-on-write clusters.

Compression and encryption are not supported.  They add complexity and can be
implemented at other layers in the stack (i.e. inside the guest or on the
host).  Encryption has been identified as a potential future extension and the
file format allows for this.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
---
The code is available from git:

http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/qed-v6

I have preserved distinct commits against v5 for easier reviewing here:

http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/qed-v6-presquash

v6:
 * Calculate correct offset before tracing
 * Fix >80 character lines
 * Replace qed_acb_build_qiov() with qemu_iovec_copy()
 * Remove table locking mechanism (v2) and use allocating write queue again
 * Trace qed_write_table_cb() flush state

v5:
 * Describe reserved offset bits in QED format spec
 * Backing filename must be stored within header clusters
 * Backing file clarifications in QED format spec
 * List autoclear_features in QED header struct in QED format spec
 * Return -EINVAL when header magic check fails
 * Allow bdrv_flush() to return errors

v4:
 * Use bdrv_*() instead of POSIX APIs to create an image file
 * Lift the non-zero image size restriction
 * Fix qed.c/qed.h style comments from Kevin

v3:
 * Flush before L2 update when a backing file is used
 * Use QED_F_BACKING_FORMAT_NO_PROBE instead of backing_fmt header field
 * Allow non-cluster sized images
 * Implement autoclear feature bits
 * Implement backing image smaller size - reads from backing image should zero beyond EOF
 * Preserve errno in qed_find_cluster_cb() - don't dumb down to QED_CLUSTER_ERROR
 * Use ffs() instead of get_bits_from_size()
 * Remove l2_cache argument to qed_unref_l2_cache_entry
 * Eliminate L2TableAllocFunc function pointer
 * Split qed_aio_write in-place and allocating code path to make code clearer
 * Document how L2 cache is used
 * Document qed_find_cluster()
 * Update QED specification
 * Fix COPYING.LIB LGPL license file references
 * Add copyright header to qed-check.c
 * Avoid the bytes_to_str()/cvtstr()/sztostr() dependency until Jes' strtosz() goes in

v2:
 * Add QED format specification to documentation
 * Use __builtin_ctzl() for get_bits_from_size()
 * Fine-grained table locking to allow concurrent allocating write requests
 * Fix qemu_free() instead of qemu_vfree() in qed_unref_l2_cache_entry()
 * Comment clean-ups

 Makefile.objs           |    2 +
 block/qed-check.c       |  210 ++++++++
 block/qed-cluster.c     |  154 ++++++
 block/qed-gencb.c       |   32 ++
 block/qed-l2-cache.c    |  173 ++++++
 block/qed-table.c       |  319 +++++++++++
 block/qed.c             | 1349 +++++++++++++++++++++++++++++++++++++++++++++++
 block/qed.h             |  301 +++++++++++
 block_int.h             |    1 +
 docs/specs/qed_spec.txt |  130 +++++
 trace-events            |   21 +
 11 files changed, 2692 insertions(+), 0 deletions(-)

             reply	other threads:[~2010-12-06 16:08 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-06 16:07 Stefan Hajnoczi [this message]
2010-12-06 16:07 ` [Qemu-devel] [PATCH v6 1/5] docs: Add QED image format specification Stefan Hajnoczi
2010-12-06 16:08 ` [Qemu-devel] [PATCH v6 2/5] qed: Add QEMU Enhanced Disk image format Stefan Hajnoczi
2010-12-06 16:08 ` [Qemu-devel] [PATCH v6 3/5] qed: Table, L2 cache, and cluster functions Stefan Hajnoczi
2010-12-06 16:08 ` [Qemu-devel] [PATCH v6 4/5] qed: Read/write support Stefan Hajnoczi
2010-12-06 16:08 ` [Qemu-devel] [PATCH v6 5/5] qed: Consistency check support Stefan Hajnoczi
2010-12-17 13:08 ` [Qemu-devel] Re: [PATCH v6 0/5] qed: Add QEMU Enhanced Disk format Kevin Wolf
2010-12-17 13:22   ` Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1291651683-11990-1-git-send-email-stefanha@linux.vnet.ibm.com \
    --to=stefanha@linux.vnet.ibm.com \
    --cc=aliguori@us.ibm.com \
    --cc=avi@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).