diff -urNX /misc/unpack/diff_kernel_excludes /mnt/3/linux-2.2.19/fs/namei.c linux-2.2.19/fs/namei.c
--- /mnt/3/linux-2.2.19/fs/namei.c	Sun Mar 25 08:30:58 2001
+++ linux-2.2.19/fs/namei.c	Sat Apr 28 03:56:30 2001
@@ -301,11 +302,17 @@
 	return dentry;
 }
 
-static inline struct dentry * follow_mount(struct dentry * dentry)
+static inline struct dentry * follow_mount(struct dentry * dentry, int flags)
 {
 	struct dentry * mnt = dentry->d_mounts;
 
 	if (mnt != dentry) {
+		/* revalidate first */
+		if (mnt->d_op && mnt->d_op->d_revalidate) {
+			if (!mnt->d_op->d_revalidate(mnt, flags) && !d_invalidate(mnt))
+				/* don't follow the mount if we can't validate it */
+				return dentry;
+		}
 		dget(mnt);
 		dput(dentry);
 		dentry = mnt;
@@ -405,7 +412,7 @@
 		}
 
 		/* Check mountpoints.. */
-		dentry = follow_mount(dentry);
+		dentry = follow_mount(dentry, flags);
 
 		base = do_follow_link(base, dentry, flags);
 		if (IS_ERR(base))
diff -urNX /misc/unpack/diff_kernel_excludes /mnt/3/linux-2.2.19/fs/nfs/inode.c linux-2.2.19/fs/nfs/inode.c
--- /mnt/3/linux-2.2.19/fs/nfs/inode.c	Sun Mar 25 08:37:38 2001
+++ linux-2.2.19/fs/nfs/inode.c	Sat Apr 28 04:34:57 2001
@@ -435,6 +435,7 @@
 		goto failure_put_root;
 
 	sb->s_root->d_op = &nfs_dentry_operations;
+	sb->s_root->d_time = jiffies;
 
 	/* Get some general file system info */
 	if (server->rpc_ops->statfs(server, &fh, &fsinfo) >= 0) {
diff -urNX /misc/unpack/diff_kernel_excludes /mnt/3/linux-2.2.19/fs/nfs/symlink.c linux-2.2.19/fs/nfs/symlink.c
--- /mnt/3/linux-2.2.19/fs/nfs/symlink.c	Sun Mar 25 08:37:38 2001
+++ linux-2.2.19/fs/nfs/symlink.c	Sat Apr 28 03:11:52 2001
@@ -32,26 +32,9 @@
  * symlinks can't do much...
  */
 struct inode_operations nfs_symlink_inode_operations = {
-	NULL,			/* no file-operations */
-	NULL,			/* create */
-	NULL,			/* lookup */
-	NULL,			/* link */
-	NULL,			/* unlink */
-	NULL,			/* symlink */
-	NULL,			/* mkdir */
-	NULL,			/* rmdir */
-	NULL,			/* mknod */
-	NULL,			/* rename */
-	nfs_readlink,		/* readlink */
-	nfs_follow_link,	/* follow_link */
-	NULL,			/* get_block */
-	NULL,			/* readpage */
-	NULL,			/* writepage */
-	NULL,			/* flushpage */
-	NULL,			/* truncate */
-	NULL,			/* permission */
-	NULL,			/* smap */
-	NULL			/* revalidate */
+	readlink:		nfs_readlink,
+	follow_link:		nfs_follow_link,
+	revalidate:		nfs_revalidate,
 };
 
 /* Symlink caching in the page cache is even more simplistic
diff -urNX /misc/unpack/diff_kernel_excludes /mnt/3/linux-2.2.19/fs/super.c linux-2.2.19/fs/super.c
--- /mnt/3/linux-2.2.19/fs/super.c	Sun Mar 25 08:30:58 2001
+++ linux-2.2.19/fs/super.c	Sat Apr 28 01:01:38 2001
@@ -782,7 +782,7 @@
 		return -EPERM;
 
 	lock_kernel();
-	dentry = namei(name);
+	dentry = lnamei(name);
 	retval = PTR_ERR(dentry);
 	if (!IS_ERR(dentry)) {
 		struct inode * inode = dentry->d_inode;
