:What does this patch fix?
:
: Tnks!
: Amancio
:
: Amancio Hasty
: [email protected]
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
<[email protected]>
To Unsubscribe: send mail to [email protected]
with "unsubscribe freebsd-current" in the body of the message