[kernel] r15584 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series
Ben Hutchings
benh at alioth.debian.org
Thu Apr 29 01:38:25 UTC 2010
Author: benh
Date: Thu Apr 29 01:38:23 2010
New Revision: 15584
Log:
virtio_net: Make delayed refill more reliable (Closes: #576838)
Added:
dists/sid/linux-2.6/debian/patches/bugfix/all/virtio_net-Make-delayed-refill-more-reliable.patch
Modified:
dists/sid/linux-2.6/debian/changelog
dists/sid/linux-2.6/debian/patches/series/12
Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog Thu Apr 29 01:26:22 2010 (r15583)
+++ dists/sid/linux-2.6/debian/changelog Thu Apr 29 01:38:23 2010 (r15584)
@@ -24,6 +24,7 @@
* megaraid_sas: Fix copying of sense data for 32-bit management tools on
64-bit kernel (Closes: #578398)
* Add ipheth driver for iPhone tethering
+ * virtio_net: Make delayed refill more reliable (Closes: #576838)
[ maximilian attems]
* [ia64] Built in fbcon.
Added: dists/sid/linux-2.6/debian/patches/bugfix/all/virtio_net-Make-delayed-refill-more-reliable.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/virtio_net-Make-delayed-refill-more-reliable.patch Thu Apr 29 01:38:23 2010 (r15584)
@@ -0,0 +1,50 @@
+From 39d321577405e8e269fd238b278aaf2425fa788a Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert at gondor.apana.org.au>
+Date: Mon, 25 Jan 2010 15:51:01 -0800
+Subject: [PATCH] virtio_net: Make delayed refill more reliable
+
+I have seen RX stalls on a machine that experienced a suspected
+OOM. After the stall, the RX buffer is empty on the guest side
+and there are exactly 16 entries available on the host side. As
+the number of entries is less than that required by a maximal
+skb, the host cannot proceed.
+
+The guest did not have a refill job scheduled.
+
+My diagnosis is that an OOM had occured, with the delayed refill
+job scheduled. The job was able to allocate at least one skb, but
+not enough to overcome the minimum required by the host to proceed.
+
+As the refill job would only reschedule itself if it failed completely
+to allocate any skbs, this would lead to an RX stall.
+
+The following patch removes this stall possibility by always
+rescheduling the refill job until the ring is totally refilled.
+
+Testing has shown that the RX stall no longer occurs whereas
+previously it would occur within a day.
+
+Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
+Acked-by: Rusty Russell <rusty at rustcorp.com.au>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ drivers/net/virtio_net.c | 3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
+index c708ecc..9ead30b 100644
+--- a/drivers/net/virtio_net.c
++++ b/drivers/net/virtio_net.c
+@@ -395,8 +395,7 @@ static void refill_work(struct work_struct *work)
+
+ vi = container_of(work, struct virtnet_info, refill.work);
+ napi_disable(&vi->napi);
+- try_fill_recv(vi, GFP_KERNEL);
+- still_empty = (vi->num == 0);
++ still_empty = !try_fill_recv(vi, GFP_KERNEL);
+ napi_enable(&vi->napi);
+
+ /* In theory, this can happen: if we don't get any buffers in
+--
+1.7.0.3
+
Modified: dists/sid/linux-2.6/debian/patches/series/12
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/12 Thu Apr 29 01:26:22 2010 (r15583)
+++ dists/sid/linux-2.6/debian/patches/series/12 Thu Apr 29 01:38:23 2010 (r15584)
@@ -58,3 +58,4 @@
+ bugfix/all/ext4-issue-discard-operation-before-releasing-blocks.patch
+ bugfix/all/libiscsi-regression-fix-header-digest-errors.patch
+ bugfix/all/revert-percpu-stable-changes.patch
++ bugfix/all/virtio_net-Make-delayed-refill-more-reliable.patch
More information about the Kernel-svn-changes
mailing list