NFS mountd version 3 over TCP

Rick Macklem rmacklem at uoguelph.ca
Sat Aug 27 13:00:36 UTC 2011


Steve Wills wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 08/26/11 22:16, Steve Wills wrote:
> > On 08/26/11 21:41, Steve Wills wrote:
> >> Hi,
> >
> >> I'm trying to use 9.0-CURRENT as an NFS server for a VMWare ESXi
> >> 4.1.0.
> >> When I attempt the mount, it logs this message:
> >
> >> The NFS server does not support MOUNT version 3 over TCP
> >
> >> Have I configured something wrong and if so what? Or is this
> >> something
> >> related to the new NFS code?
> >
> > I guess a little more info would be helpful...
> >
> > rc.conf has:
> >
> > nfs_server_enable="YES"
> > rpcbind_enable="YES"
> > mountd_enable="YES"
> > rpc_statd_enable="YES"
> > rpc_lockd_enable="YES"
> >
> > /etc/exports contains, amongst others:
> >
> > /boxy/vmware -alldirs -maproot=0:0 -network 10.0.1 -mask
> > 255.255.255.0
> >
> > rpcinfo shows:
> >
> >    program version netid address service owner
> >     100000 4 tcp 0.0.0.0.0.111 rpcbind superuser
> >     100000 3 tcp 0.0.0.0.0.111 rpcbind superuser
> >     100000 2 tcp 0.0.0.0.0.111 rpcbind superuser
> >     100000 4 udp 0.0.0.0.0.111 rpcbind superuser
> >     100000 3 udp 0.0.0.0.0.111 rpcbind superuser
> >     100000 2 udp 0.0.0.0.0.111 rpcbind superuser
> >     100000 4 tcp6 ::.0.111 rpcbind superuser
> >     100000 3 tcp6 ::.0.111 rpcbind superuser
> >     100000 4 udp6 ::.0.111 rpcbind superuser
> >     100000 3 udp6 ::.0.111 rpcbind superuser
> >     100000 4 local /var/run/rpcbind.sock rpcbind superuser
> >     100000 3 local /var/run/rpcbind.sock rpcbind superuser
> >     100000 2 local /var/run/rpcbind.sock rpcbind superuser
> >     100005 1 udp6 ::.2.224 mountd superuser
> >     100005 3 udp6 ::.2.224 mountd superuser
> >     100005 1 tcp6 ::.2.224 mountd superuser
> >     100005 3 tcp6 ::.2.224 mountd superuser
> >     100005 1 udp 0.0.0.0.2.224 mountd superuser
> >     100005 3 udp 0.0.0.0.2.224 mountd superuser
> >     100005 1 tcp 0.0.0.0.2.224 mountd superuser
> >     100005 3 tcp 0.0.0.0.2.224 mountd superuser
This line indicates that mountd over tcp is registered for v3,
so I suspect the error message is misleading??
> 
> As you might guess, this rpcinfo output indicates nfsd wasn't running.
> I
> am seeing this:
> 
> can't bind udp addr *: Address already in use
> 
Hmm, this should only happen if the nfsd is already running (or was
recently running), since nothing else binds to port #2049 normally.
(If something else grabbed port#2049 for udp, then that would explain
 this.) I assume the message was from nfsd?

> in syslog. Setting this:
> 
> nfs_server_flags="-t -n 4"
> 
> allowed it to startup, but it then timed out an fsinfo call. Adding -o
> to the nfs_server_flags to use the old nfs server allowed vmware to
> mount. FWIW, I can't find any reason for the udp message above,
> nothing
> seems to be using it that I can find. Ideas? tcpdumps are available if
> anyone want them.
> 
Could you make sure you have this patch, which was committed by zkirsch
as r224637. It was a fix they needed for a customer having difficulties
mounting via VMware. (Our discussion about it agreed that the VMware
client was broken for this case, but the patch fixed the problem.)

If you didn't already have this patch, please test it (ie. apply it and
take "-o" off the nfsd flags) and let us know if it fixed your problem?

--- head/sys/fs/nfsserver/nfs_nfsdserv.c	2011/07/31 20:06:11	224554
+++ head/sys/fs/nfsserver/nfs_nfsdserv.c	2011/08/03 18:50:19	224637
@@ -620,7 +620,7 @@
     vnode_t vp, NFSPROC_T *p, struct nfsexstuff *exp)
 {
 	u_int32_t *tl;
-	int error = 0, cnt, len, getret = 1, reqlen, eof = 0;
+	int error = 0, cnt, getret = 1, reqlen, eof = 0;
 	mbuf_t m2, m3;
 	struct nfsvattr nva;
 	off_t off = 0x0;
@@ -714,11 +714,11 @@
 		eof = 1;
 	} else if (reqlen == 0)
 		cnt = 0;
-	else if ((off + reqlen) > nva.na_size)
+	else if ((off + reqlen) >= nva.na_size) {
 		cnt = nva.na_size - off;
-	else
+		eof = 1;
+	} else
 		cnt = reqlen;
-	len = NFSM_RNDUP(cnt);
 	m3 = NULL;
 	if (cnt > 0) {
 		nd->nd_repstat = nfsvno_read(vp, off, cnt, nd->nd_cred, p,
@@ -748,7 +748,7 @@
 			*tl++ = txdr_unsigned(cnt);
 		} else
 			NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
-		if (len < reqlen || eof)
+		if (eof)
 			*tl++ = newnfs_true;
 		else
 			*tl++ = newnfs_false;

> Steve
> 
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.17 (FreeBSD)
> 
> iQEcBAEBAgAGBQJOWF6PAAoJEPXPYrMgexuhHPYIAJ6SVxtORDbesvU35ktAS/id
> 5iWyTWO3CTHXT42uP4IZBT1o2AWFu6e9wUX84YEZyujMln0E++8hZccaa8zQBJhr
> febHkZxqPdQOo/mpg1ci5J70Hs1UBV9cxU3uOA83vxunOM6xwA0B+4krfflj/k7P
> cPtpztmuepQQ8/S5hB5ajnfM/gFOh1f2uPwWTj2/5NSWMoVfN3f0539bh05XKfRa
> 4X7XKxN/J4HBRGaNjnL8IWu86AW60H9Q3gdisdtT0k9sK4X3DswmiRMlMt4M4rS8
> oX0vrgruTiKZf+bsraYvhuo4JyselXMicTnW7rUOVx8jiNVVk1nymSVF1XDUOrw=
> =MeJv
> -----END PGP SIGNATURE-----
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to
> "freebsd-current-unsubscribe at freebsd.org"


More information about the freebsd-current mailing list