git: hammer2 - Rewrite internal chain algorithms - stabilization
Matthew Dillon
dillon at crater.dragonflybsd.org
Fri Sep 27 23:07:45 PDT 2013
commit 51a0d27c7544b989e6e2e6f6c64cbc4cfcb39f0f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Fri Sep 27 22:57:54 2013 -0700
hammer2 - Rewrite internal chain algorithms - stabilization
* Add temporary guards on a few structures for debugging purposes.
* Verify that blocktables are ordered.
* live_zero is multi-homed, move it out of the chain_core structure and
into the chain structure. Also move the COUNTEDBREFS flag
* Unlock the spinlock prior to issuing the atomic fetchadd to decrement
hammer2_core->sharecnt. Clean up any hanging chain_layer's when freeing
a core structure.
* Initialize live_zero to 0 when base is NULL (i.e. if the chain structure
is in the INITIAL stage).
* Refactor hammer2_chain_find(), hammer2_base_find(), and add
hammer2_combined_find(). Fix numerous bugs in the key_next
calculation and ensure that the combined find returns exhaustion
if the element it finds is outside the requested range.
* Close a delete-duplicate race in hammer2_chain_getparent() and
in hammer2_chain_lookup(). A delete-duplicate could weasle its
way in during the parent lock transition.
Summary of changes:
sys/vfs/hammer2/hammer2.h | 24 +-
sys/vfs/hammer2/hammer2_chain.c | 696 ++++++++++++++++++++++-----------------
sys/vfs/hammer2/hammer2_flush.c | 13 +-
sys/vfs/hammer2/hammer2_inode.c | 14 +-
sys/vfs/hammer2/hammer2_vfsops.c | 5 +-
5 files changed, 436 insertions(+), 316 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/51a0d27c7544b989e6e2e6f6c64cbc4cfcb39f0f
--
DragonFly BSD source repository
More information about the Commits
mailing list