On Tue, Aug 11, 2020 at 08:20:24AM -0700, Linus Torvalds wrote: > I don't think this works for the reasons Al says, but a slight > modification might. > > IOW, if you do something more along the lines of > > fd = open(""foo/bar", O_PATH); > metadatafd = openat(fd, "metadataname", O_ALT); > > it might be workable. > > So you couldn't do it with _one_ pathname, because that is always > fundamentally going to hit pathname lookup rules. > > But if you start a new path lookup with new rules, that's fine. Except that you suddenly see non-directory dentries get children. And a lot of dcache-related logics needs to be changed if that becomes possible. I agree that xattrs are garbage, but this approach won't be a straightforward solution. Can those suckers be passed to ...at() as starting points? Can they be bound in namespace? Can something be bound *on* them? What do they have for inodes and what maintains their inumbers (and st_dev, while we are at it)? Can _they_ have secondaries like that (sensu Swift)? Is that a flat space, or can they be directories? Only a part of the problems is implementation-related (and those are not trivial at all); most the fun comes from semantics of those things. And answers to the implementation questions are seriously dependent upon that...