Re: [PATCH 00/29] fs: require filesystems to explicitly opt-in to nfsd export support

Jeff Layton
2026-01-19T12:30:11Z

On Mon, 2026-01-19 at 18:22 +1100, NeilBrown wrote:
> On Mon, 19 Jan 2026, Christoph Hellwig wrote:
> > On Mon, Jan 19, 2026 at 10:23:13AM +1100, NeilBrown wrote:
> > > > This was Chuck's suggested name. His point was that STABLE means that
> > > > the FH's don't change during the lifetime of the file.
> > > >
> > > > I don't much care about the flag name, so if everyone likes PERSISTENT
> > > > better I'll roll with that.
> > >
> > > I don't like PERSISTENT.
> > > I'd rather call a spade a spade.
> > >
> > > EXPORT_OP_SUPPORTS_NFS_EXPORT
> > > or
> > > EXPORT_OP_NOT_NFS_COMPATIBLE
> > >
> > > The issue here is NFS export and indirection doesn't bring any benefits.
> >
> > No, it absolutely is not. And the whole concept of calling something
> > after the initial or main use is a recipe for a mess.
>
> We are calling it for it's only use. If there was ever another use, we
> could change the name if that made sense. It is not a public name, it
> is easy to change.
>
> >
> > Pick a name that conveys what the flag is about, and document those
> > semantics well. This flag is about the fact that for a given file,
> > as long as that file exists in the file system the handle is stable.
> > Both stable and persistent are suitable for that, nfs is everything
> > but.
>
> My understanding is that kernfs would not get the flag.
> kernfs filehandles do not change as long as the file exist.
> But this is not sufficient for the files to be usefully exported.
>
> I suspect kernfs does re-use filehandles relatively soon after the
> file/object has been destroyed. Maybe that is the real problem here:
> filehandle reuse, not filehandle stability.
>
> Jeff: could you please give details (and preserve them in future cover
> letters) of which filesystems are known to have problems and what
> exactly those problems are?
>

The only one I'm aware of at the moment is cgroupfs. sb->s_export_op
gets populated on that fs, so it's exportable via nfsd.

Its fs does not show up under the v4 pseudoroot, but you can mount
/sys/fs/cgroup with v3 if it's specifically exported. Directories seem
to work properly (I can ls and cd around in there), but the files all
come back empty when read. I didn't play around with trying to write to
any of them.

I didn't do a lot of investigation here, since I didn't actually expect
it to work properly.

> >
> > Remember nfs also support volatile file handles, and other applications
> > might rely on this (I know of quite a few user space applications that
> > do, but they are kinda hardwired to xfs anyway).
>
> The NFS protocol supports volatile file handles. knfsd does not.
> So maybe
> EXPORT_OP_NOT_NFSD_COMPATIBLE
> might be better. or EXPORT_OP_NOT_LINUX_NFSD_COMPATIBLE.
> (I prefer opt-out rather than opt-in because nfsd export was the
> original purpose of export_operations, but it isn't something
> I would fight for)
>

The whole point of this is to make nfsd export an opt-in in. Exporting
via NFS is something that filesystem developers need to consider
carefully.

cgroupfs is not that big a worry. My bigger concern is new filesystems
being added that do add this for local access and become exportable
without vetting that they will actually work correctly (well, that and
FUSE exportability, which is a bigger can of worms).

There is another approach we could consider: We could move the
export_operations that are needed for local filehandle access into a
new struct filehandle_operations or something. It does mean adding an
extra pointer to the super_block for the new operations vector, but it
might be more intuitive.
--
Jeff Layton <jlayton@kernel.org>