Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751883Ab1FGPzr (ORCPT ); Tue, 7 Jun 2011 11:55:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:30620 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750919Ab1FGPzp (ORCPT ); Tue, 7 Jun 2011 11:55:45 -0400 Date: Tue, 7 Jun 2011 18:54:57 +0300 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Rusty Russell , Carsten Otte , Christian Borntraeger , linux390@de.ibm.com, Martin Schwidefsky , Heiko Carstens , Shirley Ma , lguest@lists.ozlabs.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-s390@vger.kernel.org, kvm@vger.kernel.org, Krishna Kumar , Tom Lendacky , steved@us.ibm.com, habanero@linux.vnet.ibm.com Subject: Re: [PATCHv2 RFC 4/4] Revert "virtio: make add_buf return capacity remaining: Message-ID: <20110607155457.GA17436@redhat.com> References: <7572d6fb81181e349af4a8b203ea0977f6e91ae1.1307029009.git.mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7572d6fb81181e349af4a8b203ea0977f6e91ae1.1307029009.git.mst@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2454 Lines: 75 On Thu, Jun 02, 2011 at 06:43:25PM +0300, Michael S. Tsirkin wrote: > This reverts commit 3c1b27d5043086a485f8526353ae9fe37bfa1065. > The only user was virtio_net, and it switched to > min_capacity instead. > > Signed-off-by: Michael S. Tsirkin It turns out another place in virtio_net: receive buf processing - relies on the old behaviour: try_fill_recv: do { if (vi->mergeable_rx_bufs) err = add_recvbuf_mergeable(vi, gfp); else if (vi->big_packets) err = add_recvbuf_big(vi, gfp); else err = add_recvbuf_small(vi, gfp); oom = err == -ENOMEM; if (err < 0) break; ++vi->num; } while (err > 0); The point is to avoid allocating a buf if the ring is out of space and we are sure add_buf will fail. It works well for mergeable buffers and for big packets if we are not OOM. small packets and oom will do extra get_page/put_page calls (but maybe we don't care). So this is RX, I intend to drop it from this patchset and focus on the TX side for starters. > --- > drivers/virtio/virtio_ring.c | 2 +- > include/linux/virtio.h | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > index 23422f1..a6c21eb 100644 > --- a/drivers/virtio/virtio_ring.c > +++ b/drivers/virtio/virtio_ring.c > @@ -233,7 +233,7 @@ add_head: > pr_debug("Added buffer head %i to %p\n", head, vq); > END_USE(vq); > > - return vq->num_free; > + return 0; > } > EXPORT_SYMBOL_GPL(virtqueue_add_buf_gfp); > > diff --git a/include/linux/virtio.h b/include/linux/virtio.h > index 209220d..63c4908 100644 > --- a/include/linux/virtio.h > +++ b/include/linux/virtio.h > @@ -34,7 +34,7 @@ struct virtqueue { > * in_num: the number of sg which are writable (after readable ones) > * data: the token identifying the buffer. > * gfp: how to do memory allocations (if necessary). > - * Returns remaining capacity of queue (sg segments) or a negative error. > + * Returns 0 on success or a negative error. > * virtqueue_kick: update after add_buf > * vq: the struct virtqueue > * After one or more add_buf calls, invoke this to kick the other side. > -- > 1.7.5.53.gc233e -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/