Markus Armbruster <arm...@redhat.com> writes: > Instead of bdrv_nb_sectors(). > > Aside: a few of these callers don't handle errors. I didn't > investigate whether they should. > > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- [...] > diff --git a/block.c b/block.c > index 44e1f57..1b99cb1 100644 > --- a/block.c > +++ b/block.c [...] > @@ -3848,21 +3845,21 @@ static int64_t coroutine_fn > bdrv_co_get_block_status(BlockDriverState *bs, > int64_t sector_num, > int nb_sectors, int > *pnum) > { > - int64_t length; > + int64_t total_sectors; > int64_t n; > int64_t ret, ret2; > > - length = bdrv_getlength(bs); > - if (length < 0) { > - return length; > + total_sectors = bdrv_getlength(bs); > + if (total_sectors < 0) { > + return total_sectors; > } > > - if (sector_num >= (length >> BDRV_SECTOR_BITS)) { > + if (sector_num >= total_sectors) { > *pnum = 0; > return 0; > } > > - n = bs->total_sectors - sector_num; > + n = total_sectors - sector_num; > if (n < nb_sectors) { > nb_sectors = n; > } > @@ -3893,8 +3890,8 @@ static int64_t coroutine_fn > bdrv_co_get_block_status(BlockDriverState *bs, > ret |= BDRV_BLOCK_ZERO; > } else if (bs->backing_hd) { > BlockDriverState *bs2 = bs->backing_hd; > - int64_t length2 = bdrv_getlength(bs2); > - if (length2 >= 0 && sector_num >= (length2 >> BDRV_SECTOR_BITS)) > { > + int64_t nb_sectors2 = bdrv_getlength(bs2); > + if (nb_sectors2 >= 0 && sector_num >= nb_sectors2) { > ret |= BDRV_BLOCK_ZERO; > } > } [...]
I neglected to actually replace bdrv_getlength() by bdrv_nb_sectors() here, breaking test 030 (I forgot that make check-block doesn't run all the tests). With that fixed, the tests pass. Full respin wanted?