Re: make NFSv3 default now on diskless
Date: Thu, 02 Jun 2022 14:44:06 UTC
John-Mark Gurney <jmg@funkthat.com> wrote: > I just booted FreeBSD-current diskless, using NFS root, and I ended > up having issues because by default, NFS root is only v2. > > One of things that happened was disk space available was listed as > -138G, or -144830429K. I assume this is because the server is reporting > TBs instead. Yes. NFSv2 uses 32bit sizes. > If I mount via mount_nfs, the sizes are normal/correct because it mounts > v3. I believe most specify "nfsv3" in the "/" mount line of /etc/fstab on the remote root fs. Then, when the system does a "mount -u" to make it read/write it gets toggled to NFSv3. > The other issue that I ran into is that NFSv2 can't access >4GB files > (or create them). As above, NFSv2 uses 32bit sizes. > Anyone object to adding BOOTP_NFSV3 to GENERIC? Well, that option only works when used with BOOTP_NFSROOT. The GENERIC configs for amd64, arm64,... use the other way. (Just to make it confusing, there are two different ways an NFS root fs is set up.) See below. > Or maybe making it a > tunable that defaults to set, because it seems a bit crazy to default > to v2 these days. I don't think changing the default to NFSv3 will be a problem. The reason it was NFSv2 was that, for some non-FreeBSD NFS servers, the NFSv3 file handle is different than the NFSv2 one. I added NFSv3 support to stand/libsa/nfs.c about 15years ago, so every system should be running the newer NFS code in the loader and be able to do NFSv3 booting. > This option was added in 432aad0e in 1997 so that the nfs_diskless > structure didn't need to be filled out. Does anything even > populate/fill it out anymore? I saw code in i386/i386/locore.s that > does this, but it doesn't appear anywhere else. Yes. For "options NFS_ROOT" (the other way), the loader uses "stand/libsa/nfs.c" to acquire the remote file system's root file handle and fills it in. (See nfs_setup_diskless() in sys/nfs/nfs_diskless.c.) Looking at it, it appears to enable NFSv3 so long as it finds "boot.nfsroot.nfshandlelen" set. > There also appears to possibly be a way via mount options, but I can't > see where it's documented to set them. I think you just specify "nfsv3" as a mount option in the root fs line in /etc/fstab on the root fs on the NFS server. I don't think changing the default to NFSv3 will be a problem. The hassle is testing the various cases, to make sure nothing breaks. I have no diskless setup to do testing and I don't even know when installs/upgrades actually replace the loader? rick -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."