Re: [RFC] Null Namespaces
From: Andy Lutomirski <luto@kernel.org>
Date: 2026-06-30 17:41:54
Also in:
linux-arch, linux-fsdevel, lkml
On Tue, Jun 30, 2026 at 10:20 AM John Ericson [off-list ref] wrote:
quoted hunk ↗ jump to hunk
I'll throw in the towel after this email, I promise :) On Tue, Jun 30, 2026, at 3:14 AM, Christian Brauner wrote:quoted
I think Al is about to have a stroke reading this... and I might too.Hahaha. Alas, C does have a longstanding beef with discriminated unions--- I can't do anything about that! (Well, other than wait 15 years forthis stuff to eventually be rewritten in Rust, that is ;).)quoted
I agree with the sentimentThanks, I appreciate it :).quoted
You know what the easy solution is: don't allow a struct path to be empty...Just so we're clear, my quibble here is purely behavioral: the nullfs directory can be opened, right? And that open directory can also be getdents64ed (yielding no entries, since it is empty), right? If I am wrong about these things then sure, no objections from me --- let's ship nullfs FDs right away!
Christian, how would you feel about a variant of nullfs that fails all operations instead of acting as if it were empty? (I'm far from convinced that this would actually be better, but it at least seems pretty straightforwardly possible. And obviously the nullfs-at-the-root-of-everything would not want this variant.)
My reasoning for being a bit of a weenie on that behavior is just that I think "fail fast" is good. A lot of userspace programs crawl the file space pretty willy-nilly (e.g. they are doing some caching thing, or they are looking for something, etc.). I suspect the nullfs approach is going to result in more "red herring" error messages and google searches about "why can't I write to the working directory, not even as root" etc. I just think "no directory" vs "immutable empty directory" sends a clearer message to userspace, and will align mental models more rapidly.
This is the difference between a greenfield project and working with existing designs. If I were designing an OS and its entire API from scratch, then, sure, the cwd and the root directory would just be well-known items in a capability table, and they could be absent. Linux's implementation and its API are not greenfield projects, though, and it seems pretty silly to try to make this change. --Andy