aboutsummaryrefslogtreecommitdiff
path: root/block/file-posix.c
diff options
context:
space:
mode:
authorKeith Busch <kbusch@kernel.org>2022-09-29 13:05:23 -0700
committerKevin Wolf <kwolf@redhat.com>2022-09-30 18:43:44 +0200
commit25474d90aa50bd32e0de395a33d8de42dd6f2aef (patch)
treed2abedb0df4f2f1dfbf259d400980e53d33f0156 /block/file-posix.c
parenta7c5f67a78569f8c275ea4ea9962e9c79b9d03cb (diff)
block: use the request length for iov alignment
An iov length needs to be aligned to the logical block size, which may be larger than the memory alignment. Tested-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Keith Busch <kbusch@kernel.org> Message-Id: <20220929200523.3218710-3-kbusch@meta.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/file-posix.c')
-rw-r--r--block/file-posix.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/block/file-posix.c b/block/file-posix.c
index 989dfc4586..66fdb07820 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -2068,13 +2068,14 @@ static bool bdrv_qiov_is_aligned(BlockDriverState *bs, QEMUIOVector *qiov)
{
int i;
size_t alignment = bdrv_min_mem_align(bs);
+ size_t len = bs->bl.request_alignment;
IO_CODE();
for (i = 0; i < qiov->niov; i++) {
if ((uintptr_t) qiov->iov[i].iov_base % alignment) {
return false;
}
- if (qiov->iov[i].iov_len % alignment) {
+ if (qiov->iov[i].iov_len % len) {
return false;
}
}