aboutsummaryrefslogtreecommitdiff
path: root/tests/virtio-blk-test.c
diff options
context:
space:
mode:
authorStefano Garzarella <sgarzare@redhat.com>2019-02-21 11:33:11 +0100
committerStefan Hajnoczi <stefanha@redhat.com>2019-02-22 09:42:17 +0000
commitf6cd8a6366d6bad4a557616a5f70c6d2e374b8c1 (patch)
tree5ec723bbe25a086b001dc76b768b8cfc78673167 /tests/virtio-blk-test.c
parent37b06f8d46fe602e630e4bdce24e80a3e0f70cc2 (diff)
downloadqemu-f6cd8a6366d6bad4a557616a5f70c6d2e374b8c1.zip
qemu-f6cd8a6366d6bad4a557616a5f70c6d2e374b8c1.tar.gz
qemu-f6cd8a6366d6bad4a557616a5f70c6d2e374b8c1.tar.bz2
tests/virtio-blk: change assert on data_size in virtio_blk_request()
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 <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Message-id: 20190221103314.58500-8-sgarzare@redhat.com Message-Id: <20190221103314.58500-8-sgarzare@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'tests/virtio-blk-test.c')
-rw-r--r--tests/virtio-blk-test.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/virtio-blk-test.c b/tests/virtio-blk-test.c
index 04c6087..0739498 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);