Re: Linux NFS client...

H.J. Lu (hjl@lucon.org)
Tue, 20 Jul 1999 09:17:40 -0700 (PDT)


> Can you test it and make sure that it's ok (does it look
> reasonable to you?)
>

Here is an updated patch for the NFS client bug. It looks fine to
me. Any comments?

Thanks.

-- 
H.J. Lu (hjl@gnu.org)
----
Index: fs/nfs/inode.c
===================================================================
RCS file: /work/cvs/linux/linux/fs/nfs/inode.c,v
retrieving revision 1.1.1.26
diff -u -p -r1.1.1.26 inode.c
--- fs/nfs/inode.c	1999/05/12 00:49:02	1.1.1.26
+++ fs/nfs/inode.c	1999/07/20 15:56:10
@@ -727,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",
@@ -742,16 +745,17 @@ _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;
 		dfprintk(PAGECACHE, "            %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]);
-		goto out;
+		/* Update the file handle in the dentry */
+	        *((struct nfs_fh *) dentry->d_fsdata) = fhandle;
 	}
 
 	status = nfs_refresh_inode(inode, &fattr);

- 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/