LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@redhat.com> To: Stefano Garzarella <sgarzare@redhat.com> Cc: netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>, "Michael S. Tsirkin" <mst@redhat.com>, virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Jason Wang <jasowang@redhat.com> Subject: Re: [PATCH v2 1/8] vsock/virtio: limit the memory used per-socket Date: Thu, 16 May 2019 16:25:33 +0100 [thread overview] Message-ID: <20190516152533.GB29808@stefanha-x1.localdomain> (raw) In-Reply-To: <20190510125843.95587-2-sgarzare@redhat.com> [-- Attachment #1: Type: text/plain, Size: 2164 bytes --] On Fri, May 10, 2019 at 02:58:36PM +0200, Stefano Garzarella wrote: > +struct virtio_vsock_buf { Please add a comment describing the purpose of this struct and to differentiate its use from struct virtio_vsock_pkt. > +static struct virtio_vsock_buf * > +virtio_transport_alloc_buf(struct virtio_vsock_pkt *pkt, bool zero_copy) > +{ > + struct virtio_vsock_buf *buf; > + > + if (pkt->len == 0) > + return NULL; > + > + buf = kzalloc(sizeof(*buf), GFP_KERNEL); > + if (!buf) > + return NULL; > + > + /* If the buffer in the virtio_vsock_pkt is full, we can move it to > + * the new virtio_vsock_buf avoiding the copy, because we are sure that > + * we are not use more memory than that counted by the credit mechanism. > + */ > + if (zero_copy && pkt->len == pkt->buf_len) { > + buf->addr = pkt->buf; > + pkt->buf = NULL; > + } else { > + buf->addr = kmalloc(pkt->len, GFP_KERNEL); buf and buf->addr could be allocated in a single call, though I'm not sure how big an optimization this is. > @@ -841,20 +882,24 @@ virtio_transport_recv_connected(struct sock *sk, > { > struct vsock_sock *vsk = vsock_sk(sk); > struct virtio_vsock_sock *vvs = vsk->trans; > + struct virtio_vsock_buf *buf; > int err = 0; > > switch (le16_to_cpu(pkt->hdr.op)) { > case VIRTIO_VSOCK_OP_RW: > pkt->len = le32_to_cpu(pkt->hdr.len); > - pkt->off = 0; > + buf = virtio_transport_alloc_buf(pkt, true); > > - spin_lock_bh(&vvs->rx_lock); > - virtio_transport_inc_rx_pkt(vvs, pkt); > - list_add_tail(&pkt->list, &vvs->rx_queue); > - spin_unlock_bh(&vvs->rx_lock); > + if (buf) { > + spin_lock_bh(&vvs->rx_lock); > + virtio_transport_inc_rx_pkt(vvs, pkt->len); > + list_add_tail(&buf->list, &vvs->rx_queue); > + spin_unlock_bh(&vvs->rx_lock); > > - sk->sk_data_ready(sk); > - return err; > + sk->sk_data_ready(sk); > + } The return value of this function isn't used but the code still makes an effort to return errors. Please return -ENOMEM when buf == NULL. If you'd like to remove the return value that's fine too, but please do it for the whole function to be consistent. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2019-05-16 15:25 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-05-10 12:58 [PATCH v2 0/8] vsock/virtio: optimizations to increase the throughput Stefano Garzarella 2019-05-10 12:58 ` [PATCH v2 1/8] vsock/virtio: limit the memory used per-socket Stefano Garzarella 2019-05-12 16:57 ` Michael S. Tsirkin 2019-05-13 16:40 ` Stefano Garzarella 2019-05-13 9:58 ` Jason Wang 2019-05-13 17:23 ` Stefano Garzarella 2019-05-14 3:25 ` Jason Wang 2019-05-14 3:40 ` Jason Wang 2019-05-14 16:35 ` Stefano Garzarella 2019-05-15 2:48 ` Jason Wang 2019-05-28 16:45 ` Stefano Garzarella 2019-05-29 0:59 ` Jason Wang 2019-05-16 15:25 ` Stefan Hajnoczi [this message] 2019-05-17 8:25 ` Stefano Garzarella 2019-05-20 8:57 ` Stefan Hajnoczi 2019-05-10 12:58 ` [PATCH v2 2/8] vsock/virtio: free packets during the socket release Stefano Garzarella 2019-05-10 22:20 ` David Miller 2019-05-11 8:27 ` Stefano Garzarella 2019-05-16 15:32 ` Stefan Hajnoczi 2019-05-17 8:26 ` Stefano Garzarella 2019-05-10 12:58 ` [PATCH v2 3/8] vsock/virtio: fix locking for fwd_cnt and buf_alloc Stefano Garzarella 2019-05-10 12:58 ` [PATCH v2 4/8] vsock/virtio: reduce credit update messages Stefano Garzarella 2019-05-10 12:58 ` [PATCH v2 5/8] vhost/vsock: split packets to send using multiple buffers Stefano Garzarella 2019-05-10 12:58 ` [PATCH v2 6/8] vsock/virtio: change the maximum packet size allowed Stefano Garzarella 2019-05-10 12:58 ` [PATCH v2 7/8] vsock/virtio: increase RX buffer size to 64 KiB Stefano Garzarella 2019-05-13 10:01 ` Jason Wang 2019-05-13 17:51 ` Stefano Garzarella 2019-05-14 3:38 ` Jason Wang 2019-05-14 16:20 ` Stefano Garzarella 2019-05-15 2:50 ` Jason Wang 2019-05-15 8:22 ` Stefano Garzarella 2019-05-10 12:58 ` [PATCH v2 8/8] vsock/virtio: make the RX buffer size tunable Stefano Garzarella 2019-05-13 10:05 ` Jason Wang 2019-05-13 12:46 ` Jason Wang 2019-05-14 16:10 ` Stefano Garzarella 2019-05-13 9:33 ` [PATCH v2 0/8] vsock/virtio: optimizations to increase the throughput Jason Wang 2019-05-13 16:49 ` Stefano Garzarella 2019-05-20 14:09 ` Stefano Garzarella
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190516152533.GB29808@stefanha-x1.localdomain \ --to=stefanha@redhat.com \ --cc=davem@davemloft.net \ --cc=jasowang@redhat.com \ --cc=kvm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mst@redhat.com \ --cc=netdev@vger.kernel.org \ --cc=sgarzare@redhat.com \ --cc=virtualization@lists.linux-foundation.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).