Here is a 2.4 patch that will reinstantiate an inode when a ESTALE error is returned on a getattr. When the error occurs, a lookup is immediately issued to get a new fh. The fixes the problem of a server rsync -a directory that a client has mounted. The key being the -a flag since it causes the server not to update the mtime on the directory. My initial efforts was to make nfs_lookup_revalidate() a bit smarter with the use of ctimes but turns out that when nfs_lookup_revalidate() does no caching (i.e. an otw lookup is issued on every call) the ESTALEs still occurred. Then I turned my attention to __nfs_refresh_inode() and had it used ctime in its calculations of what is and is not valid... This did work, but it cause a significant amount of extra otw traffic (using the cthon test suite) for the non error cases. The one thing good about this patch (imho) is the extra lookups only occur after an error that generally does not happen... Comments would be appreciated, especially about how I'm reinstantiating the dentry.... SteveD.