]> git.proxmox.com Git - mirror_qemu.git/commitdiff
block: use the request length for iov alignment
authorKeith Busch <kbusch@kernel.org>
Thu, 29 Sep 2022 20:05:23 +0000 (13:05 -0700)
committerKevin Wolf <kwolf@redhat.com>
Fri, 30 Sep 2022 16:43:44 +0000 (18:43 +0200)
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>
block/file-posix.c

index 989dfc4586c2dbdf5e7b6d4a977b0e2e819195a4..66fdb07820c01fc0df29d9eede506af2d6b6a870 100644 (file)
@@ -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;
         }
     }