HAMMER 17/many: Refactor IO backend, clean up buffer cache deadlocks.
authorMatthew Dillon <dillon@dragonflybsd.org>
Thu, 10 Jan 2008 07:41:03 +0000 (07:41 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Thu, 10 Jan 2008 07:41:03 +0000 (07:41 +0000)
commit055f5ff8b5fd10006ff65698f619a74ce61e5fa8
treed5de20e75b363afcefa732d1fde999da80e4c799
parent4b958e7b1d7cced2b6068daed31a38464e05e2f0
HAMMER 17/many: Refactor IO backend, clean up buffer cache deadlocks.

Rewrite HAMMER's IO backend, sans locking which will occur in another patch.
The new backend is far less confusing though I wouldn't exactly call it
simple.

The new backend keeps track of dependancies with a structure->structure
dependancy list, plus implements the special case of opening and closing
a cluster header.  Buffers are synchronized first, then cluster headers,
then volume headers.  The new backend also removes a number of potential
deadlocks.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_btree.c
sys/vfs/hammer/hammer_cursor.c
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer/hammer_io.c
sys/vfs/hammer/hammer_object.c
sys/vfs/hammer/hammer_ondisk.c
sys/vfs/hammer/hammer_recover.c
sys/vfs/hammer/hammer_spike.c
sys/vfs/hammer/hammer_transaction.c
sys/vfs/hammer/hammer_vnops.c