Los archivos de oids NO se eliminan del disco cuando se elmina un objeto de la DB.  Se tiene que hacer pack por fuerza..   

Este problema esta resuelto:

-------- en este momento la DB no es durable!  Tiene atomicidad, isolacion, consistencia pero no es durable: si se interrumpe en medio trabajo de commit, la transaccion no se habra cometido como una unidad, y se jodio la podrida porque habran objetos unlinked.

solucion a la trasaccion

pre_transaccion se escriben a un archivo (unico per-transaction-id) los OIDs de los objetos que se cometieron.  se cometen a archivos temporales todos.  se renombran todos los viejos a nombres de backups.  se renombran los nuevos. se borra el archivo de la transaccion.  (durante la transaccion, la db se bloquea para lecturas (verificar este aserto) y no hay problemas de isolacion con la lectura de oids objects que se estan escribiendo).

si cuando se arranca se descubren archivos de transaccion huerfanos, entonces 1) se borran todos los archivos temporales de la transaccion que existan 2) se renombran todos los backups de la transaccion existentes a originales.  esto tambien tiene problemas de atomicidad pero son menores!


conclusion: dirdict debe hacerse transaccional. los cambios van a archivos temporales, y un comando especial commit() lo acomete a disco.

dict.start_trans(tid)
dict.modifications bla bla bla
	write tid and oids to tid file
	rename modified objects to backup names
	write mods to temp files
dict.commit_trans(tid)
	rename temp files to target files
	remove backup names
	remove tid file
	
	
if failed: on start of dirdict
find all tid files
foreach tid file
	rename all corresponding and existing backup objects to their original names
	remove all corresponding temp files
	delete tid file
