git: hammer2 - flush sequencing part 5 - more flush synchronization work
dillon at crater.dragonflybsd.org
Thu May 9 21:11:30 PDT 2013
Author: Matthew Dillon <dillon at apollo.backplane.com>
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
* 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