diff -u --recursive --new-file linux-2.6.0-test2/fs/nfs/dir.c linux-2.6.0-test2-fix_cto/fs/nfs/dir.c --- linux-2.6.0-test2/fs/nfs/dir.c 2003-06-30 07:19:26.000000000 -0700 +++ linux-2.6.0-test2-fix_cto/fs/nfs/dir.c 2003-08-11 07:54:47.000000000 -0700 @@ -557,7 +557,7 @@ /* Force a full look up iff the parent directory has changed */ if (nfs_check_verifier(dir, dentry)) { if (nfs_lookup_verify_inode(inode, isopen)) - goto out_bad; + goto out_zap_parent; goto out_valid; } @@ -566,7 +566,7 @@ if (memcmp(NFS_FH(inode), &fhandle, sizeof(struct nfs_fh))!= 0) goto out_bad; if (nfs_lookup_verify_inode(inode, isopen)) - goto out_bad; + goto out_zap_parent; goto out_valid_renew; } @@ -587,6 +587,8 @@ unlock_kernel(); dput(parent); return 1; +out_zap_parent: + nfs_zap_caches(dir); out_bad: NFS_CACHEINV(dir); if (inode && S_ISDIR(inode->i_mode)) {