NetBSD/sys/uvm
thorpej d3f54e81dd Fix the following pathological scanario:
* User allocates ZFOD region, but does not actually touch the buffer
  to fault in the pages.
* In a loop, user writes this buffer to a network socket, triggering
  sosend_loan().
* uvm_loan() calls uvm_loanzero() once for each page in the loaned
  region (since the pages have not yet faulted in).  This causes a
  page to be allocated and zero'd.  The result is the kernel spends
  a lot of time allocating and zero'ing pages.

This fixes creates a special object which owns a single zero'd page.
This single zero'd page is used to satisfy all loans of non-resident
ZFOD mappings.

Thanks to Allen Briggs for discovering the problem and for providing
an initial patch.
2003-03-04 06:18:54 +00:00
..
Makefile
uvm.h
uvm_amap.c Add extensible malloc types, adapted from FreeBSD. This turns 2003-02-01 06:23:35 +00:00
uvm_amap.h Add extensible malloc types, adapted from FreeBSD. This turns 2003-02-01 06:23:35 +00:00
uvm_amap_i.h
uvm_anon.c
uvm_anon.h
uvm_aobj.c uao_put: release uvm object's lock only after we're done with its page list. 2003-02-09 22:28:40 +00:00
uvm_aobj.h
uvm_bio.c
uvm_ddb.h
uvm_device.c
uvm_device.h
uvm_extern.h Add extensible malloc types, adapted from FreeBSD. This turns 2003-02-01 06:23:35 +00:00
uvm_fault.c uvm_fault: case 1B: lock page queue before calling uvm_pageactivate(). 2003-02-09 22:32:21 +00:00
uvm_fault.h
uvm_fault_i.h
uvm_glue.c Rework the way in which the map is traversed when dumping core. Now 2003-02-14 16:25:12 +00:00
uvm_glue.h
uvm_init.c Fix the following pathological scanario: 2003-03-04 06:18:54 +00:00
uvm_io.c
uvm_km.c
uvm_km.h
uvm_loan.c Fix the following pathological scanario: 2003-03-04 06:18:54 +00:00
uvm_loan.h Fix the following pathological scanario: 2003-03-04 06:18:54 +00:00
uvm_map.c In uvm_map_space, if the current entry is above the new space use the 2003-03-02 08:57:49 +00:00
uvm_map.h Introduce "top down" memory management for mmap()ed allocations. This 2003-02-20 22:16:05 +00:00
uvm_map_i.h
uvm_meter.c
uvm_mmap.c Make updating a file's reference and use count MP-safe. 2003-02-23 14:37:32 +00:00
uvm_object.h
uvm_page.c Add code to UBCify LFS. This is still behind "#ifdef LFS_UBC" for now 2003-02-17 23:48:08 +00:00
uvm_page.h
uvm_page_i.h
uvm_pager.c
uvm_pager.h Add code to UBCify LFS. This is still behind "#ifdef LFS_UBC" for now 2003-02-17 23:48:08 +00:00
uvm_pager_i.h
uvm_param.h Introduce "top down" memory management for mmap()ed allocations. This 2003-02-20 22:16:05 +00:00
uvm_pdaemon.c Cast result of pgo_put() to (void) as is the style with other calls to 2003-02-25 00:22:20 +00:00
uvm_pdaemon.h
uvm_pglist.c
uvm_pglist.h
uvm_pmap.h
uvm_prot.h
uvm_stat.c
uvm_stat.h Include CPU number in UVM history logs. 2003-02-09 22:33:18 +00:00
uvm_swap.c Add a new BUF_INIT() macro which initializes b_dep and b_interlock, and 2003-02-25 20:35:31 +00:00
uvm_swap.h
uvm_unix.c
uvm_user.c
uvm_vnode.c