Re: FreeBSD 15-20250822 NFSv4.1 server broken?
- In reply to: Rick Macklem : "Re: FreeBSD 15-20250822 NFSv4.1 server broken?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 22 Aug 2025 19:38:54 UTC
On Fri, Aug 22, 2025 at 12:29 PM Rick Macklem <rick.macklem@gmail.com> wrote: > > On Fri, Aug 22, 2025 at 8:05 AM Cedric Blancher > <cedric.blancher@gmail.com> wrote: > > > > On Fri, 22 Aug 2025 at 16:16, Rick Macklem <rick.macklem@gmail.com> wrote: > > > > > > On Fri, Aug 22, 2025 at 6:48 AM Cedric Blancher > > > <cedric.blancher@gmail.com> wrote: > > > > > > > > On Fri, 22 Aug 2025 at 15:27, Rick Macklem <rick.macklem@gmail.com> wrote: > > > > > > > > > > On Fri, Aug 22, 2025 at 3:38 AM Cedric Blancher > > > > > <cedric.blancher@gmail.com> wrote: > > > > > > > > > > > > Good morning! > > > > > > > > > > > > FreeBSD 15-2025082, NFSv4.1 server set up like this: > > > > > > # sysrc nfs_server_enable=YES > > > > > > # sysrc nfsv4_server_enable=YES > > > > > > # sysrc nfsuserd_enable=YES > > > > > > # sysrc nfscbd_enable=YES > > > > > > # sysctl vfs.nfs.enable_uidtostring=1 > > > > > > # sysctl vfs.nfsd.enable_stringtouid=1 > > > > > > # sysctl vfs.nfsd.issue_delegations=1 > > > > > > # printf 'V4: / -sec=sys\n' >>'/etc/exports' > > > > > > # service nfsd start > > > > > > # cat /etc/exports > > > > > > V4: / -sec=sys > > > > > This line only defines where the NFSv4 root is and > > > > > what security is required for system state operations > > > > > (ones not using any files). > > > > > > > > > > You also need to export the file systems as separate > > > > > lines. If using ZFS, you can do so via the "sharenfs" > > > > > property or by additional line(s) written manually in > > > > > /etc/exports. For other file systems, like UFS, you > > > > > need to put the lines in /etc/exports manually. > > > > > > > > > > One (or more, if different client hosts get different > > > > > flags) for each file system. Each line will look > > > > > something like: > > > > > /home -maproot=root -alldirs -network 192.168.1.0/24 > > > > > > > > > > The simplest variant (if your system is just one > > > > > file system) would be a line like: > > > > > / > > > > > > > > > > See the examples section of "man exports". > > > > > > > > > > After updating /etc/exports, you need to... > > > > > # service mountd reload > > > > > to get mountd to update the exports in the kernel > > > > > from what is in /etc/exports. > > > > > > > > > > rick > > > > > ps: Yes, "man exports" is confusing. I plan on trying to > > > > > improve it someday. > > > > > > > > I tried the following setup after a clean install. It works with > > > > FreeBSD 14.3, but fails with the latest FreeBSD 15 snapshot from > > > > today. > > > > Could you PLEASE have a look whether you get the same failures on > > > > Linux as we did? > > > Well, nothing should change with regard to this between 14.3 and 15.0. > > > As for the snapshots, well, they have a lot of issues right now. > > > (I will be trying a snapshot at some point soon, but I have been waiting > > > for the dust to settle.) > > > > > > > ---- cut-here ---- > > > > sysrc rpcbind_enable="YES" > > > > sysrc mountd_enable="YES" > > > > sysrc nfs_server_enable=YES > > > > sysrc nfsv4_server_enable=YES > > > > sysrc nfsuserd_flags="-domain GLOBAL.LOC" > > > > sysrc nfsuserd_enable=YES > > > > sysrc nfscbd_enable=YES > > > > sysctl vfs.nfs.enable_uidtostring=1 > > > > sysctl vfs.nfsd.enable_stringtouid=1 > > > > sysctl vfs.nfsd.issue_delegations=1 > > > > > > > > mkdir /nfsdata > > > > chmod a+rwxt /nfsdata > > > > > > > > # NFSv4.1 exports must come after the 'V4: /' line, > > > > # otherwise you get a NFS4ERR_NOFILEHANDLE > > > > printf 'V4: /\n' >'/etc/exports' > > > The only suggestion might be to try.. > > > V4:/nfsdata > > > and the mount with something like <server>:/. > > > > > > Both should work and, as you noted, did work for 14.3, > > > so it shouldn't matter. > > > > > > I suspect it is just a snapshot problem, rick > > > > I hope so, because we need O_NAMEDATTR. Which was the reason for > > today's multidisciplinary test campaign. > > > > FreeBSD 14.3 works fine as an NFSv4.2 server (thank you all!), but we > > need FreeBSD 15. > Ok. I just tried a snapshot and it worked for me. > Here's what I did. > - downloaded a file with "amd64", "20250822" and "disc1.iso" in the name. > - Ran an install of it in a little VM. > When asked... > - Traditional vs pkg based, I chose Traditional. > - When asked about partitioning, I chose Manual. > - I created three partitions: > freebsd-ufs 12Gbytes mounted on / > freebsd-swap 4Gbytes > freebsd-zfs 16Gbyte > When the install completed and I rebooted it, I edited /etc/rc.conf > so it looked like: > hostname="nfsv4-test" > ifconfig_vtnet0="inet 192.168.1.15 netmask 255.255.255.0" > sendmail_submit_enable="NO" > sendmail_outbound_enable="NO" > sendmail_msp_queue_enable="NO" > background_fsck="NO" > defaultrouter="192.168.1.254" > sshd_enable="YES" > # Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable > dumpdev="AUTO" > background_fsck="NO" > nfsuserd_enable="YES" > nfsuserd_flags="-domain nfsv4.dev" > nfs_client_enable="YES" > nfs_server_enable="YES" > nfsv4_server_enable="YES" > nfsv4_server_only="YES" > nfs_access_cache="30" > nfs_reserved_port_only="YES" > nfscbd_enable="YES" > nfs_server_flags="-t -n 32" > mountd_enable="YES" > mountd_flags="-r -S" > zfs_enable="YES" > > And I edited /etc/exports so it looked like: > /example -sec=sys -alldirs -maproot=root > V4: /example -sec=sys > > Then I did the following as root/su: > # service zfs start > # zpool create example /dev/vtbd0s1d > # zfs set xattr=dir example > --> Then I rebooted and it worked ok for a simple test > from a client using named attributes. Oh, one more thing. No one else seems to complain about this, so I doubt you'll see it, but... - If it won't reboot and drops into a loader prompt, try typing: set currdev=disk0s1 boot - For me, once it sees a ZFS partition (using MBR on bhyve) it tries to boot that and fails. The above two lines gets it to boot the UFS partition instead. rick > The FreeBSD mount command looked like: > # mount -t nfs -o nfsv4 192.168.1.15:/ /mnt > # cd /mnt > - created a file called "foo" then > # runat foo ls -l > total 0 > # runat foo cp /etc/exports myattr1 > # runat foo ls -l > total 2 > -rw-r--r-- 1 root wheel 63 Aug 22 05:13 myattr1 > > rick > ps: Obviously, things like /dev/vtbd0 might be different, based > on where/how you install it. > pss: Note that this was a snapshot of to-day. They are > "a bit bumpy" right now, as re@ says. (Some might > say he is a master of understatement;-) > > > > > > > Ced > > -- > > Cedric Blancher <cedric.blancher@gmail.com> > > [https://plus.google.com/u/0/+CedricBlancher/] > > Institute Pasteur > >