From: "Benoît Canet" <benoit.canet@nodalink.com>
To: Jeff Cody <jcody@redhat.com>
Cc: kwolf@redhat.com, stefanha@redhat.com, qemu-devel@nongnu.org,
"Benoît Canet" <benoit.canet@nodalink.com>
Subject: Re: [Qemu-devel] [PATCH 0/2] Handle interferences between multiple children drivers and stream and commit
Date: Fri, 19 Sep 2014 14:08:52 +0000 [thread overview]
Message-ID: <20140919140852.GA8433@nodalink.com> (raw)
In-Reply-To: <20140919043536.GC3813@localhost.localdomain>
On Fri, Sep 19, 2014 at 12:35:36AM -0400, Jeff Cody wrote:
> On Mon, Sep 15, 2014 at 04:21:18PM +0200, Benoît Canet wrote:
> > We do not want to try to stream or commit with a base argument through
> > a multiple children driver.
> >
> > Handle this case.
> >
> > Benoît Canet (2):
> > block: Introduce a BlockDriver field to flag drivers supporting
> > multiple children
> > block: commit and stream return an error when a subtree is found
> >
> > block.c | 17 +++++++++++++++--
> > block/blkverify.c | 1 +
> > block/quorum.c | 1 +
> > block/vmdk.c | 1 +
> > blockdev.c | 18 ++++++++++++------
> > include/block/block.h | 3 ++-
> > include/block/block_int.h | 6 ++++++
> > 7 files changed, 38 insertions(+), 9 deletions(-)
> >
> > --
> > 2.1.0
> >
>
>
> I had some specific comments on the implementation, but once I stepped
> back some I am not sure this series is needed.
>
> When we talked on irc, you mentioned it was needed because your
> recursive blocker code would assert in quorum/blkverify/vmdk - but I
> think that might mean the recursive code needs refactoring.
>
> Here is why I am not sure this is needed: we should be able to commit
> through/to an image that has multiple child nodes, if we can treat
> that image as an actual BDS.
>
> I view these as a black box, like so:
>
> (imageE)
> ------------
> | [childA] |
> | [childB] |
> [base] <---- | | <----- [imageF] <--- [active]
> | [childC] |
> ^ | [childD] |
> | ------------
> |
> |
> (Perhaps base isn't support by the format, in which case it will always
> be NULL anyway)
>
>
> ImageE may have multiple children (and perhaps each of those children
> are an entire chain themselves), but ultimately imageE is a 'BDS'
> entry.
>
> Perhaps the format, like quorum, will not have a backing_hd pointer.
> But in that case, backing_hd will be NULL.
>
> Thinking about your recursive blocker code, why assert when the 'base'
> termination argument is NULL? If the multi-child format does not
> support a backing_hd, then bdrv_find_base_image() will just find it as
> the end.
>
> The .bdrv_op_recursive_block() in that case could still navigate down
> each private child node, because if the original 'base' blocker
> applied to the multi-child parent (imageE), then that same blocker
> should apply to each private child (and their children), regardless of
> 'base' - because they are essentially part of the pseudo-atomic entity
> of (imageE).
>
> Does this make sense, or am I missing a piece?
Thanks for the reply Jeff.
I think I'll drop the entry I CCed you, remove the assert then work to post
the new recursive blocker code.
Best regards
Benoît
>
> Thanks,
> Jeff
>
prev parent reply other threads:[~2014-09-19 14:09 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-15 14:21 [Qemu-devel] [PATCH 0/2] Handle interferences between multiple children drivers and stream and commit Benoît Canet
2014-09-15 14:21 ` [Qemu-devel] [PATCH 1/2] block: Introduce a BlockDriver field to flag drivers supporting multiple children Benoît Canet
2014-09-15 14:21 ` [Qemu-devel] [PATCH 2/2] block: commit and stream return an error when a subtree is found Benoît Canet
2014-09-19 4:35 ` [Qemu-devel] [PATCH 0/2] Handle interferences between multiple children drivers and stream and commit Jeff Cody
2014-09-19 14:08 ` Benoît Canet [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=20140919140852.GA8433@nodalink.com \
--to=benoit.canet@nodalink.com \
--cc=jcody@redhat.com \
--cc=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).