[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZE
From: |
Thomas Huth |
Subject: |
Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command |
Date: |
Fri, 25 Jan 2019 07:07:35 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 2019-01-25 07:01, Thomas Huth wrote:
> On 2019-01-24 18:23, Stefano Garzarella wrote:
>> If the WRITE_ZEROES feature is enabled, we check this
>> command in the test_basic().
>>
>> Signed-off-by: Stefano Garzarella <address@hidden>
>> ---
>> tests/virtio-blk-test.c | 63 +++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 63 insertions(+)
>>
>> diff --git a/tests/virtio-blk-test.c b/tests/virtio-blk-test.c
>> index 04c608764b..8cabbcb85a 100644
>> --- a/tests/virtio-blk-test.c
>> +++ b/tests/virtio-blk-test.c
>> @@ -231,6 +231,69 @@ static void test_basic(QVirtioDevice *dev,
>> QGuestAllocator *alloc,
>>
>> guest_free(alloc, req_addr);
>>
>> + if (features & (1u << VIRTIO_BLK_F_WRITE_ZEROES)) {
>> + struct virtio_blk_discard_write_zeroes *dwz_hdr;
>> + void *expected;
>> +
>> + /*
>> + * WRITE_ZEROES request on the same sector of previous test where
>> + * we wrote "TEST".
>> + */
>> + req.type = VIRTIO_BLK_T_WRITE_ZEROES;
>> + req.data = g_malloc0(512);
>
> Wouldn't it be more interesting to do a memset(req.data, 0xaa, 512) or
> something similar here, to see whether zeroes or 0xaa is written?
Ah, never mind, I thought req.data would be a sector buffer here, but
looking at the lines below, it apparently is something different.
Why do you allocate 512 bytes here? I'd rather expect
g_malloc0(sizeof(struct virtio_blk_discard_write_zeroes)) here. ... and
then you could also use a local "struct virtio_blk_discard_write_zeroes
dwz_hdr" variable instead of a pointer, and drop the g_malloc0() completely?
>> + dwz_hdr = (struct virtio_blk_discard_write_zeroes *)req.data;
>> + dwz_hdr->sector = 0;
>> + dwz_hdr->num_sectors = 1;
>> + dwz_hdr->flags = 0;
>> +
>> + req_addr = virtio_blk_request(alloc, dev, &req, 512);
>> +
>> + g_free(req.data);
>> +
>> + free_head = qvirtqueue_add(vq, req_addr, 16, false, true);
>> + qvirtqueue_add(vq, req_addr + 16, 512, false, true);
>> + qvirtqueue_add(vq, req_addr + 528, 1, true, false);
>> +
>> + qvirtqueue_kick(dev, vq, free_head);
>> +
>> + qvirtio_wait_used_elem(dev, vq, free_head, NULL,
>> + QVIRTIO_BLK_TIMEOUT_US);
>> + status = readb(req_addr + 528);
>> + g_assert_cmpint(status, ==, 0);
>> +
>> + guest_free(alloc, req_addr);
>> +
>> + /* Read request to check if the sector contains all zeroes */
>> + req.type = VIRTIO_BLK_T_IN;
>> + req.ioprio = 1;
>> + req.sector = 0;
>> + req.data = g_malloc0(512);
>> +
>> + req_addr = virtio_blk_request(alloc, dev, &req, 512);
>> +
>> + g_free(req.data);
>> +
>> + free_head = qvirtqueue_add(vq, req_addr, 16, false, true);
>> + qvirtqueue_add(vq, req_addr + 16, 512, true, true);
>> + qvirtqueue_add(vq, req_addr + 528, 1, true, false);
>> +
>> + qvirtqueue_kick(dev, vq, free_head);
>> +
>> + qvirtio_wait_used_elem(dev, vq, free_head, NULL,
>> + QVIRTIO_BLK_TIMEOUT_US);
>> + status = readb(req_addr + 528);
>> + g_assert_cmpint(status, ==, 0);
>> +
>> + data = g_malloc(512);
>> + expected = g_malloc0(512);
>> + memread(req_addr + 16, data, 512);
>> + g_assert_cmpmem(data, 512, expected, 512);
>> + g_free(expected);
>> + g_free(data);
>> +
>> + guest_free(alloc, req_addr);
>> + }
>> +
>> if (features & (1u << VIRTIO_F_ANY_LAYOUT)) {
>> /* Write and read with 2 descriptor layout */
>> /* Write request */
>>
>
>
- [Qemu-devel] [PATCH RFC 1/2] virtio-blk: add DISCARD and WRITE ZEROES features, (continued)
[Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Stefano Garzarella, 2019/01/24
- Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Thomas Huth, 2019/01/25
- Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Thomas Huth, 2019/01/25
- Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command,
Thomas Huth <=
- Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Stefano Garzarella, 2019/01/25
- Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Thomas Huth, 2019/01/25
- Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Liu, Changpeng, 2019/01/25
- Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Thomas Huth, 2019/01/25
- Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Michael S. Tsirkin, 2019/01/25
Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Stefan Hajnoczi, 2019/01/25
Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Michael S. Tsirkin, 2019/01/25
Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Stefan Hajnoczi, 2019/01/27
Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Michael S. Tsirkin, 2019/01/27
Re: [Qemu-devel] [PATCH RFC 2/2] tests/virtio-blk: add test for WRITE_ZEROES command, Stefan Hajnoczi, 2019/01/30