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

Matthew Dillon dillon at
Sun Jun 3 20:55:05 PDT 2012

commit 1ad77ed9c05bb830ff123c9a976fbcb3665249e9
Author: Matthew Dillon <dillon at>
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(-)

DragonFly BSD source repository

More information about the Commits mailing list