On Thu, Jul 20, 2017 at 15:11:54 +0200, Kevin Wolf wrote: > Commits 0db832f and 6cdbceb introduced the automatic insertion of filter > nodes above the top layer of mirror and commit block jobs. The > assumption made there was that since libvirt doesn't do node-level > management of the block layer yet, it shouldn't be affected by added > nodes. > > This is true as far as commands issued by libvirt are concerned. It only > uses BlockBackend names to address nodes, so any operations it performs > still operate on the root of the tree as intended. > > However, the assumption breaks down when you consider query commands, > which return data for the wrong node now. These commands also return > information on some child nodes (bs->file and/or bs->backing), which > libvirt does make use of, and which refer to the wrong nodes, too. > > One of the consequences is that oVirt gets wrong information about the > image size and stops the VM in response as long as a mirror or commit > job is running: > > https://bugzilla.redhat.com/show_bug.cgi?id=1470634 > > This patch fixes the problem by hiding the implicit nodes created > automatically by the mirror and commit block jobs in the output of > query-block and BlockBackend-based query-blockstats as long as the user > doesn't indicate that they are aware of those nodes by providing a node > name for them in the QMP command to start the block job. > > The node-based commands query-named-block-nodes and query-blockstats > with query-nodes=true still show all nodes, including implicit ones. > This ensures that users that are capable of node-level management can > still access the full information; users that only know BlockBackends > won't use these commands. > > Cc: [email protected] > Signed-off-by: Kevin Wolf <[email protected]> > --- > > v3: > - Fixed skipping during the recursion for query-block [Peter] > - Fixed backing_file_depth > - More thorough test case for mirror, added one for commit > > v2: > - Skip implicit nodes not only on the top level, but also during the recursive > calls [Peter] > - Spelling fix in the commit message [Manos] > > block.c | 13 ------------- > block/commit.c | 3 +++ > block/mirror.c | 3 +++ > block/qapi.c | 33 +++++++++++++++++++++++++++------ > include/block/block.h | 1 - > include/block/block_int.h | 1 + > qapi/block-core.json | 6 ++++-- > tests/qemu-iotests/040 | 30 +++++++++++++++++++++++++++++- > tests/qemu-iotests/040.out | 4 ++-- > tests/qemu-iotests/041 | 38 +++++++++++++++++++++++++++++++++++++- > tests/qemu-iotests/041.out | 4 ++-- > 11 files changed, 108 insertions(+), 28 deletions(-)
Reviewed-by: Peter Krempa <[email protected]>
signature.asc
Description: PGP signature
