[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 04/23] qcow2: Switch is_zero_sectors() to byt
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v5 04/23] qcow2: Switch is_zero_sectors() to byte-based |
Date: |
Tue, 10 Oct 2017 09:47:31 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
On 10/10/2017 09:15 AM, Kevin Wolf wrote:
> Am 04.10.2017 um 04:00 hat Eric Blake geschrieben:
>> We are gradually converting to byte-based interfaces, as they are
>> easier to reason about than sector-based. Convert another internal
>> function (no semantic change), and rename it to is_zero() in the
>> process.
>>
>> Signed-off-by: Eric Blake <address@hidden>
>> Reviewed-by: Fam Zheng <address@hidden>
>> Reviewed-by: John Snow <address@hidden>
>>
>> +static bool is_zero(BlockDriverState *bs, int64_t offset, int64_t bytes)
>> {
>> int nr;
>> int64_t res;
>> + int64_t start;
>>
>> - if (start + count > bs->total_sectors) {
>> - count = bs->total_sectors - start;
>> + /* Widen to sector boundaries, then clamp to image length, before
>> + * checking status of underlying sectors */
>> + start = QEMU_ALIGN_DOWN(offset, BDRV_SECTOR_SIZE);
>> + bytes = QEMU_ALIGN_UP(offset + bytes, BDRV_SECTOR_SIZE) - start;
>
> Why do we still widen to sector boundaries after this series is fully
> applied? Isn't the whole point that we don't have to do this any more?
The widening is necessary as long as...
>> + res = bdrv_get_block_status_above(bs, NULL, start >> BDRV_SECTOR_BITS,
>> + bytes >> BDRV_SECTOR_BITS, &nr, NULL);
we still shift. But you are right; patch 12/23 should be able to drop
the rounding. I'll double check that it still works, but assuming that
it does, v6 will include that cleanup.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v5 00/23] make bdrv_get_block_status byte-based, Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 02/23] block: Add flag to avoid wasted work in bdrv_is_allocated(), Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 01/23] block: Allow NULL file for bdrv_get_block_status(), Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 03/23] block: Make bdrv_round_to_clusters() signature more useful, Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 04/23] qcow2: Switch is_zero_sectors() to byte-based, Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 05/23] block: Switch bdrv_make_zero() to byte-based, Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 06/23] qemu-img: Switch get_block_status() to byte-based, Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 08/23] block: Switch bdrv_co_get_block_status() to byte-based, Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 07/23] block: Convert bdrv_get_block_status() to bytes, Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 10/23] block: Switch bdrv_common_block_status_above() to byte-based, Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 11/23] block: Switch bdrv_co_get_block_status_above() to byte-based, Eric Blake, 2017/10/03
- [Qemu-devel] [PATCH v5 09/23] block: Switch BdrvCoGetBlockStatusData to byte-based, Eric Blake, 2017/10/03