]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
SUNRPC: Bump the maximum payload size for the server
authorChuck Lever <chuck.lever@oracle.com>
Mon, 28 Apr 2025 19:37:02 +0000 (15:37 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Thu, 15 May 2025 20:16:28 +0000 (16:16 -0400)
Increase the maximum server-side RPC payload to 4MB. The default
remains at 1MB.

An API to adjust the operational maximum was added in 2006 by commit
596bbe53eb3a ("[PATCH] knfsd: Allow max size of NFSd payload to be
configured"). To adjust the operational maximum using this API, shut
down the NFS server. Then echo a new value into:

  /proc/fs/nfsd/max_block_size

And restart the NFS server.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: NeilBrown <neil@brown.name>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
include/linux/sunrpc/svc.h

index d57df042e24ae28be7d72911585de609b2972363..48666b83fe681aa57075bef4a46e66bc0f0fe3b9 100644 (file)
@@ -119,14 +119,14 @@ void svc_destroy(struct svc_serv **svcp);
  * Linux limit; someone who cares more about NFS/UDP performance
  * can test a larger number.
  *
- * For TCP transports we have more freedom.  A size of 1MB is
- * chosen to match the client limit.  Other OSes are known to
- * have larger limits, but those numbers are probably beyond
- * the point of diminishing returns.
+ * For non-UDP transports we have more freedom.  A size of 4MB is
+ * chosen to accommodate clients that support larger I/O sizes.
  */
-#define RPCSVC_MAXPAYLOAD      (1*1024*1024u)
-#define RPCSVC_MAXPAYLOAD_TCP  RPCSVC_MAXPAYLOAD
-#define RPCSVC_MAXPAYLOAD_UDP  (32*1024u)
+enum {
+       RPCSVC_MAXPAYLOAD       = 4 * 1024 * 1024,
+       RPCSVC_MAXPAYLOAD_TCP   = RPCSVC_MAXPAYLOAD,
+       RPCSVC_MAXPAYLOAD_UDP   = 32 * 1024,
+};
 
 extern u32 svc_max_payload(const struct svc_rqst *rqstp);