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 > >