Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Apr 1999 19:25:06 -0700 (PDT)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Amancio Hasty <hasty@rah.star-gate.com>
Cc:        Bob Bishop <rb@gid.co.uk>, Wilko Bulte <wilko@yedi.iaf.nl>, current@FreeBSD.ORG, hackers@FreeBSD.ORG
Subject:   Re: solid NFS patch #6 avail for -current - need testers files) 
Message-ID:  <199904210225.TAA01414@apollo.backplane.com>
References:   <199904202342.QAA02679@rah.star-gate.com>

next in thread | previous in thread | raw e-mail | index | archive | help
: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 
					<dillon@backplane.com>



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?199904210225.TAA01414>