svn commit: r274150 - stable/10/sys/fs/nfsclient

Rick Macklem rmacklem at FreeBSD.org
Wed Nov 5 23:12:40 UTC 2014


Author: rmacklem
Date: Wed Nov  5 23:12:39 2014
New Revision: 274150
URL: https://svnweb.freebsd.org/changeset/base/274150

Log:
  MFC: r273486
  Clip the settings for the NFS rsize, wsize mount options
  to a power of 2. For non-power of 2 settings, intermittent
  page faults have been reported. Although the bug that causes
  these page faults/crashes has not been identified, it does
  not appear to occur when rsize, wsize is a power of 2.

Modified:
  stable/10/sys/fs/nfsclient/nfs_clvfsops.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/fs/nfsclient/nfs_clvfsops.c
==============================================================================
--- stable/10/sys/fs/nfsclient/nfs_clvfsops.c	Wed Nov  5 22:50:33 2014	(r274149)
+++ stable/10/sys/fs/nfsclient/nfs_clvfsops.c	Wed Nov  5 23:12:39 2014	(r274150)
@@ -621,17 +621,27 @@ nfs_decode_args(struct mount *mp, struct
 
 	if ((argp->flags & NFSMNT_WSIZE) && argp->wsize > 0) {
 		nmp->nm_wsize = argp->wsize;
-		/* Round down to multiple of blocksize */
-		nmp->nm_wsize &= ~(NFS_FABLKSIZE - 1);
-		if (nmp->nm_wsize <= 0)
+		/*
+		 * Clip at the power of 2 below the size. There is an
+		 * issue (not isolated) that causes intermittent page
+		 * faults if this is not done.
+		 */
+		if (nmp->nm_wsize > NFS_FABLKSIZE)
+			nmp->nm_wsize = 1 << (fls(nmp->nm_wsize) - 1);
+		else
 			nmp->nm_wsize = NFS_FABLKSIZE;
 	}
 
 	if ((argp->flags & NFSMNT_RSIZE) && argp->rsize > 0) {
 		nmp->nm_rsize = argp->rsize;
-		/* Round down to multiple of blocksize */
-		nmp->nm_rsize &= ~(NFS_FABLKSIZE - 1);
-		if (nmp->nm_rsize <= 0)
+		/*
+		 * Clip at the power of 2 below the size. There is an
+		 * issue (not isolated) that causes intermittent page
+		 * faults if this is not done.
+		 */
+		if (nmp->nm_rsize > NFS_FABLKSIZE)
+			nmp->nm_rsize = 1 << (fls(nmp->nm_rsize) - 1);
+		else
 			nmp->nm_rsize = NFS_FABLKSIZE;
 	}
 


More information about the svn-src-all mailing list