mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 21:57:43 +00:00
vhost: don't bother with copying iovec in handle_tx()
just advance the msg.msg_iter and be done with that. Cc: Michael S. Tsirkin <mst@redhat.com> Cc: kvm@vger.kernel.org Cc: virtualization@lists.linux-foundation.org Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
aad9a1cec7
commit
98a527aac1
1 changed files with 5 additions and 4 deletions
|
@ -336,7 +336,7 @@ static void handle_tx(struct vhost_net *net)
|
||||||
{
|
{
|
||||||
struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX];
|
struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX];
|
||||||
struct vhost_virtqueue *vq = &nvq->vq;
|
struct vhost_virtqueue *vq = &nvq->vq;
|
||||||
unsigned out, in, s;
|
unsigned out, in;
|
||||||
int head;
|
int head;
|
||||||
struct msghdr msg = {
|
struct msghdr msg = {
|
||||||
.msg_name = NULL,
|
.msg_name = NULL,
|
||||||
|
@ -395,16 +395,17 @@ static void handle_tx(struct vhost_net *net)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* Skip header. TODO: support TSO. */
|
/* Skip header. TODO: support TSO. */
|
||||||
s = move_iovec_hdr(vq->iov, nvq->hdr, hdr_size, out);
|
|
||||||
len = iov_length(vq->iov, out);
|
len = iov_length(vq->iov, out);
|
||||||
iov_iter_init(&msg.msg_iter, WRITE, vq->iov, out, len);
|
iov_iter_init(&msg.msg_iter, WRITE, vq->iov, out, len);
|
||||||
|
iov_iter_advance(&msg.msg_iter, hdr_size);
|
||||||
/* Sanity check */
|
/* Sanity check */
|
||||||
if (!len) {
|
if (!iov_iter_count(&msg.msg_iter)) {
|
||||||
vq_err(vq, "Unexpected header len for TX: "
|
vq_err(vq, "Unexpected header len for TX: "
|
||||||
"%zd expected %zd\n",
|
"%zd expected %zd\n",
|
||||||
iov_length(nvq->hdr, s), hdr_size);
|
len, hdr_size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
len = iov_iter_count(&msg.msg_iter);
|
||||||
|
|
||||||
zcopy_used = zcopy && len >= VHOST_GOODCOPY_LEN
|
zcopy_used = zcopy && len >= VHOST_GOODCOPY_LEN
|
||||||
&& (nvq->upend_idx + 1) % UIO_MAXIOV !=
|
&& (nvq->upend_idx + 1) % UIO_MAXIOV !=
|
||||||
|
|
Loading…
Reference in a new issue