On Sun, Mar 31, 2019 at 04:40:15PM -0700, Linus Torvalds wrote: > The clever alternative, which might be the RightWay(tm) is to just > create a completely unattached dentry, and basically tie it into the > actual /proc filesystem hierarchy at lookup() time when somebody does > the openat() using it for the first time. You'd get a very simple > callback: since the dentry would be unattached, you'd be guaranteed to > get a "lookup()" from the VFS layer, and that lookup would then do the > "hook into the actual /proc filesystem". Ugh... Which vfsmount would you have to go with it? > We already kind of do things like that in the VFS layer when we have > unattached dentries (because of "look up by filehandle" etc). In many > ways the "pidfd_open()" really is exactly a "look up by file handle" > operation, it just so happens that the "file handle" is just the > pid/namespace combination. Except that we never let unattached _directory_ dentries out - if we can't reattach them to the tree, open-by-handle will tell you to take a hike. > And if the splice alias (which is what the VFS layer calls that "tie > aliased dentry to the parent" operation) fails, because the /proc > filesystem isn't mounted or whatever, then trying to look up names off > the thing will also fail. > It's a tiny bit too clever for my taste, and it's not *exactly* the > same thing as our normal inode alias handling, but it's pretty close > conceptually (and even practically). It's more than a tiny bit too clever for mine... > So it would basically do something very similar to the ioctl, but it > would do it implicitly and automatically at that first lookup. > > That would also mean that you'd not actually pay the cost of doing any > of this *unless* you also end up trying to open things in /proc using > that pidfd. Al, back to normal life and digging through several flamefests from hell...