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
