Re: NFS mountd version 3 over TCP

From: Rick Macklem <rmacklem_at_uoguelph.ca>
Date: Mon, 29 Aug 2011 11:47:14 -0400 (EDT)
Steve Wills wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 08/27/11 21:23, Steve Wills wrote:
> > On 08/27/11 20:55, Rick Macklem wrote:
> >>> I don't know why the nfsd wouldn't be able to bind(2) to port
> >>> #2049 a
> >>> second time for UDP, but someone on the net side might know? (Just
> >>> in
> >>> case it is a problem that has already been fixed, I'd try a newer
> >>> kernel.)
> >
> > Will do, see below.
> >
> >>> The new server was broken by r224778 on Aug. 11 and fixed by
> >>> r224911 on
> >>> Aug. 16. (I recall you mentioning Aug. 11?)
> >
> > My kernel is from Aug 13, so definitely would fall into that range.
> > I'll
> > update and rebuild and see how it goes.
> >
> 
> After working around the /dev/stdout issue by booting an old kernel
> and
> doing a buildworld from there, I was able to update my kernel to
> todays
> sources. ESXi is now able to mount the nfs share. However, when I
> attempt to start a VM, it reports:
> 
> Failed to power on VM.
> Unable to retrieve the current working directory: 0 (Input/output
> error). Check if the directory has been deleted or unmounted.
> 
> and
> 
> FILE: File_Cwd: getcwd() failed: Input/output error
> 
> I have tcpdump output available here:
> 
> http://people.freebsd.org/~swills/nfs2.pcap
> 
> if that helps.
> 
I think it did. Lookup of ".." was failing. I think that was because
ni_strictrelative (added for capabilities) wasn't initialized and
happened to be non-zero.

Please try this patch and let us know if it helps:
--- fs/nfsserver/nfs_nfsdport.c.sav	2011-08-29 11:05:00.000000000 -0400
+++ fs/nfsserver/nfs_nfsdport.c	2011-08-29 11:29:43.000000000 -0400
_at__at_ -282,6 +282,10 _at__at_ nfsvno_namei(struct nfsrv_descript *nd, 
 
 	*retdirp = NULL;
 	cnp->cn_nameptr = cnp->cn_pnbuf;
+	/* Initialize new fields for capabilities. */
+	ndp->ni_strictrelative = 0;
+	ndp->ni_rightsneeded = 0;
+	ndp->ni_baserights = 0;
 	/*
 	 * Extract and set starting directory.
 	 */

It's also at (in case white space gets munged)
  http://people.freebsd.org/~rmacklem/dotdot.patch

Thanks for reporting this, I'm not sure when these fields not
being initialized would have been noticed otherwise, rick

> Steve
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.17 (FreeBSD)
> 
> iQEcBAEBAgAGBQJOWzShAAoJEPXPYrMgexuhxo0H/0ALErvMrpcxtkuUv07ipj0O
> Z8p3YkMFkckSy6s0QCAOCVgjbqZptCkKg96vMehG3nI5o2HtA43h5y6UNvMi1FWE
> WOiIFbzXkgfn1pubv2YyFwaDK1aFXMswwYaCHSP7a+K8fpjDOiR5ZnhhyXcb7k1X
> YmURkSEbLbngLdIfywPATSiby9PyFVqyMjhU3yW/Y8QLueEjK4xq5RsbmU1Qmv2B
> bjA11x9birNvc//iBp6zTqBP752soqK+M9aXrjjm9GzhN0UeKdXseWt9zd3mu2qs
> cfPUqz7DSATQNxwfpqIGnE4naYzPyKPbDbv6k5lKDjmmHn2O7VzXQXimjE6sT3o=
> =Dpjc
> -----END PGP SIGNATURE-----
Received on Mon Aug 29 2011 - 13:47:15 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:17 UTC