[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 04/10] tests: virtio-9p: wait for completion in th
From: |
Greg Kurz |
Subject: |
[Qemu-devel] [PULL v2 04/10] tests: virtio-9p: wait for completion in the test code |
Date: |
Fri, 2 Feb 2018 17:19:29 +0100 |
In order to test request cancellation, we will need to send multiple
requests and wait for the associated replies. Since we poll the ISR
to know if a request completed, we may have several replies to parse
when we detect ISR was set to 1.
This patch moves the waiting out of the reply parsing path, up into
the functional tests.
Signed-off-by: Greg Kurz <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
---
tests/virtio-9p-test.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/tests/virtio-9p-test.c b/tests/virtio-9p-test.c
index 5ada2839b9ae..cb086315a36e 100644
--- a/tests/virtio-9p-test.c
+++ b/tests/virtio-9p-test.c
@@ -246,13 +246,17 @@ static const char *rmessage_name(uint8_t id)
"<unknown>";
}
-static void v9fs_req_recv(P9Req *req, uint8_t id)
+static void v9fs_req_wait_for_reply(P9Req *req)
{
QVirtIO9P *v9p = req->v9p;
- P9Hdr hdr;
qvirtio_wait_used_elem(v9p->dev, v9p->vq, req->free_head,
QVIRTIO_9P_TIMEOUT_US);
+}
+
+static void v9fs_req_recv(P9Req *req, uint8_t id)
+{
+ P9Hdr hdr;
v9fs_memread(req, &hdr, 7);
hdr.size = ldl_le_p(&hdr.size);
@@ -398,6 +402,7 @@ static void fs_version(QVirtIO9P *v9p)
P9Req *req;
req = v9fs_tversion(v9p, P9_MAX_SIZE, version, P9_NOTAG);
+ v9fs_req_wait_for_reply(req);
v9fs_rversion(req, &server_len, &server_version);
g_assert_cmpmem(server_version, server_len, version, strlen(version));
@@ -411,6 +416,7 @@ static void fs_attach(QVirtIO9P *v9p)
fs_version(v9p);
req = v9fs_tattach(v9p, 0, getuid(), 0);
+ v9fs_req_wait_for_reply(req);
v9fs_rattach(req, NULL);
}
@@ -431,6 +437,7 @@ static void fs_walk(QVirtIO9P *v9p)
fs_attach(v9p);
req = v9fs_twalk(v9p, 0, 1, P9_MAXWELEM, wnames, 0);
+ v9fs_req_wait_for_reply(req);
v9fs_rwalk(req, &nwqid, &wqid);
g_assert_cmpint(nwqid, ==, P9_MAXWELEM);
@@ -452,6 +459,7 @@ static void fs_walk_no_slash(QVirtIO9P *v9p)
fs_attach(v9p);
req = v9fs_twalk(v9p, 0, 1, 1, wnames, 0);
+ v9fs_req_wait_for_reply(req);
v9fs_rlerror(req, &err);
g_assert_cmpint(err, ==, ENOENT);
@@ -467,9 +475,11 @@ static void fs_walk_dotdot(QVirtIO9P *v9p)
fs_version(v9p);
req = v9fs_tattach(v9p, 0, getuid(), 0);
+ v9fs_req_wait_for_reply(req);
v9fs_rattach(req, &root_qid);
req = v9fs_twalk(v9p, 0, 1, 1, wnames, 0);
+ v9fs_req_wait_for_reply(req);
v9fs_rwalk(req, NULL, &wqid); /* We now we'll get one qid */
g_assert_cmpmem(&root_qid, 13, wqid[0], 13);
--
2.13.6
- [Qemu-devel] [PULL v2 00/10] 9p patches for 2.12 20180202, Greg Kurz, 2018/02/02
- [Qemu-devel] [PULL v2 01/10] 9pfs: drop v9fs_register_transport(), Greg Kurz, 2018/02/02
- [Qemu-devel] [PULL v2 10/10] tests/virtio-9p: explicitly handle potential integer overflows, Greg Kurz, 2018/02/02
- [Qemu-devel] [PULL v2 09/10] tests: virtio-9p: add FLUSH operation test, Greg Kurz, 2018/02/02
- [Qemu-devel] [PULL v2 08/10] libqos/virtio: return length written into used descriptor, Greg Kurz, 2018/02/02
- [Qemu-devel] [PULL v2 07/10] tests: virtio-9p: add WRITE operation test, Greg Kurz, 2018/02/02
- [Qemu-devel] [PULL v2 04/10] tests: virtio-9p: wait for completion in the test code,
Greg Kurz <=
- [Qemu-devel] [PULL v2 02/10] 9pfs: Correctly handle cancelled requests, Greg Kurz, 2018/02/02
- [Qemu-devel] [PULL v2 06/10] tests: virtio-9p: add LOPEN operation test, Greg Kurz, 2018/02/02
- Re: [Qemu-devel] [PULL v2 00/10] 9p patches for 2.12 20180202, Peter Maydell, 2018/02/02
- [Qemu-devel] [PULL v2 03/10] tests: virtio-9p: move request tag to the test functions, Greg Kurz, 2018/02/02
- [Qemu-devel] [PULL v2 05/10] tests: virtio-9p: use the synth backend, Greg Kurz, 2018/02/02