git: hammer2 hammer2 - Initial CCMS adaptation and code-up

From:

Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>

Date:

Sun, 3 Jun 2012 20:55:05 -0700 (PDT)

commit 1ad77ed9c05bb830ff123c9a976fbcb3665249e9
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date: Sun Jun 3 20:47:45 2012 -0700
hammer2 - Initial CCMS adaptation and code-up
This is an initial code-up and compiles-without-error pass, untested and
likely full of bugs.
CCMS needed a makeover but I managed to retain the guts of the original
block/wakeup and CST partitioning code.
* The frontend code now creates a larger CCMS topology which will mirror
the chain topology (the ccms_inode will be embedded in a hammer2_inode),
and places the data ranging in ccms_inode.
* CCMS inode creation and deletion is broken up into two stages, e.g. a
deletion requires a 'delete' plus 'uninit' sequence allowing the 'delete'
to reflect a topological deletion but for the CCMS node to remain intact
(e.g. if open descriptors on the related file or directory remain), then
a final uninit when the descriptors finally go away.
* Enhanced the original CCMS code and the new ccms_inode to track three
different cache coherency domains: (1) A recursive topological domain
which covers the inode and entire subtree. (2) An attribute domain covering
only the inode attributes, and (3) A data domain covering a data offset
range or directory key range.
* Local cache states are implemented for the attribute and data range domains,
the topological domain is not yet properly recursive.
* Remotely-granted cache states are not yet implemented.
Summary of changes:
sys/vfs/hammer2/Makefile | 2 +-
sys/vfs/hammer2/hammer2.h | 1 +
sys/vfs/hammer2/hammer2_ccms.c | 1479 +++++++++++++++++++++++++++-------------
sys/vfs/hammer2/hammer2_ccms.h | 385 +++++++----
4 files changed, 1228 insertions(+), 639 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/1ad77ed9c05bb830ff123c9a976fbcb3665249e9
--
DragonFly BSD source repository