Re: FreeBSD NFSv4.1 nfsd, named attribute support (OPENATTR)?

From: Rick Macklem <rick.macklem_at_gmail.com>
Date: Sun, 02 Mar 2025 23:48:42 UTC
On Tue, Feb 18, 2025 at 4:14 PM Lionel Cons <lionelcons1972@gmail.com> wrote:
>
> On Mon, 20 Jan 2025 at 13:15, Lionel Cons <lionelcons1972@gmail.com> wrote:
> >
> > On Sun, 12 Jan 2025 at 16:50, Rick Macklem <rick.macklem@gmail.com> wrote:
> > >
> > > On Sun, Jan 12, 2025 at 2:09 AM Cedric Blancher
> > > <cedric.blancher@gmail.com> wrote:
> > > >
> > > > Good morning!
> > > >
> > > > Does FreeBSD NFSv4.1 nfsd support named attributes (e.g. OPENATTR),
> > > > per https://datatracker.ietf.org/doc/html/rfc5661#section-5.3
> > > >
> > > > ZFS and Solaris UFS support named attributes (via O_XATTR), does
> > > > FreeBSD do it too?
> > > No. fork files/resource forks (or whatever you choose to call them)
> > > have been discussed multiple times.
> > >
> > > If I recall correctly, one showstopper was fixing the archive tools.
> > > There was also the generic argument that Linux doesn't support them.
> > > Then there was the issue of what VFS/VOP changes were required.
> > > (The FreeBSD VFS carries vnode locks across VOP calls and is at
> > > what I would call a lower level than Solaris.)
> > > --> Which all comes down to who will do the work?
> > >
> > > If I recall correctly, there was a time when a group associated with
> > > CERN needed them to transition away from Solaris.
> >
> > That was my team, and there is still the need to do it. What keeps us
> > FRUSTRATED is the lack of progress. Well, and "no", we cannot do it
> > ourselves, this is well beyond the expertise my team has.
>
> Does anyone have any suggestions on how to proceed?
The patch found here does the very basics for ZFS (no NFSv4 code yet).
https://people.freebsd.org/~rmacklem/xattr.patch

It will only work for a ZFS file system and I think you need to set the
xattr property to dir.
Once you apply the patch to a kernel and rebuild/run that kernel,
you need to copy /usr/src/sys/sys/fcntl.h to /usr/include/sys.
The attached trivial test priogram should work.
(It uses O_NAMEDATTR in a manner similar to Solaris, although
I do not have a Solaris system to play with, so the semantics might
not be exactly the same?)

If people pick this up and test it, I will be inspired to continue to
work on it.

I will come up with NFSv4 code relatively soon and put this up
on github someday. I have no idea if this will ever make it into
FreeBSD's main?

rick
ps: See the attached trivial test program for how to use it.

>
> Lionel
>