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/