[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/3] block: Support streaming to an intermediate
From: |
Alberto Garcia |
Subject: |
Re: [Qemu-devel] [PATCH 1/3] block: Support streaming to an intermediate layer |
Date: |
Thu, 12 Mar 2015 14:18:35 +0100 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
(Ccing Markus and Jeff as suggested)
On Thu, Mar 05, 2015 at 03:04:25PM +0100, Kevin Wolf wrote:
> My question is whether we can't simply call stream_start() with an
> intermediate node as bs instead of introducing a new parameter. I'm
> not completely sure about the consequences of 3., i.e. moving
> ownership of a block job to some BDS somewhere down the chain, but
> otherwise it should be possible and seems cleaner.
I would like to get some feedback about how to properly block jobs
during a block streaming operation to an intermediate node.
So let's suppose we have a graph like this:
[A] <- [B] <- [C] <- [D] <- [E] <- [F]
[F] is the active layer, and to its left is the chain of backing
files.
So if we stream from [B] (base) to [D] (top) this is the result:
[A] <- [B] <- [D] <- [E] <- [F]
The idea is that the block job would be owned by the node that is
receiving the data ([D] in this example) so other operations would
still be allowed in other parts of the chain. I would also update
query-block-jobs so it would return jobs owned by inner nodes, not
just the ones at the root (there's still the issue of how to refer to
those nodes, yesterday I wrote a separate e-mail about that).
During this process we would block all operations involving any node
between base and top ([C] in this example):
- Streaming from [D] to [F] would be allowed.
- Streaming from [A], [B] or [C] would not be allowed.
- Streaming with no base would not be allowed either.
Are those assumptions correct? What would we do if part of the chain
is shared, like in this case?
[A] <- [B] <- [C] <- [D] <- [E] <- [F]
^
\
[G] <- [H] <- [I] <- [J]
Berto