Re: 2.2.10-ac10 nfs Oops (Another one for the slab poisoner) (fwd)

H.J. Lu (hjl@lucon.org)
Mon, 19 Jul 1999 17:53:28 -0700 (PDT)


>
> > 2. Both NFS server and client in 2.2.10-ac10 are broken.
> >
> > I will take a look at #1 and I will leave #2 to others.
>
> The client bug looks like its the same problem in both. The server stuff
> I will dig through further. The lockd one I think I know what it is
>
>

Here is the patch for the client bug. I don't know why it doesn't up
earlier. Basically we forget to update "status" when nfs_proc_lookup
returns ok after getting a stale return.

Alan, please fix the NFS server bug in ac kernel. I didn't see it in
the vanilla kernel.

Thanks.

-- 
H.J. Lu (hjl@gnu.org)
---
Index: inode.c
===================================================================
RCS file: /work/cvs/linux/linux/fs/nfs/inode.c,v
retrieving revision 1.3
diff -u -p -r1.3 inode.c
--- inode.c	1999/06/30 19:38:18	1.3
+++ inode.c	1999/07/20 00:34:45
@@ -731,7 +731,6 @@ _nfs_revalidate_inode(struct nfs_server 
 		inode->i_ino);
 	status = nfs_proc_getattr(server, NFS_FH(dentry), &fattr);
 	if (status) {
-		int error;
 		u32 *fh;
 		struct nfs_fh fhandle;
 		dfprintk(PAGECACHE, "nfs_revalidate_inode: %s/%s getattr failed, ino=%ld, error=%d\n",
@@ -746,10 +745,10 @@ _nfs_revalidate_inode(struct nfs_server 
 		fh = (u32 *) NFS_FH(dentry);
 		dfprintk(PAGECACHE, "NFS: bad fh %08x%08x%08x%08x%08x%08x%08x%08x\n",
 			fh[0],fh[1],fh[2],fh[3],fh[4],fh[5],fh[6],fh[7]);
-		error = nfs_proc_lookup(server, NFS_FH(dentry->d_parent), 
+		status = nfs_proc_lookup(server, NFS_FH(dentry->d_parent), 
 					dentry->d_name.name, &fhandle, &fattr);
-		if (error) {
-			dfprintk(PAGECACHE, "NFS: lookup failed, error=%d\n", error);
+		if (status) {
+			dfprintk(PAGECACHE, "NFS: lookup failed, error=%d\n", status);
 			goto out;
 		}
 		fh = (u32 *) &fhandle;

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/