Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Jul 2018 23:23:29 +0000 (UTC)
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r336215 - head/sys/fs/nfsserver
Message-ID:  <201807112323.w6BNNTZ2019356@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rmacklem
Date: Wed Jul 11 23:23:29 2018
New Revision: 336215
URL: https://svnweb.freebsd.org/changeset/base/336215

Log:
  Ignore the cookie verifier for NFSv4.1 when the cookie is 0.
  
  RFC5661 states that the cookie verifier should be 0 when the cookie is 0.
  However, the wording is somewhat unclear and a recent discussion on the
  nfsv4@ietf.org mailing list indicated that the NFSv4 server should ignore
  the cookie verifier's value when the dirctory offset cookie is 0.
  This patch deletes the check for this that would return NFSERR_BAD_COOKIE
  when the verifier was not 0.
  This was found during testing of the ESXi client against the NFSv4.1 server.
  
  Reported by:	daniel@ftml.net (via packet trace)
  MFC after:	2 weeks

Modified:
  head/sys/fs/nfsserver/nfs_nfsdport.c

Modified: head/sys/fs/nfsserver/nfs_nfsdport.c
==============================================================================
--- head/sys/fs/nfsserver/nfs_nfsdport.c	Wed Jul 11 22:23:50 2018	(r336214)
+++ head/sys/fs/nfsserver/nfs_nfsdport.c	Wed Jul 11 23:23:29 2018	(r336215)
@@ -2101,6 +2101,7 @@ nfsrvd_readdirplus(struct nfsrv_descript *nd, int isdg
 	}
 	fullsiz = siz;
 	nd->nd_repstat = getret = nfsvno_getattr(vp, &at, nd, p, 1, NULL);
+#if 0
 	if (!nd->nd_repstat) {
 	    if (off && verf != at.na_filerev) {
 		/*
@@ -2109,17 +2110,14 @@ nfsrvd_readdirplus(struct nfsrv_descript *nd, int isdg
 		 * removed/added unless that offset cookies returned to
 		 * the client are no longer valid.
 		 */
-#if 0
 		if (nd->nd_flag & ND_NFSV4) {
 			nd->nd_repstat = NFSERR_NOTSAME;
 		} else {
 			nd->nd_repstat = NFSERR_BAD_COOKIE;
 		}
-#endif
-	    } else if ((nd->nd_flag & ND_NFSV4) && off == 0 && verf != 0) {
-		nd->nd_repstat = NFSERR_BAD_COOKIE;
 	    }
 	}
+#endif
 	if (!nd->nd_repstat && vp->v_type != VDIR)
 		nd->nd_repstat = NFSERR_NOTDIR;
 	if (!nd->nd_repstat && cnt == 0)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201807112323.w6BNNTZ2019356>