libvhost-user: Factor out vq usability check

Let's factor it out to prepare for further changes.

Reviewed-by: Raphael Norwitz <raphael@enfabrica.net>
Acked-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20240214151701.29906-13-david@redhat.com>
Tested-by: Mario Casquero <mcasquer@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
David Hildenbrand 2024-02-14 16:16:59 +01:00 committed by Michael S. Tsirkin
parent b2b63008b3
commit 2a29022768

View file

@ -283,6 +283,12 @@ vu_remove_all_mem_regs(VuDev *dev)
dev->nregions = 0; dev->nregions = 0;
} }
static bool
vu_is_vq_usable(VuDev *dev, VuVirtq *vq)
{
return likely(!dev->broken) && likely(vq->vring.avail);
}
static size_t static size_t
get_fd_hugepagesize(int fd) get_fd_hugepagesize(int fd)
{ {
@ -2380,8 +2386,7 @@ vu_queue_get_avail_bytes(VuDev *dev, VuVirtq *vq, unsigned int *in_bytes,
idx = vq->last_avail_idx; idx = vq->last_avail_idx;
total_bufs = in_total = out_total = 0; total_bufs = in_total = out_total = 0;
if (unlikely(dev->broken) || if (!vu_is_vq_usable(dev, vq)) {
unlikely(!vq->vring.avail)) {
goto done; goto done;
} }
@ -2496,8 +2501,7 @@ vu_queue_avail_bytes(VuDev *dev, VuVirtq *vq, unsigned int in_bytes,
bool bool
vu_queue_empty(VuDev *dev, VuVirtq *vq) vu_queue_empty(VuDev *dev, VuVirtq *vq)
{ {
if (unlikely(dev->broken) || if (!vu_is_vq_usable(dev, vq)) {
unlikely(!vq->vring.avail)) {
return true; return true;
} }
@ -2536,8 +2540,7 @@ vring_notify(VuDev *dev, VuVirtq *vq)
static void _vu_queue_notify(VuDev *dev, VuVirtq *vq, bool sync) static void _vu_queue_notify(VuDev *dev, VuVirtq *vq, bool sync)
{ {
if (unlikely(dev->broken) || if (!vu_is_vq_usable(dev, vq)) {
unlikely(!vq->vring.avail)) {
return; return;
} }
@ -2862,8 +2865,7 @@ vu_queue_pop(VuDev *dev, VuVirtq *vq, size_t sz)
unsigned int head; unsigned int head;
VuVirtqElement *elem; VuVirtqElement *elem;
if (unlikely(dev->broken) || if (!vu_is_vq_usable(dev, vq)) {
unlikely(!vq->vring.avail)) {
return NULL; return NULL;
} }
@ -3020,8 +3022,7 @@ vu_queue_fill(VuDev *dev, VuVirtq *vq,
{ {
struct vring_used_elem uelem; struct vring_used_elem uelem;
if (unlikely(dev->broken) || if (!vu_is_vq_usable(dev, vq)) {
unlikely(!vq->vring.avail)) {
return; return;
} }
@ -3050,8 +3051,7 @@ vu_queue_flush(VuDev *dev, VuVirtq *vq, unsigned int count)
{ {
uint16_t old, new; uint16_t old, new;
if (unlikely(dev->broken) || if (!vu_is_vq_usable(dev, vq)) {
unlikely(!vq->vring.avail)) {
return; return;
} }