On Fri, Apr 4, 2025 at 6:37 AM Rick Macklem <rick.mack...@gmail.com> wrote:
>
> On Fri, Apr 4, 2025 at 1:48 AM Dennis Clarke <dcla...@blastwave.org> wrote:
> >
> > On 4/3/25 19:52, Shawn Webb wrote:
> > > On Wed, Apr 02, 2025 at 01:51:26PM -0700, Rick Macklem wrote:
> > >> The commit 2ec2ba7e232d just hit main.  I do not think it will
> > >> cause problems, but it is fairly large.
> > >>
> > >> Man page updates will be done as separate commits.
> > >>
> > >> Hopefully this will not cause grief, rick
> > >
> > > Hey Rick,
> > >
> > > The patch review test plan mentions a patch to ZFS itself to support
> > > named attributes. Is that patch available somewhere?
> > >
> > > Thanks,
> > >
> >
> > I am a little confused but the features seem to be there even if I do
> > not recall how to test :
> >
> > titan# uname -apKU
> > FreeBSD titan 15.0-CURRENT FreeBSD 15.0-CURRENT #0
> > main-n276246-628d1501f7ec: Fri Apr  4 06:57:29 GMT 2025
> > root@titan:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 amd64 1500035
> > 1500035
> > titan#
> >
> >
> > Create a new ZPool and then a ZFS filesystem with xattr=on :
> >
> > titan# camcontrol devlist
> > <ST20000NM007D-3DJ103 SN03>        at scbus0 target 0 lun 0 (pass0,ada0)
> > <ST20000NM007D-3DJ103 SN03>        at scbus1 target 0 lun 0 (pass1,ada1)
> > <AHCI SGPIO Enclosure 2.00 0001>   at scbus2 target 0 lun 0 (ses0,pass2)
> > <AHCI SGPIO Enclosure 2.00 0001>   at scbus6 target 0 lun 0 (ses1,pass3)
> > <SAMSUNG MZVKW512HMJP-000L7 6L6QCXA7>  at scbus7 target 0 lun 1 (pass4,nda0)
> > titan#
> >
> > titan# gpart create -s GPT /dev/ada0
> > ada0 created
> > titan# gpart create -s GPT /dev/ada1
> > ada1 created
> > titan#
> > titan# gpart show /dev/ada0
> > =>         40  39063650224  ada0  GPT  (18T)
> >             40  39063650224        - free -  (18T)
> >
> > titan#
> > titan# gpart show /dev/ada1
> > =>         40  39063650224  ada1  GPT  (18T)
> >             40  39063650224        - free -  (18T)
> >
> > titan#
> > titan# gpart add -t freebsd-zfs -l fbsd15zfs0 /dev/ada0
> > ada0p1 added
> > titan# gpart add -t freebsd-zfs -l fbsd15zfs1 /dev/ada1
> > ada1p1 added
> > titan#
> > titan# gpart show -l /dev/ada0
> > =>         40  39063650224  ada0  GPT  (18T)
> >             40  39063650224     1  fbsd15zfs0  (18T)
> >
> > titan#
> > titan# gpart show -l /dev/ada1
> > =>         40  39063650224  ada1  GPT  (18T)
> >             40  39063650224     1  fbsd15zfs1  (18T)
> >
> > titan#
> > titan# zpool create -O compression=zstd -O checksum=sha512 \
> >  > -O atime=off -O xattr=on \
> >  > -o autoexpand=off -o autoreplace=on -o failmode=continue \
> >  > -o listsnaps=off \
> >  > -m none tank mirror /dev/ada0p1 /dev/ada1p1
> > titan# zpool list
> > NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP
> > HEALTH  ALTROOT
> > tank   18.2T   588K  18.2T        -         -     0%     0%  1.00x
> > ONLINE  -
> > titan   460G  44.7G   415G        -         -     0%     9%  1.00x
> > ONLINE  -
> > titan#
> >
> > titan# zfs create -o mountpoint=/opt/xattr -o canmount=on \
> >  > -o checksum=sha512 -o compression=zstd \
> >  > -o atime=on -o exec=on -o setuid=on -o xattr=on -o copies=1 \
> >  > tank/xattr
> > titan#
> > titan# zfs list -r tank
> > NAME         USED  AVAIL  REFER  MOUNTPOINT
> > tank         696K  18.1T    96K  none
> > tank/xattr    96K  18.1T    96K  /opt/xattr
> > titan#
> > titan# zfs set quota=64G tank/xattr
> > titan# zfs list -r tank
> > NAME         USED  AVAIL  REFER  MOUNTPOINT
> > tank         756K  18.1T    96K  none
> > tank/xattr    96K  64.0G    96K  /opt/xattr
> > titan# mkdir /opt/xattr/test
> > titan# getfacl /opt/xattr/test
> > # file: /opt/xattr/test
> > # owner: root
> > # group: wheel
> >              owner@:rwxp--aARWcCos:-------:allow
> >              group@:r-x---a-R-c--s:-------:allow
> >           everyone@:r-x---a-R-c--s:-------:allow
> > titan#
> > titan# chgrp devl /opt/xattr/test
> > titan# getfacl /opt/xattr/test
> > # file: /opt/xattr/test
> > # owner: root
> > # group: devl
> >              owner@:rwxp--aARWcCos:-------:allow
> >              group@:r-x---a-R-c--s:-------:allow
> >           everyone@:r-x---a-R-c--s:-------:allow
> > titan#
This ACL did not change because "group@" refers to the
group owner of the file. Since you changed the group owner,
"group@" now refers to "devl".
If you want to see this ACL change, you could "chmod 400 /opt/xattr/test"
and then getfacl it again.

> >
> > titan# setfacl -m group:devl:rwx /opt/xattr/test
> > setfacl: /opt/xattr/test: branding mismatch; existing ACL is NFSv4,
> > entry to be merged is POSIX.1e
> > titan#
> > titan#
> >
> > well ooops .... what was the idea here again ??
> Well, this has nothing to do with my recent commit.
>
> ZFS has always supported NFSv4 ACLs (and not POSIX draft ACLs)
> on FreeBSD. (I actually am planning on a ZFS patch to add POSIX
> draft ACL support, but I haven't even started to work on it. I do have
> an IETF draft that adds POSIX draft ACL support to NFSv4.2.)
>
> If you look at the setfacl man page, it shows you how to set NFSv4
> ACLs.
Oh, and to clarify it, ACLs are stored as "system" extended attributes,
which this new syscall/KAPI does not access and, in general, anything
else can be stored in extended attributes as well.

rick
>
> ZFS has also always also supported extended attributes on FreeBSD.
> They are currently accessed via getextattr(1) and friends.
> The patch I just committed to main adds a different syscall/KAPI
> that allows manipulation of the extended attributes in a Solaris-like
> way, which is what NFSv4 calls "named attributes".
> Since the ZFS patch in not there yet, you cannot actually use this
> new syscall/KAPI (it will just fail with errors like ENOATTR).
>
> rick
>
>
> >
> >
> > --
> > --
> > Dennis Clarke
> > RISC-V/SPARC/PPC/ARM/CISC
> > UNIX and Linux spoken
> >

Reply via email to