mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
block: Switch transfer length bounds to byte-based
Sector-based limits are awkward to think about; in our on-going quest to move to byte-based interfaces, convert max_transfer_length and opt_transfer_length. Rename them (dropping the _length suffix) so that the compiler will help us catch the change in semantics across any rebased code, and improve the documentation. Use unsigned values, so that we don't have to worry about negative values and so that bit-twiddling is easier; however, we are still constrained by 2^31 of signed int in most APIs. When a value comes from an external source (iscsi and raw-posix), sanitize the results to ensure that opt_transfer is a power of 2. Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
79ba8c986a
commit
5def6b80e1
10 changed files with 57 additions and 47 deletions
|
@ -1303,16 +1303,16 @@ int blk_get_flags(BlockBackend *blk)
|
|||
}
|
||||
}
|
||||
|
||||
/* Returns the maximum transfer length, in sectors; guaranteed nonzero */
|
||||
int blk_get_max_transfer_length(BlockBackend *blk)
|
||||
/* Returns the maximum transfer length, in bytes; guaranteed nonzero */
|
||||
uint32_t blk_get_max_transfer(BlockBackend *blk)
|
||||
{
|
||||
BlockDriverState *bs = blk_bs(blk);
|
||||
int max = 0;
|
||||
uint32_t max = 0;
|
||||
|
||||
if (bs) {
|
||||
max = bs->bl.max_transfer_length;
|
||||
max = bs->bl.max_transfer;
|
||||
}
|
||||
return MIN_NON_ZERO(max, BDRV_REQUEST_MAX_SECTORS);
|
||||
return MIN_NON_ZERO(max, INT_MAX);
|
||||
}
|
||||
|
||||
int blk_get_max_iov(BlockBackend *blk)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue