From 3404e1bd276f1fe8364f880b88fa90829291e61d Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Fri, 22 Aug 2014 13:16:36 +0200 Subject: block: use bdrv_nb_sectors in bdrv_is_allocated_above The difference is that bdrv_nb_sectors() may do a lookup for variable-sized disks. This gets rid of another direct user of total_sectors. Signed-off-by: Peter Wu --- block.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/block.c b/block.c index 2d003f0584..8a17ba22d6 100644 --- a/block.c +++ b/block.c @@ -4144,6 +4144,7 @@ int bdrv_is_allocated_above(BlockDriverState *top, intermediate = top; while (intermediate && intermediate != base) { int pnum_inter; + int64_t total_sectors; ret = bdrv_is_allocated(intermediate, sector_num, nb_sectors, &pnum_inter); if (ret < 0) { @@ -4153,6 +4154,11 @@ int bdrv_is_allocated_above(BlockDriverState *top, return 1; } + total_sectors = bdrv_nb_sectors(intermediate); + if (total_sectors < 0) { + return (int) total_sectors; + } + /* * [sector_num, nb_sectors] is unallocated on top but intermediate * might have @@ -4161,7 +4167,7 @@ int bdrv_is_allocated_above(BlockDriverState *top, */ if (n > pnum_inter && (intermediate == top || - sector_num + pnum_inter < intermediate->total_sectors)) { + sector_num + pnum_inter < total_sectors)) { n = pnum_inter; } -- cgit v1.2.1