[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v6 12/24] block: Convert bdrv_get_block_status_a
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-block] [PATCH v6 12/24] block: Convert bdrv_get_block_status_above() to bytes |
Date: |
Fri, 20 Oct 2017 17:34:05 +0200 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
Am 20.10.2017 um 17:22 hat Eric Blake geschrieben:
> On 10/20/2017 10:03 AM, Kevin Wolf wrote:
> > Am 12.10.2017 um 05:47 hat Eric Blake geschrieben:
> >> We are gradually moving away from sector-based interfaces, towards
> >> byte-based. In the common case, allocation is unlikely to ever use
> >> values that are not naturally sector-aligned, but it is possible
> >> that byte-based values will let us be more precise about allocation
> >> at the end of an unaligned file that can do byte-based access.
> >>
>
> >> int bdrv_block_status(BlockDriverState *bs, int64_t offset, int64_t bytes,
> >> int64_t *pnum, int64_t *map, BlockDriverState
> >> **file)
> >> {
> >> - int64_t ret;
> >> - int n;
> >> -
> >> - assert(QEMU_IS_ALIGNED(offset | bytes, BDRV_SECTOR_SIZE));
> >> - assert(pnum);
> >> - /*
> >> - * The contract allows us to return pnum smaller than bytes, even
> >> - * if the next query would see the same status; we truncate the
> >> - * request to avoid overflowing the driver's 32-bit interface.
> >> - */
> >> - bytes = MIN(bytes, BDRV_REQUEST_MAX_BYTES);
> >
> > Is the limitation to BDRV_REQUEST_MAX_BYTES going away without being
> > replaced by a new one in bdrv_co_block_status()? What protects us now
> > from 32-bit truncation?
>
> As of this patch, we have this 64-bit-clean call chain:
> bdrv_block_status()
> bdrv_block_status_above()
> bdrv_common_block_status_above()
> bdrv_block_status_above_co_entry()
> bdrv_co_block_status_above()
> bdrv_co_block_status()
>
> which in turn has:
> /*
> * The contract allows us to return pnum smaller than bytes, even
> * if the next query would see the same status; we truncate the
> * request to avoid overflowing the driver's 32-bit interface.
> */
> bytes = MIN(bytes, BDRV_REQUEST_MAX_BYTES);
>
> added earlier in 8/24.
>
> At the end of series 3, the truncation prevention is still in place when
> calling into the drivers, per the changes to bdrv_co_block_status() in
> 21/24.
I looked at the final state and missed it because now INT_MAX is used
rather than BDRV_REQUEST_MAX_BYTES. Anyway, seems to be okay then.
Kevin
signature.asc
Description: PGP signature
- Re: [Qemu-block] [PATCH v6 07/24] block: Convert bdrv_get_block_status() to bytes, (continued)
[Qemu-block] [PATCH v6 08/24] block: Switch bdrv_co_get_block_status() to byte-based, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 09/24] block: Switch BdrvCoGetBlockStatusData to byte-based, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 10/24] block: Switch bdrv_common_block_status_above() to byte-based, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 11/24] block: Switch bdrv_co_get_block_status_above() to byte-based, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 12/24] block: Convert bdrv_get_block_status_above() to bytes, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 13/24] qemu-img: Simplify logic in img_compare(), Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 15/24] qemu-img: Add find_nonzero(), Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 14/24] qemu-img: Speed up compare on pre-allocated larger file, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 16/24] qemu-img: Drop redundant error message in compare, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 17/24] qemu-img: Change check_empty_sectors() to byte-based, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 18/24] qemu-img: Change compare_sectors() to be byte-based, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 20/24] qemu-img: Change img_compare() to be byte-based, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 19/24] qemu-img: Change img_rebase() to be byte-based, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 22/24] block: Relax bdrv_aligned_preadv() assertion, Eric Blake, 2017/10/11
[Qemu-block] [PATCH v6 21/24] block: Align block status requests, Eric Blake, 2017/10/11