hammer2 - Initial CCMS adaptation and code-up
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 4 Jun 2012 03:47:45 +0000 (20:47 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 4 Jun 2012 03:47:45 +0000 (20:47 -0700)
commit1ad77ed9c05bb830ff123c9a976fbcb3665249e9
tree28a632fab7c74e657fc64ec19ad49595d983a98a
parente76e6b57f32b809d9244bd72d7f28476bbf1d1a9
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.
sys/vfs/hammer2/Makefile
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_ccms.c
sys/vfs/hammer2/hammer2_ccms.h