#
# 3 Jan 2003
# Trove Status
#

. the test utilities trove-{mkfs,mkdir,ls,touch,rm} work as their names
  imply.  Recursive directory operations are blocking on the handle
  generator.  The test utility trove-bstream works too, creating a
  bstream, dumping data out to it, and then reading that data back.

. support for multiple collections is in place, however if more than one
  collection is used at a time the current collection caching code will
  mess things up.  To fix it, we just need to 
  	. replace the global pointer my_coll_p with a linked list 
	. search on coll_id instead of simply assigning the global pointer
	. (there is a linked list implementation called 'quicklist' in 
		src/common/quicklist)

. the handle generator code is almost in place
	what works:
	. keeps lists of avaliable handles and handles that have not
	  expired.  Current implementation uses a "free_list" for unused
	  handles,  "recently_freed" for handles waiting for their reuse
	  time to expire, and "overflow" list for handles whose reuse
	  time *has* expired.  

	  lists of extents can get merged together: the overflow list
	  merges into the free list and becomes an empty list after
	  enough time has passed
	  
	. hooked into the trove bstream interface for disk i/o.  This is
	  the most recent addition, and has recieved the least ammount
	  of testing, so it is quite likely some implementation issues
	  remain, but the algorithim seems sound to me. 

	  in fact, all that really works right now is creating the
	  bstream.  the act of dumping and restoring the handle lists
	  is blocking on the array-ification (see below) of the lists

	left to do
	. handles are kept as extents.  the "lists" of extents are AVL
	  trees keeping track of extents allocated on the system heap.
	  To ease the dumping and restoring of extents to/from disk, we
	  should 
	  	. keep an array of extents
		. use the AVL tree to index into that array by keeping
		  pointers to elements of the array 
		. resize the array when it fills up (realloc(3) ), going
		  back through the index tree and doing some fixups on
		  all the pointers-to-elements that have now changed. 

	. tweak knobs like "time before recycling" and "how often to
	  check the clock"
