NetBSD/sys/dev/raidframe
thorpej a180cee23b Pool deals fairly well with physical memory shortage, but it doesn't
deal with shortages of the VM maps where the backing pages are mapped
(usually kmem_map).  Try to deal with this:

* Group all information about the backend allocator for a pool in a
  separate structure.  The pool references this structure, rather than
  the individual fields.
* Change the pool_init() API accordingly, and adjust all callers.
* Link all pools using the same backend allocator on a list.
* The backend allocator is responsible for waiting for physical memory
  to become available, but will still fail if it cannot callocate KVA
  space for the pages.  If this happens, carefully drain all pools using
  the same backend allocator, so that some KVA space can be freed.
* Change pool_reclaim() to indicate if it actually succeeded in freeing
  some pages, and use that information to make draining easier and more
  efficient.
* Get rid of PR_URGENT.  There was only one use of it, and it could be
  dealt with by the caller.

From art@openbsd.org.
2002-03-08 20:48:27 +00:00
..
Makefile Setup installation mechanism for <dev/raidframe/raidframevar.h> and 2001-10-04 16:04:16 +00:00
raidframeio.h Step 1 of the disentangling of RAIDframe's .h files: 2001-10-04 15:43:57 +00:00
raidframevar.h Step 1 of the disentangling of RAIDframe's .h files: 2001-10-04 15:43:57 +00:00
rf_acctrace.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_acctrace.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_alloclist.c Cleanup some whitespace that indent got wrong a long time ago. 2001-11-20 02:37:29 +00:00
rf_alloclist.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_archs.h Let's not bother building a number of infrequently used RAID types. 2002-01-19 02:50:54 +00:00
rf_aselect.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_aselect.h
rf_callback.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_callback.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_chaindecluster.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_chaindecluster.h Clean up some INDENT warnings. (yes, these have been there for a while!) 2001-01-26 04:14:14 +00:00
rf_copyback.c don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
rf_copyback.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_cvscan.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_cvscan.h
rf_dag.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_dagdegrd.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_dagdegrd.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_dagdegwr.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_dagdegwr.h
rf_dagffrd.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_dagffrd.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_dagffwr.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_dagffwr.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_dagflags.h
rf_dagfuncs.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_dagfuncs.h Nuke 'register' from some function prototypes. 2000-03-30 13:39:07 +00:00
rf_dagutils.c Correct misspellings of "failed". 2002-03-04 01:38:31 +00:00
rf_dagutils.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_debugMem.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_debugMem.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_debugprint.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_debugprint.h
rf_decluster.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_decluster.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_declusterPQ.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_declusterPQ.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_desc.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_diskqueue.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_diskqueue.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_disks.c don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
rf_disks.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_driver.c #if 0 rf_SetReconfiguredMode() since it is unused now, but may be 2002-01-07 01:58:03 +00:00
rf_driver.h #if 0 rf_SetReconfiguredMode() since it is unused now, but may be 2002-01-07 01:58:03 +00:00
rf_engine.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_engine.h
rf_etimer.h Tidy up the #includes a bit. (coulda/shoulda done that with last commit.) 2001-10-04 17:42:29 +00:00
rf_evenodd.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_evenodd.h
rf_evenodd_dagfuncs.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_evenodd_dagfuncs.h
rf_evenodd_dags.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_evenodd_dags.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_fifo.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_fifo.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_freelist.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_general.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_geniq.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_hist.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_interdecluster.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_interdecluster.h
rf_invertq.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_invertq.h
rf_kintf.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_layout.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_layout.h More #if 0's bite the dust. 2001-10-05 15:41:23 +00:00
rf_map.c Revert previous. Need to be more careful with what gets chopped out. 2002-01-07 05:30:53 +00:00
rf_map.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_mcpair.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_mcpair.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_memchunk.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_memchunk.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_netbsd.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_netbsdkintf.c Pool deals fairly well with physical memory shortage, but it doesn't 2002-03-08 20:48:27 +00:00
rf_nwayxor.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_nwayxor.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_options.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_options.h
rf_optnames.h Nuke what's left of the DFSTRACE stuff. 1999-12-07 02:54:08 +00:00
rf_paritylog.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_paritylog.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_paritylogDiskMgr.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_paritylogDiskMgr.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_paritylogging.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_paritylogging.h
rf_parityloggingdags.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_parityloggingdags.h
rf_parityscan.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_parityscan.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_pq.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_pq.h
rf_pqdeg.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_pqdeg.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_pqdegdags.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_pqdegdags.h
rf_psstatus.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_psstatus.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_raid.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_raid0.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_raid0.h
rf_raid1.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_raid1.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_raid4.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_raid4.h
rf_raid5.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_raid5.h
rf_raid5_rotatedspare.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_raid5_rotatedspare.h
rf_reconbuffer.c Move a bunch of debugging stuff to be only used if DEBUG is turned on. 2002-01-09 03:10:19 +00:00
rf_reconbuffer.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_reconmap.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_reconmap.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_reconstruct.c Move a bunch of debugging stuff to be only used if DEBUG is turned on. 2002-01-09 03:10:19 +00:00
rf_reconstruct.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_reconutil.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_reconutil.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_revent.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_revent.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_shutdown.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_shutdown.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_sstf.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_sstf.h
rf_states.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_states.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_stripelocks.c Bah.. Not sure how those ";"'s got missed :-( 2002-01-19 22:20:48 +00:00
rf_stripelocks.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_strutils.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_threadstuff.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_threadstuff.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00
rf_utils.c add RCSIDs 2001-11-13 07:11:12 +00:00
rf_utils.h Step 2 of the disentanglement. We now look to <dev/raidframe/*> for 2001-10-04 15:58:51 +00:00