Viacheslav Dubeyko <Slava.Dubeyko@xxxxxxx> wrote: > As far as I can see, ceph_fill_inode() has comment: "Populate an inode based > on info from mds. May be called on new or existing inodes". It sounds to me > that particular CephFS kernel client could have obsolete state of inode > compared with MDS's state. And we need to "re-new" the existing inode with > the actual state that we received from MDS side. My vision is that we need > to take into account the distributed nature of Ceph and inode metadata can > be updated from multiple CephFS kernel client instances. Am I right here? As I mentioned in my reply to Jeff, I'm thinking of what happens in the event that we have a file that has hard links in several directories in a situation where several of those links are looked up simultaneously. Can we end up with ceph_fill_inode() being run in parallel on several threads on the same inode? Actually, the use of ci->i_ceph_lock looks like it should make it safe, now that I look at it again. David