From: Max Reitz <mreitz@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
"Benoît Canet" <benoi.canet@nodalink.com>,
"Peter Lieven" <pl@kamp.de>, "Max Reitz" <mreitz@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>
Subject: [Qemu-devel] [PATCH 00/12] qcow2: Add new overlap check functions
Date: Mon, 3 Nov 2014 18:04:19 +0100 [thread overview]
Message-ID: <1415034271-8774-1-git-send-email-mreitz@redhat.com> (raw)
As has been requested, this series adds new overlap check functions to
the qcow2 code. My local branch is called "qcow2-improved-overlap-v1",
but I am not so sure whether it is actually an improvement; that is left
for you to decide, dear reviewers.
See patch 1 for an explanation of why this series exists and what it
does. Patch 1 is basically the core of this series, the rest just
employs the functions introduced there.
I have yet to do benchmarks to test whether this series actually
improves things, but judging from the iotests it at least does not slow
things down (which it did at one time during development, particularily
test 044 is good for testing this, so this actually has some
significance to it).
In a later patch, we may want to change the meaning of the "constant"
overlap checking option to mean the same as "cached", which is
everything except for inactive L2 tables. This series does make
checking for overlaps with inactive L2 tables at runtime just as cheap
as everything else (constant time plus caching), but using these checks
means qemu has to read all the snapshot L1 tables when opening a qcow2
file. This does not take long, of course, but it does result in a bit of
overhead so I did not want to enable it by default.
I think just enabling all overlap checks by default after this series
should be fine and useful, though.
Max Reitz (12):
qcow2: Add new overlap check functions
qcow2: Pull up overlap check option evaluation
qcow2: Create metadata list
qcow2/overlaps: Protect image header
qcow2/overlaps: Protect refcount table
qcow2/overlaps: Protect refcount blocks
qcow2/overlaps: Protect active L1 table
qcow2/overlaps: Protect active L2 tables
qcow2/overlaps: Protect snapshot table
qcow2/overlaps: Protect inactive L1 tables
qcow2/overlaps: Protect inactive L2 tables
qcow2: Use new metadata overlap check function
block/Makefile.objs | 3 +-
block/qcow2-cluster.c | 13 ++
block/qcow2-overlap.c | 404 +++++++++++++++++++++++++++++++++++++++++++++++++
block/qcow2-refcount.c | 202 ++++++++++---------------
block/qcow2-snapshot.c | 105 ++++++++++++-
block/qcow2.c | 130 ++++++++++------
block/qcow2.h | 13 ++
7 files changed, 698 insertions(+), 172 deletions(-)
create mode 100644 block/qcow2-overlap.c
--
1.9.3
next reply other threads:[~2014-11-03 17:04 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-03 17:04 Max Reitz [this message]
2014-11-03 17:04 ` [Qemu-devel] [PATCH 01/12] qcow2: Add new overlap check functions Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 02/12] qcow2: Pull up overlap check option evaluation Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 03/12] qcow2: Create metadata list Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 04/12] qcow2/overlaps: Protect image header Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 05/12] qcow2/overlaps: Protect refcount table Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 06/12] qcow2/overlaps: Protect refcount blocks Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 07/12] qcow2/overlaps: Protect active L1 table Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 08/12] qcow2/overlaps: Protect active L2 tables Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 09/12] qcow2/overlaps: Protect snapshot table Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 10/12] qcow2/overlaps: Protect inactive L1 tables Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 11/12] qcow2/overlaps: Protect inactive L2 tables Max Reitz
2014-11-03 17:04 ` [Qemu-devel] [PATCH 12/12] qcow2: Use new metadata overlap check function Max Reitz
2014-11-03 17:06 ` [Qemu-devel] [PATCH 00/12] qcow2: Add new overlap check functions Max Reitz
2014-11-14 15:10 ` Max Reitz
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=1415034271-8774-1-git-send-email-mreitz@redhat.com \
--to=mreitz@redhat.com \
--cc=benoi.canet@nodalink.com \
--cc=kwolf@redhat.com \
--cc=pl@kamp.de \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/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).