On Thu, Sep 08, 2022 at 09:45:26AM -0700, Keith Busch wrote: > From: Keith Busch <kbu...@kernel.org> > > An iov length needs to be aligned to the logical block size, which may > be larger than the memory alignment.
[cc'ing some other interested folks] Any thoughts on this patch? It is fixing an observed IO error when running virtio-blk with the default 512b logical block size backed by a drive formatted with 4k logical block. > --- > block/io.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/block/io.c b/block/io.c > index 0a8cbefe86..296d4b49a7 100644 > --- a/block/io.c > +++ b/block/io.c > @@ -3243,13 +3243,14 @@ 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; > } > } > -- > 2.30.2 >