From owner-freebsd-current Tue Jun 15 20:30:31 1999 Delivered-To: freebsd-current@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [209.157.86.2]) by hub.freebsd.org (Postfix) with ESMTP id B802114CFF for ; Tue, 15 Jun 1999 20:30:29 -0700 (PDT) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.3/8.9.1) id UAA25113; Tue, 15 Jun 1999 20:30:28 -0700 (PDT) (envelope-from dillon) Date: Tue, 15 Jun 1999 20:30:28 -0700 (PDT) From: Matthew Dillon Message-Id: <199906160330.UAA25113@apollo.backplane.com> To: "David E. Cross" , David Scheidt , Chan Yiu Wah , freebsd-current@FreeBSD.ORG Subject: NFS Test patch available for -CURRENT (was Re: NFS vnode ref issues on server) References: <199906150421.VAA14439@apollo.backplane.com> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Here's the location: http://www.backplane.com/FreeBSD4/ It's in the 'NFS bugs first found by David E. Cross' section. The diff is *HUGE*, but strangly enough only covers three files :-) It does not cover nfs_node.c, so it should not interfere with the commit David is planning on doing. There are almost certainly bugs in the rewrite, so people who test this need to expect panics. If you get a panic, please use a DDB-enabled kernel and do a 'trace' -- the code is organized such that it should be fairly easy to track down the bugs. Whatever bugs there are will be minor ( I hope ). It is able to build world ( at least so far as I've gotten ), and it does run David's O_CREAT test code. It needs much more testing, though. Netstat on NFS server (2xSMP box with insane amounts of ram) while running the O_CREAT test program on two separate clients simultaniously with a buildworld on one of the clients. test3:/mnt# netstat -in 1 input (Total) output packets errs bytes packets errs bytes colls (just the two O_CREAT test programs running) 5025 0 899628 5024 0 1097738 19 5035 0 906642 5035 0 1106276 28 5038 0 896578 5038 0 1093918 15 4988 0 901424 4989 0 1100052 17 5011 0 907504 5010 0 1107182 14 5058 0 750524 5058 0 915936 9 4205 0 897390 4206 0 1094920 20 5036 0 631906 5035 0 744222 12 4136 0 462974 4137 0 558708 177 (the two O_CREAT test programs running and buildworld running) 2601 0 429798 2594 0 521616 295 2656 0 550306 2655 0 583742 343 2429 0 416518 2386 0 507574 402 2500 0 553238 2500 0 593134 326 The new code is mainly centered around nfs_serv.c and essentially rewrites most of the guts of most of the procedures to properly track and abort the NFS ops. It isn't pretty, but it is functional. There were simply too many problems to make simple bug fixes - just over three quarters of the procedures had incorrect termination code for handling nfsm_*() macro error conditions. NO changes were made to API's outside of NFS to accomodate the new code ( which is partially why it is still so messy ). Once we've stabilized it in -current and can show that it is at least not worse then the original code, and I get my commit privs back, I will MFC it into -stable. -Matt To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message