Am 30.08.2017 um 23:05 hat Eric Blake geschrieben:
> This is new code, but it is easier to read if it makes passes over
> the image using bytes rather than sectors (and will get easier in
> the future when bdrv_get_block_status is converted to byte-based).
> 
> Signed-off-by: Eric Blake <ebl...@redhat.com>
> Reviewed-by: John Snow <js...@redhat.com>
> 
> ---
> v6: separate bug fix to earlier patch
> v5: new patch
> ---
>  block/qcow2.c | 22 ++++++++++------------
>  1 file changed, 10 insertions(+), 12 deletions(-)
> 
> diff --git a/block/qcow2.c b/block/qcow2.c
> index 40ba26c111..57e3c5e7d5 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -3666,20 +3666,19 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts 
> *opts, BlockDriverState *in_bs,
>               */
>              required = virtual_size;
>          } else {
> -            int cluster_sectors = cluster_size / BDRV_SECTOR_SIZE;
> -            int64_t sector_num;
> +            int64_t offset;
>              int pnum = 0;
> 
> -            for (sector_num = 0;
> -                 sector_num < ssize / BDRV_SECTOR_SIZE;
> -                 sector_num += pnum) {
> -                int nb_sectors = MIN(ssize / BDRV_SECTOR_SIZE - sector_num,
> -                                     BDRV_REQUEST_MAX_SECTORS);
> +            for (offset = 0; offset < ssize;
> +                 offset += pnum * BDRV_SECTOR_SIZE) {
> +                int nb_sectors = MIN(ssize - offset,
> +                                     INT_MAX) / BDRV_SECTOR_SIZE;

Shouldn't this be BDRV_REQUEST_MAX_BYTES? (Which is close to INT_MAX,
but rounded down to sector alignment.)

Kevin

Reply via email to