On Mon, Oct 02, 2017 at 05:32:52PM +0200, Kevin Wolf wrote: > Am 02.10.2017 um 17:01 hat Kashyap Chamarthy geschrieben: > > On Tue, Sep 26, 2017 at 07:59:42PM +0200, Kevin Wolf wrote:
[...] > > { > > "execute": "block-commit", > > "arguments": { > > "device": "node-D", > > "job-id": "job0", > > "top": "d.qcow2", > > "base": "a.qcow2" > > } > > } > > > > So when merging the top-most layer (D), there's at least one > > scenario where we _are_ specifying the "active layer". And 'top' > > _is_ mandatory as seen above. > > > > So I wonder if I'm misinterpreting your wording. > > The point is that you specify both "device" and "top". There is no real > use in specifying "device", because "top" already identifies the node. > (Of course, file names aren't a good way to identify nodes, so the > assumption is that they are replaced by node names.) Ah, thanks. Now I recall that the existing `block-commit` is the only command (among mirror, backup, stream, and commit) that doesn't yet support 'node-name' / 'snapshot-node-name'. Hence your proposal, to bring it more in-line w/ blockdev-{mirror,backup}, and `block-stream`[*] (which accepts 'base-node', and its "device" parameter takes a named node). [*] https://lists.gnu.org/archive/html/qemu-block/2017-05/msg01230.html > In the active commit case, it is just duplicated information, but in the > case of an intermediate commit, it is additional information that needs > to be provided without good reason. It's clearer now, thank you. > > (2) Also, just for my own education, can you mind expanding a bit more > > about the "there can be more than one active layer" scenario? > > Something like this, C is the backing file of both D and E: > > > +--- D > | > A <- B <- C <---+ > | > +--- E > > I want to commit C into B. But do I specify D or E as the active layer? > They are both active layers above C. Ah-ha, yes, it's the "thin provisoning" case. Thanks for the explanation. -- /kashyap