On 9/24/20 2:40 PM, Vladimir Sementsov-Ogievskiy wrote:
In order to reuse bdrv_common_block_status_above in
bdrv_is_allocated_above, let's support include_base parameter.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com>
Reviewed-by: Alberto Garcia <be...@igalia.com>
---
block/coroutines.h | 2 ++
block/io.c | 21 ++++++++++++++-------
2 files changed, 16 insertions(+), 7 deletions(-)
+++ b/block/io.c
@@ -2343,6 +2343,7 @@ early_out:
int coroutine_fn
bdrv_co_common_block_status_above(BlockDriverState *bs,
BlockDriverState *base,
+ bool include_base,
bool want_zero,
int64_t offset,
int64_t bytes,
@@ -2354,10 +2355,11 @@ bdrv_co_common_block_status_above(BlockDriverState *bs,
BlockDriverState *p;
int64_t eof = 0;
- assert(bs != base);
+ assert(include_base || bs != base);
+ assert(!include_base || base); /* Can't include NULL base */
I wonder if this would be easier to read as:
if (include_base) {
assert(bs != base);
} else {
assert(base); /* Can't include NULL base */
}
but I won't insist.
Reviewed-by: Eric Blake <ebl...@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org