hammer2 - flush sequencing part 5 - more flush synchronization work
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 10 May 2013 04:03:01 +0000 (21:03 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 10 May 2013 04:03:01 +0000 (21:03 -0700)
commit731b2a84b598774ccfc3a1672ba560d7823eadf5
treeb945a561ae184ba1159f32d2898bc2b4266ddfdb
parent24e16e4bbeba80dff6f6424d88762b01b93099d6
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.
sys/vfs/hammer2/TODO
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_ccms.c
sys/vfs/hammer2/hammer2_ccms.h
sys/vfs/hammer2/hammer2_chain.c
sys/vfs/hammer2/hammer2_flush.c
sys/vfs/hammer2/hammer2_inode.c
sys/vfs/hammer2/hammer2_subr.c
sys/vfs/hammer2/hammer2_vfsops.c
sys/vfs/hammer2/hammer2_vnops.c