All of lore.kernel.org
 help / color / mirror / Atom feed
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
> 

      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 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.