git: 55089ef4f8bb - main - nfscl: Make vfs.nfs.maxcopyrange larger by default

Rick Macklem rmacklem at FreeBSD.org
Sat Sep 11 22:39:40 UTC 2021


The branch main has been updated by rmacklem:

URL: https://cgit.FreeBSD.org/src/commit/?id=55089ef4f8bb7c4d18ee964b4214024e35ae4b0e

commit 55089ef4f8bb7c4d18ee964b4214024e35ae4b0e
Author:     Rick Macklem <rmacklem at FreeBSD.org>
AuthorDate: 2021-09-11 22:36:32 +0000
Commit:     Rick Macklem <rmacklem at FreeBSD.org>
CommitDate: 2021-09-11 22:36:32 +0000

    nfscl: Make vfs.nfs.maxcopyrange larger by default
    
    As of commit 103b207536f9, the NFSv4.2 server will limit the size
    of a Copy operation based upon a 1 second timeout.  The Linux 5.2
    kernel server also limits Copy operation size to 4Mbytes.
    As such, the NFSv4.2 client can attempt a large Copy without
    resulting in a long RPC RTT for these servers.
    
    This patch changes vfs.nfs.maxcopyrange to 64bits and sets
    the default to the maximum possible size of SSIZE_MAX, since
    a larger size makes the Copy operation more efficient and
    allows for copying to complete with fewer RPCs.
    The sysctl may be need to be made smaller for other non-FreeBSD
    NFSv4.2 servers.
    
    MFC after:      2 weeks
---
 sys/fs/nfs/nfs_commonsubs.c     | 4 ----
 sys/fs/nfsclient/nfs_clrpcops.c | 5 ++++-
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c
index 20f5618c202c..73ce2afefd20 100644
--- a/sys/fs/nfs/nfs_commonsubs.c
+++ b/sys/fs/nfs/nfs_commonsubs.c
@@ -95,10 +95,6 @@ int nfsrv_maxpnfsmirror = 1;
 SYSCTL_INT(_vfs_nfs, OID_AUTO, pnfsmirror, CTLFLAG_RD,
     &nfsrv_maxpnfsmirror, 0, "Mirror level for pNFS service");
 
-int nfs_maxcopyrange = 10 * 1024 * 1024;
-SYSCTL_INT(_vfs_nfs, OID_AUTO, maxcopyrange, CTLFLAG_RW,
-    &nfs_maxcopyrange, 0, "Max size of a Copy so RPC times reasonable");
-
 /*
  * This array of structures indicates, for V4:
  * retfh - which of 3 types of calling args are used
diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c
index f9636bc28365..0a3826ed8dc1 100644
--- a/sys/fs/nfsclient/nfs_clrpcops.c
+++ b/sys/fs/nfsclient/nfs_clrpcops.c
@@ -62,6 +62,10 @@ static int	nfscl_dssameconn = 0;
 SYSCTL_INT(_vfs_nfs, OID_AUTO, dssameconn, CTLFLAG_RW,
     &nfscl_dssameconn, 0, "Use same TCP connection to multiple DSs");
 
+static uint64_t nfs_maxcopyrange = SSIZE_MAX;
+SYSCTL_U64(_vfs_nfs, OID_AUTO, maxcopyrange, CTLFLAG_RW,
+    &nfs_maxcopyrange, 0, "Max size of a Copy so RPC times reasonable");
+
 /*
  * Global variables
  */
@@ -75,7 +79,6 @@ extern char nfsv4_callbackaddr[INET6_ADDRSTRLEN];
 extern int nfscl_debuglevel;
 extern int nfs_pnfsiothreads;
 extern u_long sb_max_adj;
-extern int nfs_maxcopyrange;
 NFSCLSTATEMUTEX;
 int nfstest_outofseq = 0;
 int nfscl_assumeposixlocks = 1;


More information about the dev-commits-src-all mailing list