mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
vhost_net: get rid of vhost_net_flush_vq() and extra flush calls
vhost_net_flush_vq() calls vhost_work_dev_flush() twice passing vhost_dev pointer obtained via 'n->poll[index].dev' and 'n->vqs[index].vq.poll.dev'. This is actually the same pointer, initialized in vhost_net_open()/vhost_dev_init()/vhost_poll_init() Remove vhost_net_flush_vq() and call vhost_work_dev_flush() directly. Do the flushes only once instead of several flush calls in a row which seems rather useless. Signed-off-by: Andrey Ryabinin <arbn@yandex-team.com> [drop vhost_dev forward declaration in vhost.h] Signed-off-by: Mike Christie <michael.christie@oracle.com> Acked-by: Jason Wang <jasowang@redhat.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Message-Id: <20220517180850.198915-4-michael.christie@oracle.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
6ca84326c2
commit
2c029f3298
@ -1374,16 +1374,9 @@ static void vhost_net_stop(struct vhost_net *n, struct socket **tx_sock,
|
||||
*rx_sock = vhost_net_stop_vq(n, &n->vqs[VHOST_NET_VQ_RX].vq);
|
||||
}
|
||||
|
||||
static void vhost_net_flush_vq(struct vhost_net *n, int index)
|
||||
{
|
||||
vhost_work_dev_flush(n->poll[index].dev);
|
||||
vhost_work_dev_flush(n->vqs[index].vq.poll.dev);
|
||||
}
|
||||
|
||||
static void vhost_net_flush(struct vhost_net *n)
|
||||
{
|
||||
vhost_net_flush_vq(n, VHOST_NET_VQ_TX);
|
||||
vhost_net_flush_vq(n, VHOST_NET_VQ_RX);
|
||||
vhost_work_dev_flush(&n->dev);
|
||||
if (n->vqs[VHOST_NET_VQ_TX].ubufs) {
|
||||
mutex_lock(&n->vqs[VHOST_NET_VQ_TX].vq.mutex);
|
||||
n->tx_flush = true;
|
||||
@ -1572,7 +1565,7 @@ static long vhost_net_set_backend(struct vhost_net *n, unsigned index, int fd)
|
||||
}
|
||||
|
||||
if (oldsock) {
|
||||
vhost_net_flush_vq(n, index);
|
||||
vhost_work_dev_flush(&n->dev);
|
||||
sockfd_put(oldsock);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user