Skip to content

Commit

Permalink
block: Fix harmless off-by-one in bdrv_aligned_preadv()
Browse files Browse the repository at this point in the history
If the amount of data to read ends exactly on the total size
of the bs, then we were wasting time creating a local qiov
to read the data in preparation for what would normally be
appending zeroes beyond the end, even though this corner case
has nothing further to do.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
ebblake authored and kevmw committed Jul 5, 2016
1 parent a604fa2 commit 8252427
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion block/io.c
Expand Up @@ -1036,7 +1036,7 @@ static int coroutine_fn bdrv_aligned_preadv(BlockDriverState *bs,
}

max_bytes = ROUND_UP(MAX(0, total_bytes - offset), align);
if (bytes < max_bytes) {
if (bytes <= max_bytes) {
ret = bdrv_driver_preadv(bs, offset, bytes, qiov, 0);
} else if (max_bytes > 0) {
QEMUIOVector local_qiov;
Expand Down

0 comments on commit 8252427

Please sign in to comment.