git: a599f9f7620b - stable/13 - nfscl: Make vfs.nfs.maxcopyrange larger by default
Rick Macklem
rmacklem at FreeBSD.org
Sun Oct 3 22:45:49 UTC 2021
The branch stable/13 has been updated by rmacklem:
URL: https://cgit.FreeBSD.org/src/commit/?id=a599f9f7620b81550fb40a607067e7c697b0490c
commit a599f9f7620b81550fb40a607067e7c697b0490c
Author: Rick Macklem <rmacklem at FreeBSD.org>
AuthorDate: 2021-09-11 22:36:32 +0000
Commit: Rick Macklem <rmacklem at FreeBSD.org>
CommitDate: 2021-10-03 22:42:41 +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.
(cherry picked from commit 55089ef4f8bb7c4d18ee964b4214024e35ae4b0e)
---
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 817d89284091..42b839c8567e 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 2f6226e38415..984a63484777 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