Date: Sun, 22 Aug 1999 17:25:02 -0500 From: Rob Snow <rsnow@lgc.com> To: Matthew Dillon <dillon@apollo.backplane.com> Cc: Doug <Doug@gorean.org>, "John S. Dyson" <dyson@iquest.net>, current@FreeBSD.ORG Subject: Re: Patches available (was Re: NFS HEADS UP) Message-ID: <37C078BE.BF519BF0@lgc.com> References: <199908211156.GAA20231@dyson.iquest.net.> <199908211649.JAA73759@apollo.backplane.com> <37BF4420.452C5076@gorean.org> <37BF4E63.9019DD62@lgc.com> <199908220226.TAA75601@apollo.backplane.com>
next in thread | previous in thread | raw e-mail | index | archive | help
When copying over (FreeBSD client) the multipatch from a Linux (2.2.11) box before the patch I got this garbage in the file, -current as of 4am this morning. gzip'ed version has bad crc's. Went the other way and it worked fine (Linux client), this is v2 via amd. /etc/amd.conf: ************** /defaults fs:=${autodir}/${rhost}/root/${rfs};opts:=nosuid,nodev * rhost:=${key};type:=host;rfs:=/ Update: after reboot with new kernel I get the same thing. It's reproducible. It doesn't happen between linux boxen and doesn't happen on loopback mounts. -Rob Index: nfs/nfs_serv.c =================================================================== RCS file: /home/ncvs/src/sys/nfs/nfs_serv.c,v retrieving revision 1.83 diff -u -r1.83 nfs_serv.c --- nfs_serv.c 1999/07/29 21:42:57 1.83 +++ nfs_serv.c 1999/08/21 07:17:06 @@ -96,6 +96,7 @@ #include <sys/stat.h> #include <sys/kernel.h> #include <sys/sysctl.h> +#include <sys/buf.h> #include <vm/vm.h> #include <vm/vm_extern.h> @@ -115,6 +116,8 @@ #define nfsdbprintf(info) #endif +#define MAX_COMMIT_COUNT (1024 * 1024) + nfstype nfsv3_type[9] = { NFNON, NFREG, NFDIR, NFBLK, NFCHR, NFLNK, NFSOCK, NFFIFO, NFNON }; #ifndef NFS_NOSERVER @@ -133,6 +136,10 @@ static int nfs_async; SYSCTL_INT(_vfs_nfs, OID_AUTO, async, CTLFLAG_RW, &nfs_async, 0, ""); +static int nfs_commit_blks; +static int nfs_commit_miss; +SYSCTL_INT(_vfs_nfs, OID_AUTO, commit_blks, CTLFLAG_RW, &nfs_commit_blks, 0, "" ); +SYSCTL_INT(_vfs_nfs, OID_AUTO, commit_miss, CTLFLAG_RW, &nfs_commit_miss, 0, "" ); static int nfsrv_access __P((struct vnode *,int,struct ucred *,int, struct proc *, int)); @@ -3624,11 +3631,73 @@ goto nfsmout; } for_ret = VOP_GETATTR(vp, &bfor, cred, procp); - if (vp->v_object && - (vp->v_object->flags & OBJ_MIGHTBEDIRTY)) { + + if (cnt > MAX_COMMIT_COUNT) { + /* + * Give up and do the whole thing + */ + if (vp->v_object && + (vp->v_object->flags & OBJ_MIGHTBEDIRTY)) { ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@requested range. Note: we are assuming that Matthew Dillon wrote: > > Ok, I have put up the current patch set -- for patching against CURRENT > only - on my web site. > > http://www.backplane.com/FreeBSD4/ > > They contain a bit more then the NFS stuff, but it's all related to > performance. It would take me too long to try to separate them out > (this is what happens when things back-up, sorry!). > > The patches have been tested only somewhat and the one that fixes > nfssrv_commit() is not 100% complete - it doesn't sync-out the file > metadata yet, only the specific data blocks being requested by the > commit rpc. > > -Matt 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?37C078BE.BF519BF0>