Messages in this thread | | | Date | Mon, 1 Apr 2019 01:09:37 +0100 | From | Al Viro <> | Subject | Re: [PATCH v2 0/5] pid: add pidfd_open() |
| |
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...
| |