Subject: Re: 2.4.10pre11 vm rewrite fixes for mainline inclusion and testing
From: Andrew Morton <[email-masked]>
To: Andrea Arcangeli <[email-masked]>
Cc: Linus Torvalds <[email-masked]>, [email-masked], [email-masked]
Date: Wed, 19 Sep 2001 22:58:15 -0700

With this patch against -pre12 the BUG()s in shrink_cache()
go away.

--- linux-2.4.10-pre12/mm/vmscan.c	Wed Sep 19 20:47:21 2001
+++ linux-akpm/mm/vmscan.c	Wed Sep 19 22:49:48 2001
@@ -435,15 +435,20 @@ static int shrink_cache(struct list_head
 
 			if (try_to_free_buffers(page, gfp_mask)) {
 				if (!page->mapping) {
-					UnlockPage(page);
-
 					/*
 					 * Account we successfully freed a page
 					 * of buffer cache.
 					 */
 					atomic_dec(&buffermem_pages);
 
+					/*
+					 * We must not allow an anon page
+					 * with no buffers to be visible on
+					 * the LRU, so we unlock the page after
+					 * taking the lru lock
+					 */
 					spin_lock(&pagemap_lru_lock);
+					UnlockPage(page);
 					__lru_cache_del(page);
 
 					/* effectively free the page here */

With this patch applied I've had three total system lockups with
the usual workload.  No diagnostics, no interrupts, NMI watchdog
doesn't catch it.  Nice.   This is not related to networking; I
wasn't able to do much network stress testing because the
darn APIC bug kept biting me.  Grumble.

I'll try -pre9.