diff options
author | dillon <dillon@FreeBSD.org> | 2001-02-04 06:19:28 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 2001-02-04 06:19:28 +0000 |
commit | c8a95a285d887ca5e3be08f3c04f4efde25a5bf1 (patch) | |
tree | 9e2c267eac87bf24403df67147f7cc32082387c6 /lib/libc/stdlib/malloc.c | |
parent | bb46130566593c534d92d1f9327521daa1faa946 (diff) | |
download | FreeBSD-src-c8a95a285d887ca5e3be08f3c04f4efde25a5bf1.zip FreeBSD-src-c8a95a285d887ca5e3be08f3c04f4efde25a5bf1.tar.gz |
This commit represents work mainly submitted by Tor and slightly modified
by myself. It solves a serious vm_map corruption problem that can occur
with the buffer cache when block sizes > 64K are used. This code has been
heavily tested in -stable but only tested somewhat on -current. An MFC
will occur in a few days. My additions include the vm_map_simplify_entry()
and minor buffer cache boundry case fix.
Make the buffer cache use a system map for buffer cache KVM rather then a
normal map.
Ensure that VM objects are not allocated for system maps. There were cases
where a buffer map could wind up with a backing VM object -- normally
harmless, but this could also result in the buffer cache blocking in places
where it assumes no blocking will occur, possibly resulting in corrupted
maps.
Fix a minor boundry case in the buffer cache size limit is reached that
could result in non-optimal code.
Add vm_map_simplify_entry() calls to prevent 'creeping proliferation'
of vm_map_entry's in the buffer cache's vm_map. Previously only a simple
linear optimization was made. (The buffer vm_map typically has only a
handful of vm_map_entry's. This stabilizes it at that level permanently).
PR: 20609
Submitted by: (Tor Egge) tegge
Diffstat (limited to 'lib/libc/stdlib/malloc.c')
0 files changed, 0 insertions, 0 deletions