Hello! 2011/1/18 Al Viro <viro@xxxxxxxxxxxxxxxxxx>: >> const struct inode_operations nfs_referral_inode_operations = { >> .follow_link = nfs_follow_mountpoint, >> +#ifdef CONFIG_NFS_V4 >> + .lookup = nfs_atomic_lookup, >> +#endif >> }; > > That looks very wrong. You are papering over the real problem here - ask > yourself what would that ->lookup() be expected to do? That ->lookup() have to search first directory name in Exported path on NFS server. However, maybe it is not that expected... > > The thing is, we shouldn't end up trying to call ->lookup() for those. lookup() method is called always. But method is called from nfs_dir_inode_operations. Correct sequence: nfs_follow_remote_path-> vfs_path_lookup->do_lookup-> ->nfs_lookup->nfs_fhget->"reset i_op"->follow_link Incorrect sequence: nfs4_get_root->nfs_fhget->"reset i_op"->vfs_path_lookup->do_lookup The problem is in that nfs_fhget resets i_op and then vfs_path_lookup is called. > That's the real issue... Do you mean that we need to ignore updated attribute fsid for remote ROOT at nfs4_get_root() ? -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html