patch for Linux NFS client

From: Jon Noack <noackjr_at_alumni.rice.edu>
Date: Tue, 02 Mar 2004 05:24:34 -0600
I happened upon the DragonFlyBSD diary [1] and saw an entry about NFS 
performance improvements.  After some digging I came across a patch from 
David Rhodus to increase NFS performance between Linux clients and 
(Free|DragonFly)BSD servers [2].  The patch doesn't appear to have been 
committed to DragonFlyBSD, so there may be problems with it.  This issue 
was diagnosed and reported to hackers_at_ last September by Richard Sharpe 
[3].  In any case, I've seen the Linux/FreeBSD NFS issue pop up [4,5], 
so maybe this will help a bit.  Attached is a version of the patch I 
modified for FreeBSD (to correct line numbers and whitespace).  Credit 
should go to David Rhodus (and Richard Sharpe).

I'm not running NFS at present (and don't have any Linux machines 
anyway), SO THIS PATCH HAS NOT BEEN TESTED IN ANY WAY.  If it works, 
great.  Also, it probably deserves mention in the man page.

I'm sure there are other fixes that are applicable to FreeBSD, but I 
don't have the know-how at this point to determine which.

[1] DragonFlyBSD diary:
http://www.dragonflybsd.org/status/diary.cgi

[2] Patch by David Rhodus posted to the DragonFlyBSD Digest:
http://www.shiningsilence.com/dbsdlog/archives/000063.html

[3] Post by Richard Sharpe to hackers_at_ last September:
http://lists.freebsd.org/pipermail/freebsd-hackers/2003-September/003269.html

[4] Linux/FreeBSD NFS issue:
http://lists.freebsd.org/pipermail/freebsd-current/2004-February/021546.html
http://66.102.7.104/search?q=cache:http://www.richardsharpe.com/ethereal-stuff.html#Time%20Sequence%20Graphs

[5] PRs concerning NFS with Linux (among the many NFS PRs):
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/56461
http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/56500

Jon Noack

--- sys/nfsserver/nfs_syscalls.c.orig	Fri Nov  7 16:57:09 2003
+++ sys/nfsserver/nfs_syscalls.c	Tue Mar  2 03:11:48 2004
_at__at_ -100,6 +100,9 _at__at_
 	    &nfsrvw_procrastinate, 0, "");
 SYSCTL_INT(_vfs_nfsrv, OID_AUTO, gatherdelay_v3, CTLFLAG_RW,
 	    &nfsrvw_procrastinate_v3, 0, "");
+static int sacksize = 2048;
+SYSCTL_INT(_vfs_nfsrv, OID_AUTO, sacksize, CTLFLAG_RW,
+	    &sacksize, 0, "");
 
 static int	nfssvc_addsock(struct file *, struct sockaddr *,
 		    struct thread *);
_at__at_ -217,7 +220,7 _at__at_
 	}
 #endif
 	if (so->so_type == SOCK_STREAM)
-		siz = NFS_MAXPACKET + sizeof (u_long);
+		siz = NFS_MAXPACKET + sizeof (u_long) + sacksize;
 	else
 		siz = NFS_MAXPACKET;
 	error = soreserve(so, siz, siz);
Received on Tue Mar 02 2004 - 02:24:47 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:45 UTC