On 07/14/2016 07:28 AM, Kevin Wolf wrote: > In order to remove the necessity to use BlockBackend names in the > external API, we want to allow node-names everywhere. This converts > block-stream to accept a node-name without lifting the restriction that > we're operating at a root node. > > In case of an invalid device name, the command returns the GenericError > error class now instead of DeviceNotFound, because this is what > qmp_get_root_bs() returns. > > Signed-off-by: Kevin Wolf <kw...@redhat.com> > --- > block/block-backend.c | 16 ++++++++++++++++ > blockdev.c | 32 ++++++++++++++++++++------------ > include/sysemu/block-backend.h | 1 + > qapi/block-core.json | 5 +---- > qmp-commands.hx | 2 +- > tests/qemu-iotests/030 | 2 +- > 6 files changed, 40 insertions(+), 18 deletions(-)
Reviewed-by: Eric Blake <ebl...@redhat.com> > > diff --git a/block/block-backend.c b/block/block-backend.c > index f9cea1b..4a00f8a 100644 > --- a/block/block-backend.c > +++ b/block/block-backend.c > @@ -410,6 +410,22 @@ bool bdrv_has_blk(BlockDriverState *bs) > } > > /* > + * Returns true if @bs has only BlockBackends as parents. > + */ > +bool bdrv_is_root_node(BlockDriverState *bs) > +{ > + BdrvChild *c; > + > + QLIST_FOREACH(c, &bs->parents, next_parent) { > + if (c->role != &child_root) { > + return false; > + } > + } > + > + return true; > +} I think you've settled on a good approach here. Thanks for persisting at it. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature