git: hammer2 - flush sequencing part 5 - more flush synchronization work

Matthew Dillon dillon at
Thu May 9 21:11:30 PDT 2013

commit 731b2a84b598774ccfc3a1672ba560d7823eadf5
Author: Matthew Dillon <dillon at>
Date:   Thu May 9 21:03:01 2013 -0700

    hammer2 - flush sequencing part 5 - more flush synchronization work
    * Get rid of chain->parent, replacing it with chain->above which is a
      pointer to the core common to the possibly multiple parents.  Due
      to the multi-parenting, chain->parent was rather ad-hoc so getting
      rid of makes the code more clear.
    * Adjust several APIs which used to take a locked parent of chain to
      instead take the core common to multiple parents of chain.
    * Rework how CHAIN_MOVED is cleared.  The code works better but still
      has bugs which can leave chains hanging and unflushed on umount.
    * Rework the lastdrop function significantly.
    * Continue working on automatic delete/duplicate operation when a
      modification crosses a synchronization boundary.  This code is now
      mostly implemented.
    * Continue working on the flush filter which is responsible for
      differentiating modifications made before and after the synchronization
      point.  The filter is now mostly implemented.
    * Use spinlock protection on the rbtree, allowing manipulation of children
      without having to lock a specific parent chain (which wouldn't help much
      anyway since there can be more than one parent).
    * Fix numerous assertions and panics.

Summary of changes:
 sys/vfs/hammer2/TODO             |  11 +
 sys/vfs/hammer2/hammer2.h        |  44 ++-
 sys/vfs/hammer2/hammer2_ccms.c   |  27 ++
 sys/vfs/hammer2/hammer2_ccms.h   |   3 +-
 sys/vfs/hammer2/hammer2_chain.c  | 638 ++++++++++++++++++++++-----------------
 sys/vfs/hammer2/hammer2_flush.c  | 166 +++++-----
 sys/vfs/hammer2/hammer2_inode.c  | 289 ++++++++++++------
 sys/vfs/hammer2/hammer2_subr.c   | 147 ---------
 sys/vfs/hammer2/hammer2_vfsops.c |   5 +-
 sys/vfs/hammer2/hammer2_vnops.c  |   7 +-
 10 files changed, 725 insertions(+), 612 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list