Message ID | 20190809161407.11920-11-mreitz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: Deal with filters | expand |
09.08.2019 19:13, 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> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
diff --git a/include/block/block.h b/include/block/block.h index f6f09b95cd..9cfe77abaf 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -487,7 +487,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 650c00d182..415c555bf5 100644 --- a/block.c +++ b/block.c @@ -4696,14 +4696,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 15f1030264..9a185cba48 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -281,7 +281,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; }
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(-)