From: Rusty Russell <rusty@rustcorp•com.au>
To: netdev@vger•kernel.org
Cc: "Michael S. Tsirkin" <mst@redhat•com>
Subject: [PATCH 1/2] virtio_net: do not reschedule rx refill forever
Date: Sat, 3 Jul 2010 12:32:55 +1000 [thread overview]
Message-ID: <201007031232.56510.rusty@rustcorp.com.au> (raw)
From: "Michael S. Tsirkin" <mst@redhat•com>
We currently fill all of RX ring, then add_buf
returns ENOSPC, which gets mis-detected as an out of
memory condition and causes us to reschedule the work,
and so on forever. Fix this by oom = err == -ENOMEM;
Signed-off-by: Michael S. Tsirkin <mst@redhat•com>
Signed-off-by: Rusty Russell <rusty@rustcorp•com.au>
Cc: stable@kernel•org # .34.x
---
drivers/net/virtio_net.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 06c30df..85615a3 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -416,7 +416,7 @@ static int add_recvbuf_mergeable(struct virtnet_info *vi, gfp_t gfp)
static bool try_fill_recv(struct virtnet_info *vi, gfp_t gfp)
{
int err;
- bool oom = false;
+ bool oom;
do {
if (vi->mergeable_rx_bufs)
@@ -426,10 +426,9 @@ static bool try_fill_recv(struct virtnet_info *vi, gfp_t gfp)
else
err = add_recvbuf_small(vi, gfp);
- if (err < 0) {
- oom = true;
+ oom = err == -ENOMEM;
+ if (err < 0)
break;
- }
++vi->num;
} while (err > 0);
if (unlikely(vi->num > vi->max))
next reply other threads:[~2010-07-03 2:33 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-03 2:32 Rusty Russell [this message]
2010-07-03 2:34 ` [PATCH 2/2] virtio_net: fix oom handling on tx Rusty Russell
2010-07-03 5:29 ` David Miller
2010-07-03 5:29 ` [PATCH 1/2] virtio_net: do not reschedule rx refill forever David Miller
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=201007031232.56510.rusty@rustcorp.com.au \
--to=rusty@rustcorp$(echo .)com.au \
--cc=mst@redhat$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be 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