[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/18] virtio: Return error from virtqueue_avail_byt
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH 07/18] virtio: Return error from virtqueue_avail_bytes |
Date: |
Fri, 17 Apr 2015 15:59:22 +0800 |
The only caller is virtio-net, which now passes in error_abort.
Signed-off-by: Fam Zheng <address@hidden>
---
hw/net/virtio-net.c | 4 ++--
hw/virtio/virtio.c | 9 +++++++--
include/hw/virtio/virtio.h | 2 +-
3 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index bbcb51f..5529b6f 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -877,7 +877,7 @@ static int virtio_net_has_buffers(VirtIONetQueue *q, int
bufsize)
VirtIONet *n = q->n;
if (virtio_queue_empty(q->rx_vq) ||
(n->mergeable_rx_bufs &&
- !virtqueue_avail_bytes(q->rx_vq, bufsize, 0))) {
+ !virtqueue_avail_bytes(q->rx_vq, bufsize, 0, &error_abort))) {
virtio_queue_set_notification(q->rx_vq, 1);
/* To avoid a race condition where the guest has made some buffers
@@ -886,7 +886,7 @@ static int virtio_net_has_buffers(VirtIONetQueue *q, int
bufsize)
*/
if (virtio_queue_empty(q->rx_vq) ||
(n->mergeable_rx_bufs &&
- !virtqueue_avail_bytes(q->rx_vq, bufsize, 0))) {
+ !virtqueue_avail_bytes(q->rx_vq, bufsize, 0, &error_abort))) {
return 0;
}
}
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index e6f9f6b..7c5ca07 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -443,12 +443,17 @@ done:
}
int virtqueue_avail_bytes(VirtQueue *vq, unsigned int in_bytes,
- unsigned int out_bytes)
+ unsigned int out_bytes, Error **errp)
{
+ Error *local_err = NULL;
unsigned int in_total, out_total;
virtqueue_get_avail_bytes(vq, &in_total, &out_total, in_bytes, out_bytes,
- &error_abort);
+ &local_err);
+ if (local_err) {
+ error_propagate(errp, local_err);
+ return -EINVAL;
+ }
return in_bytes <= in_total && out_bytes <= out_total;
}
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index c478f48..34fb62c 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -144,7 +144,7 @@ void virtqueue_map_sg(struct iovec *sg, hwaddr *addr,
Error **errp);
int virtqueue_pop(VirtQueue *vq, VirtQueueElement *elem, Error **errp);
int virtqueue_avail_bytes(VirtQueue *vq, unsigned int in_bytes,
- unsigned int out_bytes);
+ unsigned int out_bytes, Error **errp);
void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
unsigned int *out_bytes,
unsigned max_in_bytes, unsigned max_out_bytes,
--
1.9.3
- [Qemu-devel] [PATCH 00/18] virtio-blk: Support "VIRTIO_CONFIG_S_NEEDS_RESET", Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 01/18] virtio: Return error from virtqueue_map_sg, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 02/18] virtio: Return error from virtqueue_num_heads, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 03/18] virtio: Return error from virtqueue_get_head, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 05/18] virtio: Return error from virtqueue_get_avail_bytes, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 06/18] virtio: Return error from virtqueue_pop, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 07/18] virtio: Return error from virtqueue_avail_bytes,
Fam Zheng <=
- [Qemu-devel] [PATCH 09/18] virtio: Return error from virtio_del_queue, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 10/18] virtio: Add macro for VIRTIO_CONFIG_S_NEEDS_RESET, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 11/18] virtio: Add "needs_reset" flag to virtio device, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 12/18] virtio: Return -EINVAL if the vdev needs reset in virtqueue_pop, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 13/18] virtio-blk: Graceful error handling of virtqueue_pop, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 14/18] qtest: Add "QTEST_FILTER" to filter test cases, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 15/18] qtest: virtio-blk: Extract "setup" for future reuse, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 16/18] libqos: Add qvirtio_needs_reset, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 17/18] qtest: Add test case for "needs reset" of virtio-blk, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 18/18] qtest: virtio-blk: Suppress virtio error messages in "make check", Fam Zheng, 2015/04/17