svn commit: r274152 - stable/9/sys/fs/nfsclient
Rick Macklem
rmacklem at FreeBSD.org
Wed Nov 5 23:57:34 UTC 2014
Author: rmacklem
Date: Wed Nov 5 23:57:33 2014
New Revision: 274152
URL: https://svnweb.freebsd.org/changeset/base/274152
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/9/sys/fs/nfsclient/nfs_clvfsops.c
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/fs/ (props changed)
Modified: stable/9/sys/fs/nfsclient/nfs_clvfsops.c
==============================================================================
--- stable/9/sys/fs/nfsclient/nfs_clvfsops.c Wed Nov 5 23:54:33 2014 (r274151)
+++ stable/9/sys/fs/nfsclient/nfs_clvfsops.c Wed Nov 5 23:57:33 2014 (r274152)
@@ -615,17 +615,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-stable-9
mailing list