DragonFly commits List (threaded) for 2004-01
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
cvs commit: src/sys/vm vm_contig.c vm_extern.h vm_glue.c vm_kern.c vm_kern.h vm_map.c vm_map.h vm_zone.c
dillon 2004/01/14 15:26:14 PST
DragonFly src repository
Modified files:
sys/vm vm_contig.c vm_extern.h vm_glue.c
vm_kern.c vm_kern.h vm_map.c vm_map.h
vm_zone.c
Log:
Cleanup the vm_map_entry_[k]reserve/[k]release() API. This API is used to
guarentee that sufficient vm_map_entry structures are available for certain
atomci VM operations.
The kreserve/krelease API is only supposed to be used to dig into the kernel
reserve, used when zalloc() must recurse into kmem_alloc() in order to
allocate a new page. Without this we can get into a kmem_alloc -> zalloc ->
kmem_alloc deadlock.
kreserve/krelease was being used improperly in my original work, causing it
to be unable to guarentee the reserve and resulting in an occassional panic.
This commit converts the improper usage back to using the non-k version of
the API and (should) properly handle the zalloc() recursion case.
Reported-by: David Rhodus <drhodus@xxxxxxxxx>
Revision Changes Path
1.3 +1 -1 src/sys/vm/vm_contig.c
1.7 +8 -1 src/sys/vm/vm_extern.h
1.19 +2 -2 src/sys/vm/vm_glue.c
1.13 +24 -18 src/sys/vm/vm_kern.c
1.8 +6 -0 src/sys/vm/vm_kern.h
1.18 +14 -11 src/sys/vm/vm_map.c
1.10 +1 -1 src/sys/vm/vm_map.h
1.12 +1 -1 src/sys/vm/vm_zone.c
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_contig.c.diff?r1=1.2&r2=1.3&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_extern.h.diff?r1=1.6&r2=1.7&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_glue.c.diff?r1=1.18&r2=1.19&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_kern.c.diff?r1=1.12&r2=1.13&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_kern.h.diff?r1=1.7&r2=1.8&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_map.c.diff?r1=1.17&r2=1.18&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_map.h.diff?r1=1.9&r2=1.10&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_zone.c.diff?r1=1.11&r2=1.12&f=h
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]