Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jun 1999 15:44:46 -0400 (EDT)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        Julian Elischer <julian@whistle.com>, dillon@backplane.com
Cc:        freebsd-current@FreeBSD.ORG
Subject:   Re: NFS Test patch.. Anyone tested it?
Message-ID:  <14191.44898.659493.845175@grasshopper.cs.duke.edu>
In-Reply-To: <376ECA12.FF6D5DF@whistle.com>
References:  <199906150421.VAA14439@apollo.backplane.com> <199906160330.UAA25113@apollo.backplane.com> <376ECA12.FF6D5DF@whistle.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Julian Elischer writes:
 > Matthew Dillon wrote:
 > > 
 > >     Here's the location:
 > > 
 > >         http://www.backplane.com/FreeBSD4/
 > > 
 > >     It's in the 'NFS bugs first found by David E. Cross' section.
 > > 
 > 
 > 
 > I've looked it over a bit and can't see any major problems..
 > and it definitly does fix some problems..
 > 
 > Has anyone tried it in a heavy server environment?
 > if so, any problems? It's running ok here but it's only 
 > very lightly tested in our environment.
 > 
 > I'd like to get it checked in if it really is an improvement....
 > 

OK.  First minor problem & fix: 

Solaris 2.7 (5.7 Generic_106541-04 sun4u sparc) hosts cannot do a V3
mount of an nfs server with these patches applied.  V2 mounts still
seem to work.

It turns out that this is because when a solaris 2.7 host does an
NFSv3 mount, it calls the null procedure & Matt's diffs expose a bug
in nfssvc_nfsd.  The following patch, applied in addtion to the diffs
above, corrects the problem:

Index: nfs_syscalls.c
===================================================================
RCS file: /home/ncvs/src/sys/nfs/nfs_syscalls.c,v
retrieving revision 1.49
diff -u -b -B -r1.49 nfs_syscalls.c
--- nfs_syscalls.c      1999/04/27 11:17:52     1.49
+++ nfs_syscalls.c      1999/06/22 19:32:26
@@ -651,7 +651,7 @@
                                slp, nfsd->nfsd_procp, &mreq);
                        if (mreq == NULL)
                                break;
-                       if (error) {
+                       if (error != 0 && error != NFSERR_RETVOID) {
                                if (nd->nd_procnum != NQNFSPROC_VACATED)
                                        nfsstats.srv_errs++;
                                nfsrv_updatecache(nd, FALSE, mreq);



Cheers,

Drew
------------------------------------------------------------------------------
Andrew Gallatin, Sr Systems Programmer	http://www.cs.duke.edu/~gallatin
Duke University				Email: gallatin@cs.duke.edu
Department of Computer Science		Phone: (919) 660-6590


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?14191.44898.659493.845175>