Loading block/qcow2.c +3 −9 Original line number Diff line number Diff line Loading @@ -2976,22 +2976,16 @@ static bool is_zero(BlockDriverState *bs, int64_t offset, int64_t bytes) { int64_t nr; int res; int64_t start; /* TODO: Widening to sector boundaries should only be needed as * long as we can't query finer granularity. */ start = QEMU_ALIGN_DOWN(offset, BDRV_SECTOR_SIZE); bytes = QEMU_ALIGN_UP(offset + bytes, BDRV_SECTOR_SIZE) - start; /* Clamp to image length, before checking status of underlying sectors */ if (start + bytes > bs->total_sectors * BDRV_SECTOR_SIZE) { bytes = bs->total_sectors * BDRV_SECTOR_SIZE - start; if (offset + bytes > bs->total_sectors * BDRV_SECTOR_SIZE) { bytes = bs->total_sectors * BDRV_SECTOR_SIZE - offset; } if (!bytes) { return true; } res = bdrv_block_status_above(bs, NULL, start, bytes, &nr, NULL, NULL); res = bdrv_block_status_above(bs, NULL, offset, bytes, &nr, NULL, NULL); return res >= 0 && (res & BDRV_BLOCK_ZERO) && nr == bytes; } Loading Loading
block/qcow2.c +3 −9 Original line number Diff line number Diff line Loading @@ -2976,22 +2976,16 @@ static bool is_zero(BlockDriverState *bs, int64_t offset, int64_t bytes) { int64_t nr; int res; int64_t start; /* TODO: Widening to sector boundaries should only be needed as * long as we can't query finer granularity. */ start = QEMU_ALIGN_DOWN(offset, BDRV_SECTOR_SIZE); bytes = QEMU_ALIGN_UP(offset + bytes, BDRV_SECTOR_SIZE) - start; /* Clamp to image length, before checking status of underlying sectors */ if (start + bytes > bs->total_sectors * BDRV_SECTOR_SIZE) { bytes = bs->total_sectors * BDRV_SECTOR_SIZE - start; if (offset + bytes > bs->total_sectors * BDRV_SECTOR_SIZE) { bytes = bs->total_sectors * BDRV_SECTOR_SIZE - offset; } if (!bytes) { return true; } res = bdrv_block_status_above(bs, NULL, start, bytes, &nr, NULL, NULL); res = bdrv_block_status_above(bs, NULL, offset, bytes, &nr, NULL, NULL); return res >= 0 && (res & BDRV_BLOCK_ZERO) && nr == bytes; } Loading