Trond Myklebust wrote: > Time to clean all that up. The legacy nfs_renew_times() has no meaning > now that we use d_time to cache the verifier. Would you like to send me > a patch removing them? I can -- there are some minor nits. In nfs_dentry_iput() we have this: static void nfs_dentry_iput(struct dentry *dentry, struct inode *inode) { nfs_inode_return_delegation(inode); if (S_ISDIR(inode->i_mode)) /* drop any readdir cache as it could easily be old */ NFS_I(inode)->cache_validity |= NFS_INO_INVALID_DATA; if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { lock_kernel(); drop_nlink(inode); nfs_complete_unlink(dentry, inode); unlock_kernel(); } /* When creating a negative dentry, we want to renew d_time */ nfs_renew_times(dentry); ^^^^^^^^^^^^^^^^^^^^^^^^ iput(inode); } This is the only instance of nfs_renew_times() by itself. Seems like this might break the behavior of negative dentry caching. Should this be removed entirely, or replaced somehow with nfs_refresh_verifier()? It looks like nfs_set_verifier() and nfs_refresh_verifier() reduce to exactly the same logic, but we have this at the end of nfs_readdir_lookup: nfs_renew_times(dentry); nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); return dentry; out_renew: nfs_renew_times(dentry); nfs_refresh_verifier(dentry, nfs_save_change_attribute(dir)); return dentry; } Both of which are exactly equivalent now. I can address this as well.