[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 12/12] block-backend: drop INT_MAX restriction from blk_check
From: |
Eric Blake |
Subject: |
Re: [PATCH 12/12] block-backend: drop INT_MAX restriction from blk_check_byte_request() |
Date: |
Wed, 6 Oct 2021 15:37:51 -0500 |
User-agent: |
NeoMutt/20210205-815-1dd940 |
On Wed, Oct 06, 2021 at 03:17:18PM +0200, Vladimir Sementsov-Ogievskiy wrote:
> blk_check_bytes_request is called from blk_co_do_preadv,
> blk_co_do_pwritev_part, blk_co_do_pdiscard and blk_co_copy_range
> before (maybe) calling throttle_group_co_io_limits_intercept() (which
> has int64_t argument) and then calling corresponding bdrv_co_ function.
> bdrv_co_ functions are OK with int64_t bytes as well.
>
> So dropping the check for INT_MAX we just get same restrictions as in
> bdrv_ layer: discard and write-zeroes goes through
> bdrv_check_qiov_request() and are allowed to be 64bit. Other requests
> go through bdrv_check_request32() and still restricted by INT_MAX
> boundary.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
> block/block-backend.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Deceptively short, but this is the one where a mistake would hurt.
Thankfully, I agree with your analysis that the call stack is still
checking 32-bit limits on read/write, and that discard/zero requests
can now go up to 63-bit sizing if everything else in the call stack is
ready; plus the fact that we are careful both in our drivers to
document actual limits (whether 32-bit or even smaller), and in the
block code to honor those limits (breaking larger requests into chunks
before reaching this far).
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
- Re: [PATCH 11/12] block-backend: blk_pread, blk_pwrite: rename count parameter to bytes, (continued)
- [PATCH 01/12] block-backend: blk_check_byte_request(): int64_t bytes, Vladimir Sementsov-Ogievskiy, 2021/10/06
- [PATCH 03/12] block-backend: convert blk_co_pwritev_part to int64_t bytes, Vladimir Sementsov-Ogievskiy, 2021/10/06
- [PATCH 02/12] block-backend: make blk_co_preadv() 64bit, Vladimir Sementsov-Ogievskiy, 2021/10/06
- [PATCH 04/12] block-backend: convert blk_co_pdiscard to int64_t bytes, Vladimir Sementsov-Ogievskiy, 2021/10/06
- [PATCH 12/12] block-backend: drop INT_MAX restriction from blk_check_byte_request(), Vladimir Sementsov-Ogievskiy, 2021/10/06
- Re: [PATCH 12/12] block-backend: drop INT_MAX restriction from blk_check_byte_request(),
Eric Blake <=
- [PATCH 05/12] block-backend: rename _do_ helper functions to _co_do_, Vladimir Sementsov-Ogievskiy, 2021/10/06
- [PATCH 06/12] block-coroutine-wrapper.py: support BlockBackend first argument, Vladimir Sementsov-Ogievskiy, 2021/10/06
- [PATCH 08/12] block-backend: convert blk_foo wrappers to use int64_t bytes parameter, Vladimir Sementsov-Ogievskiy, 2021/10/06
- [PATCH 07/12] block-backend: drop blk_prw, use block-coroutine-wrapper, Vladimir Sementsov-Ogievskiy, 2021/10/06
- [PATCH 09/12] block-backend: convert blk_co_copy_range to int64_t bytes, Vladimir Sementsov-Ogievskiy, 2021/10/06