On 2019-02-06 12:27, Stefano Garzarella wrote: > The size of data in the virtio_blk_request must be a multiple > of 512 bytes for IN and OUT requests, or a multiple of the size > of struct virtio_blk_discard_write_zeroes for DISCARD and > WRITE_ZEROES requests. > > Reviewed-by: Michael S. Tsirkin <m...@redhat.com> > Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> > Signed-off-by: Stefano Garzarella <sgarz...@redhat.com> > --- > tests/virtio-blk-test.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/tests/virtio-blk-test.c b/tests/virtio-blk-test.c > index 04c608764b..0739498da7 100644 > --- a/tests/virtio-blk-test.c > +++ b/tests/virtio-blk-test.c > @@ -144,7 +144,20 @@ static uint64_t virtio_blk_request(QGuestAllocator > *alloc, QVirtioDevice *d, > uint64_t addr; > uint8_t status = 0xFF; > > - g_assert_cmpuint(data_size % 512, ==, 0); > + switch (req->type) { > + case VIRTIO_BLK_T_IN: > + case VIRTIO_BLK_T_OUT: > + g_assert_cmpuint(data_size % 512, ==, 0); > + break; > + case VIRTIO_BLK_T_DISCARD: > + case VIRTIO_BLK_T_WRITE_ZEROES: > + g_assert_cmpuint(data_size % > + sizeof(struct virtio_blk_discard_write_zeroes), ==, > 0); > + break; > + default: > + g_assert_cmpuint(data_size, ==, 0); > + } > + > addr = guest_alloc(alloc, sizeof(*req) + data_size); > > virtio_blk_fix_request(d, req);
Reviewed-by: Thomas Huth <th...@redhat.com>