diff options
| author | Eric Blake | 2017-10-12 05:47:19 +0200 |
|---|---|---|
| committer | Kevin Wolf | 2017-10-26 14:45:57 +0200 |
| commit | 8cbf74b23cafd1bcee5fdef769f8e94ace43935f (patch) | |
| tree | 12d75d78b97511b0497f10893a6eeeb5b4eee810 /block | |
| parent | block: Reduce bdrv_aligned_preadv() rounding (diff) | |
| download | qemu-8cbf74b23cafd1bcee5fdef769f8e94ace43935f.tar.gz qemu-8cbf74b23cafd1bcee5fdef769f8e94ace43935f.tar.xz qemu-8cbf74b23cafd1bcee5fdef769f8e94ace43935f.zip | |
qcow2: Reduce is_zero() rounding
Now that bdrv_is_allocated accepts non-aligned inputs, we can
remove the TODO added in earlier refactoring.
Signed-off-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block')
| -rw-r--r-- | block/qcow2.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/block/qcow2.c b/block/qcow2.c index 29d0a50955..fbf9464d3a 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -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; } |
