Signed-off-by: Michael S. Tsirkin <m...@redhat.com>
---
 drivers/vhost/test.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/vhost/test.c b/drivers/vhost/test.c
index 02806d6f84ef..251fd2bf74a3 100644
--- a/drivers/vhost/test.c
+++ b/drivers/vhost/test.c
@@ -44,9 +44,10 @@ static void handle_vq(struct vhost_test *n)
 {
        struct vhost_virtqueue *vq = &n->vqs[VHOST_TEST_VQ];
        unsigned out, in;
-       int head;
+       int ret;
        size_t len, total_len = 0;
        void *private;
+       struct vhost_buf buf;
 
        mutex_lock(&vq->mutex);
        private = vhost_vq_get_backend(vq);
@@ -58,15 +59,15 @@ static void handle_vq(struct vhost_test *n)
        vhost_disable_notify(&n->dev, vq);
 
        for (;;) {
-               head = vhost_get_vq_desc(vq, vq->iov,
-                                        ARRAY_SIZE(vq->iov),
-                                        &out, &in,
-                                        NULL, NULL);
+               ret = vhost_get_avail_buf(vq, vq->iov, &buf,
+                                         ARRAY_SIZE(vq->iov),
+                                         &out, &in,
+                                         NULL, NULL);
                /* On error, stop handling until the next kick. */
-               if (unlikely(head < 0))
+               if (unlikely(ret < 0))
                        break;
                /* Nothing new?  Wait for eventfd to tell us they refilled. */
-               if (head == vq->num) {
+               if (!ret) {
                        if (unlikely(vhost_enable_notify(&n->dev, vq))) {
                                vhost_disable_notify(&n->dev, vq);
                                continue;
@@ -78,13 +79,14 @@ static void handle_vq(struct vhost_test *n)
                               "out %d, int %d\n", out, in);
                        break;
                }
-               len = iov_length(vq->iov, out);
+               len = buf.out_len;
                /* Sanity check */
                if (!len) {
                        vq_err(vq, "Unexpected 0 len for TX\n");
                        break;
                }
-               vhost_add_used_and_signal(&n->dev, vq, head, 0);
+               vhost_put_used_buf(vq, &buf);
+               vhost_signal(&n->dev, vq);
                total_len += len;
                if (unlikely(vhost_exceeds_weight(vq, 0, total_len)))
                        break;
-- 
MST

Reply via email to