Documentation effort magma 0.0.20070911 released magma 0.0.20070829 released magma 0.0.20070806 released on SVN All the news
NEWS :: Magma 0.0.20070507 released on SVN
More focus has been put on flare's mutexes. Cache is partially locked while searching flares. While a recursive scan is done, each node is locked. If it is the node requested, lock is left and flare is returned _LOCKED_! If it is not, flare is unlocked and scan can recursively continue without blocking other searches.
When a flare is removed from the cache, the parent is locked to insulate that branch of the tree. If flare is not a leaf, also ->left and ->right flares are locked. magma_remove_from_cache() also has a specific mutex, called cache_removal_mutex, which is used only by magma_remove_from_cache() (it's possibly unuseful, but so far it's in its place).
console has a better "dump cache" command, which also print information about locking of each flare. console has also been provided with a "shutdown" command to clean-kill magmad.
Finally a note on flare destruction. An attempt to perform flare uncaching and destruction has been done using a parallel thread managed with posix semaphore. The main problem with this approach is that if a flare is erased and than recreated of another kind (like happens with GNU tar which create a regular file for each symlink in the archive and later unlink the regfile and symlink() to create the proper one), if the flare is still in cache, it will be fetch of the wrong kind, consequently messing up everything!!! removal thread is still coded in but now disabled. Search for magma_schedule_destroy_flare() to learn more.