On Tue, Sep 24, 2019 at 04:11:07PM +0100, Al Viro wrote: > On Tue, Sep 24, 2019 at 11:01:45AM -0400, Josef Bacik wrote: > > > Sorry I mis-read the code a little bit. This is purely for the subvolume link > > directories. We haven't wandered down into this directory yet. If the > > subvolume is being deleted and we still have the fake directory entry for it > > then we just populate it with this dummy inode and then we can't lookup anything > > underneath it. Thanks, > > Umm... OK, I guess my question would be better stated a bit differently: we > have a directory inode, with btrfs_lookup() for lookups in it *and* with > dcache_readdir() called when you try to do getdents(2) on that thing. > How does that work? Sorry I hadn't read through the context. We won't end up with things under this directory. The lookup will try to look up into the subvolume, see that it's empty, and just return nothing. There should never be any entries that end up under this dummy entry. Thanks, Josef