public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: florin@iucha.net (Florin Iucha)
To: Linus Torvalds <torvalds@transmeta.com>,
	Trond Myklebust <trond.myklebust@fys.uio.no>,
	Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Linux 2.5.71
Date: Sat, 14 Jun 2003 23:55:19 -0500	[thread overview]
Message-ID: <20030615045519.GE25303@iucha.net> (raw)
In-Reply-To: <20030615020055.GB25303@iucha.net>

[-- Attachment #1: Type: text/plain, Size: 2478 bytes --]

On Sat, Jun 14, 2003 at 09:00:55PM -0500, Florin Iucha wrote:
> On Sat, Jun 14, 2003 at 06:58:26PM -0700, Linus Torvalds wrote:
> > Ok, that does look like the list poisoning. The poisoning uses 0x00100100
> > as the poison value, and that's the address that oopsed for you:
> [snip] 
> > Florin, does it work for you if you remove the poisoning in 
> > <linux/list.h>? (Just search for "POISON" and remove those lines).
> > 
> > Trond, any ideas?
> 
> I am compiling now 2.5.71 with Tron's patch
> (http://bugme.osdl.org/attachment.cgi?id=414&action=view). If that
> does not fix it I will try without the poison.

Trond's patch fixes the problem. The box has been up an running for
three hours under normal usage (web, mail, nfs share browsing) it even
rebooted without problem.

florin

diff -u --recursive --new-file linux-2.5.71/net/sunrpc/rpc_pipe.c linux-2.5.71-fix_rpcpipe/net/sunrpc/rpc_pipe.c
--- linux-2.5.71/net/sunrpc/rpc_pipe.c	2003-06-11 19:24:29.000000000 -0700
+++ linux-2.5.71-fix_rpcpipe/net/sunrpc/rpc_pipe.c	2003-06-14 16:58:21.000000000 -0700
@@ -472,30 +472,37 @@
 rpc_depopulate(struct dentry *parent)
 {
 	struct inode *dir = parent->d_inode;
-	HLIST_HEAD(head);
 	struct list_head *pos, *next;
-	struct dentry *dentry;
+	struct dentry *dentry, *dvec[10];
+	int n = 0;
 
 	down(&dir->i_sem);
+repeat:
 	spin_lock(&dcache_lock);
 	list_for_each_safe(pos, next, &parent->d_subdirs) {
 		dentry = list_entry(pos, struct dentry, d_child);
+		spin_lock(&dentry->d_lock);
 		if (!d_unhashed(dentry)) {
 			dget_locked(dentry);
 			__d_drop(dentry);
-			hlist_add_head(&dentry->d_hash, &head);
-		}
+			spin_unlock(&dentry->d_lock);
+			dvec[n++] = dentry;
+			if (n == ARRAY_SIZE(dvec))
+				break;
+		} else
+			spin_unlock(&dentry->d_lock);
 	}
 	spin_unlock(&dcache_lock);
-	while (!hlist_empty(&head)) {
-		dentry = list_entry(head.first, struct dentry, d_hash);
-		/* Private list, so no dcache_lock needed and use __d_drop */
-		__d_drop(dentry);
-		if (dentry->d_inode) {
-			rpc_inode_setowner(dentry->d_inode, NULL);
-			simple_unlink(dir, dentry);
-		}
-		dput(dentry);
+	if (n) {
+		do {
+			dentry = dvec[--n];
+			if (dentry->d_inode) {
+				rpc_inode_setowner(dentry->d_inode, NULL);
+				simple_unlink(dir, dentry);
+			}
+			dput(dentry);
+		} while (n);
+		goto repeat;
 	}
 	up(&dir->i_sem);
 }

-- 

"NT is to UNIX what a doughnut is to a particle accelerator."

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2003-06-15  4:41 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-14 21:17 Linux 2.5.71 Linus Torvalds
2003-06-15  1:42 ` Florin Iucha
2003-06-15  1:58   ` Linus Torvalds
2003-06-15  2:00     ` Florin Iucha
2003-06-15  4:55       ` Florin Iucha [this message]
2003-06-15  8:03     ` Trond Myklebust
2003-06-15  6:54 ` Andre Hedrick
2003-06-15  7:15   ` Andre Hedrick
2003-06-15 13:29 ` Paweł Gołaszewski
2003-06-15 13:45   ` Russell King
2003-06-16 18:04 ` John Cherry
2003-06-17 19:29 ` [2.5 patch] 2.5.72: moxa.c doesn't compile Adrian Bunk
2003-06-17 23:33   ` viro
2003-06-19 18:53   ` Thiago Rondon
2003-06-20  4:28     ` Rusty Russell
     [not found] <20030614213012$6a47@gated-at.bofh.it>
2003-06-14 22:21 ` Linux 2.5.71 John Weber
2003-06-15  0:42   ` Herbert Xu
2003-06-15  0:43   ` Herbert Xu
2003-06-15  1:10     ` Arnaldo Carvalho de Melo
  -- strict thread matches above, loose matches on Subject: below --
2003-06-15  0:21 Larry McVoy
2003-06-17 16:13 ` H. Peter Anvin

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=20030615045519.GE25303@iucha.net \
    --to=florin@iucha.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    --cc=trond.myklebust@fys.uio.no \
    /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: link
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