On 25.06.2020 18:21, Max Reitz wrote:
> The original purpose of bdrv_is_encrypted() was to inquire whether a BDS
> can be used without the user entering a password or not. It has not
> been used for that purpose for quite some time.
>
> Actually, it is not even fit for that purpose, because to answer that
> question, it would have recursively query all of the given node's
> children.
>
> So now we have to decide in which direction we want to fix
> bdrv_is_encrypted(): Recursively query all children, or drop it and just
> use bs->encrypted to get the current node's status?
>
> Nowadays, its only purpose is to report through bdrv_query_image_info()
> whether the given image is encrypted or not. For this purpose, it is
> probably more interesting to see whether a given node itself is
> encrypted or not (otherwise, a management application cannot discern for
> certain which nodes are really encrypted and which just have encrypted
> children).
>
> Suggested-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
> include/block/block.h | 1 -
> block.c | 8 --------
> block/qapi.c | 2 +-
> 3 files changed, 1 insertion(+), 10 deletions(-)
>
> diff --git a/include/block/block.h b/include/block/block.h
> index 86f9728f00..0080fe1311 100644
> --- a/include/block/block.h
> +++ b/include/block/block.h
> @@ -538,7 +538,6 @@ BlockDriverState *bdrv_next(BdrvNextIterator *it);
> void bdrv_next_cleanup(BdrvNextIterator *it);
>
> BlockDriverState *bdrv_next_monitor_owned(BlockDriverState *bs);
> -bool bdrv_is_encrypted(BlockDriverState *bs);
> void bdrv_iterate_format(void (*it)(void *opaque, const char *name),
> void *opaque, bool read_only);
> const char *bdrv_get_node_name(const BlockDriverState *bs);
> diff --git a/block.c b/block.c
> index b59bd776cd..76277ea4e0 100644
> --- a/block.c
> +++ b/block.c
> @@ -5044,14 +5044,6 @@ bool bdrv_is_sg(BlockDriverState *bs)
> return bs->sg;
> }
>
> -bool bdrv_is_encrypted(BlockDriverState *bs)
> -{
> - if (bs->backing && bs->backing->bs->encrypted) {
> - return true;
> - }
> - return bs->encrypted;
> -}
> -
> const char *bdrv_get_format_name(BlockDriverState *bs)
> {
> return bs->drv ? bs->drv->format_name : NULL;
> diff --git a/block/qapi.c b/block/qapi.c
> index afd9f3b4a7..4807a2b344 100644
> --- a/block/qapi.c
> +++ b/block/qapi.c
> @@ -288,7 +288,7 @@ void bdrv_query_image_info(BlockDriverState *bs,
> info->virtual_size = size;
> info->actual_size = bdrv_get_allocated_file_size(bs);
> info->has_actual_size = info->actual_size >= 0;
> - if (bdrv_is_encrypted(bs)) {
> + if (bs->encrypted) {
> info->encrypted = true;
> info->has_encrypted = true;
> }
Reviewed-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>