From owner-freebsd-current Tue Apr 20 19:27:36 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 23A861500F; Tue, 20 Apr 1999 19:27:34 -0700 (PDT) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.3/8.9.1) id TAA01414; Tue, 20 Apr 1999 19:25:06 -0700 (PDT) (envelope-from dillon) Date: Tue, 20 Apr 1999 19:25:06 -0700 (PDT) From: Matthew Dillon Message-Id: <199904210225.TAA01414@apollo.backplane.com> To: Amancio Hasty Cc: Bob Bishop , Wilko Bulte , current@FreeBSD.ORG, hackers@FreeBSD.ORG Subject: Re: solid NFS patch #6 avail for -current - need testers files) References: <199904202342.QAA02679@rah.star-gate.com> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG :What does this patch fix? : : Tnks! : Amancio : : Amancio Hasty : hasty@star-gate.com It mainly fixes interactions between mmap(), read(), and write() on NFS files. Many utilities ( such as the compiler/linker ) these days use a combination of the three and NFS was making assumptions that would leave a VM page partially uncovered - where the NFS system is storing critical data in the page but the VM system didn't know it was. The mmap-zero fixes that were committed last week brought the problem to light. As part of the fix, a bunch of things were ripped out of the buffer cache code. For example, the b_validoff/b_validend fields were ripped out because only NFS previously used them ( but don't any more ). Also pieces of the buffer cache code were rewritten in regards to dealing with the B_CACHE bit, leading to more optimal code in the critical path ( fewer scans the the b_pages array when figuring out the B_CACHE state of a struct buf ). And some other stuff. The whole thing stems from fixes made to -current over the last several months, fixes made by Luoqi, Alan, Julian, DG, and me. Luoqi concentrated on fixing up the vm_page_t valid/dirty handling and struct buf b_offset handling when dealing with small-block devices ( people may recall that this fixed, then broke, then fixed msdos floppy mounts that would occur after a ufs mount attempt, and also fixed CDROM panics ). The rest of us were working on a mmap-zeroing problem, NFS, and a mmap-garbage-after-file-EOF problem brought up by Tor. A number of vnode interlock issues came up that we fixed, a getnewbuf() supervisor stack overflow was fixed (I rewrote getnewbuf()), a bunch of low-memory handling issues were dealt with but there are still a few left. A few minor bugs in softupdates were fixed with Kirk's help. A VNOP/MMAP deadlock was fixed. Tor & DG and someone else threw in fixes for KVM exhaustion in large-memory subsystems, the ability to handle > 2G of ram, and BSDI compatibility w/ the new KVM increase. Earlier this year I tackled basic bugs in the VM system, rewrote the swapper, rewrote the VN device, and formalized and documented most of the VM system, and Alan and I began removing unused cruft. All in all, it has been a good beginning to the year. -Matt Matthew Dillon To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message