From: Kevin Wolf <kwolf@redhat.com>
To: qemu-devel@nongnu.org
Cc: stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH 19/19] qcow2: Gather clusters in a looping loop
Date: Mon, 25 Mar 2013 19:48:58 +0100 [thread overview]
Message-ID: <20130325184858.GC24866@dhcp-200-207.str.redhat.com> (raw)
In-Reply-To: <1364232620-5293-20-git-send-email-kwolf@redhat.com>
Am 25.03.2013 um 18:30 hat Kevin Wolf geschrieben:
> Instead of just checking once in exactly this order if there are
> dependendies, non-COW clusters and new allocation, this starts looping
> around these. This way we can, for example, gather non-COW clusters after
> new allocations as long as the host cluster offsets stay contiguous.
>
> Once handle_dependencies() is extended so that COW areas of in-flight
> allocations can be overwritten, this allows to continue with gathering
> other clusters (we wouldn't be able to do that without this change
> because we would have missed a possible second dependency in one of the
> next clusters).
>
> This means that in the typical sequential write case, we can combine the
> COW overwrite of one cluster with the allocation of the next cluster as
> soon as something like Delayed COW gets actually implemented. It is only
> by avoiding splitting requests this way that Delayed COW actually starts
> improving performance noticably.
>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Self NAK.
> @@ -1159,9 +1178,12 @@ again:
> * the right synchronisation between the in-flight request and
> * the new one.
> */
> - cur_bytes = remaining;
> ret = handle_dependencies(bs, start, &cur_bytes);
> if (ret == -EAGAIN) {
> + /* Currently handle_dependencies() doesn't yield if we already had
> + * an allocation. If it did, we would have to clean up the L2Meta
> + * structs before starting over. */
> + assert(*m == NULL);
This assertion doesn't actually hold true. Reordering patches is
dangerous.
I also noticed that somewhere in the series I must introduce a
performance regression. This should serve as extra motivation for
reviewers - there is actually something to find!
Kevin
prev parent reply other threads:[~2013-03-25 18:49 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-25 17:30 [Qemu-devel] [PATCH 00/19] qcow2: Rework cluster allocation even more Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 01/19] qcow2: Fix "total clusters" number in bdrv_check Kevin Wolf
2013-03-25 18:54 ` Eric Blake
2013-03-25 17:30 ` [Qemu-devel] [PATCH 02/19] qcow2: Remove bogus unlock of s->lock Kevin Wolf
2013-03-25 19:01 ` Eric Blake
2013-03-25 17:30 ` [Qemu-devel] [PATCH 03/19] qcow2: Handle dependencies earlier Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 04/19] qcow2: Improve check for overlapping allocations Kevin Wolf
2013-03-25 19:08 ` Eric Blake
2013-03-25 17:30 ` [Qemu-devel] [PATCH 05/19] qcow2: Change handle_dependency to byte granularity Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 06/19] qcow2: Decouple cluster allocation from cluster reuse code Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 07/19] qcow2: Factor out handle_alloc() Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 08/19] qcow2: handle_alloc(): Get rid of nb_clusters parameter Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 09/19] qcow2: handle_alloc(): Get rid of keep_clusters parameter Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 10/19] qcow2: Finalise interface of handle_alloc() Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 11/19] qcow2: Clean up handle_alloc() Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 12/19] qcow2: Factor out handle_copied() Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 13/19] qcow2: handle_copied(): Get rid of nb_clusters parameter Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 14/19] qcow2: handle_copied(): Get rid of keep_clusters parameter Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 15/19] qcow2: handle_copied(): Implement non-zero host_offset Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 16/19] qcow2: Use byte granularity in qcow2_alloc_cluster_offset() Kevin Wolf
2013-03-25 19:50 ` Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 17/19] qcow2: Allow requests with multiple l2metas Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 18/19] qcow2: Move cluster gathering to a non-looping loop Kevin Wolf
2013-03-25 17:30 ` [Qemu-devel] [PATCH 19/19] qcow2: Gather clusters in a looping loop Kevin Wolf
2013-03-25 18:48 ` Kevin Wolf [this message]
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=20130325184858.GC24866@dhcp-200-207.str.redhat.com \
--to=kwolf@redhat.com \
--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).