diff options
author | Hanna Reitz <hreitz@redhat.com> | 2021-08-12 10:41:46 +0200 |
---|---|---|
committer | Hanna Reitz <hreitz@redhat.com> | 2021-09-15 15:54:07 +0200 |
commit | 869e7ee827ebf9392ed100119cc7e21a81311536 (patch) | |
tree | e4e86a0a773cdc782ba0f569ba8eccc19da03fda /block | |
parent | 5a1cfd2150596bddbf429f81097cbd8b861515c0 (diff) | |
download | qemu-869e7ee827ebf9392ed100119cc7e21a81311536.zip qemu-869e7ee827ebf9392ed100119cc7e21a81311536.tar.gz qemu-869e7ee827ebf9392ed100119cc7e21a81311536.tar.bz2 |
block/file-posix: Do not force-cap *pnum
bdrv_co_block_status() does it for us, we do not need to do it here.
The advantage of not capping *pnum is that bdrv_co_block_status() can
cache larger data regions than requested by its caller.
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20210812084148.14458-5-hreitz@redhat.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/file-posix.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/block/file-posix.c b/block/file-posix.c index cb9bffe..9f35e56 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -2744,7 +2744,8 @@ static int find_allocation(BlockDriverState *bs, off_t start, * the specified offset) that are known to be in the same * allocated/unallocated state. * - * 'bytes' is the max value 'pnum' should be set to. + * 'bytes' is a soft cap for 'pnum'. If the information is free, 'pnum' may + * well exceed it. */ static int coroutine_fn raw_co_block_status(BlockDriverState *bs, bool want_zero, @@ -2782,7 +2783,7 @@ static int coroutine_fn raw_co_block_status(BlockDriverState *bs, } else if (data == offset) { /* On a data extent, compute bytes to the end of the extent, * possibly including a partial sector at EOF. */ - *pnum = MIN(bytes, hole - offset); + *pnum = hole - offset; /* * We are not allowed to return partial sectors, though, so @@ -2801,7 +2802,7 @@ static int coroutine_fn raw_co_block_status(BlockDriverState *bs, } else { /* On a hole, compute bytes to the beginning of the next extent. */ assert(hole == offset); - *pnum = MIN(bytes, data - offset); + *pnum = data - offset; ret = BDRV_BLOCK_ZERO; } *map = offset; |