git: HAMMER - Fix cursor tracking bugs and a few other issues
Matthew Dillon
dillon at crater.dragonflybsd.org
Fri Oct 30 18:34:11 PDT 2009
commit f3a4893b0e844e1ab8c2334d304ebff61aa71ace
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Fri Oct 30 18:29:04 2009 -0700
HAMMER - Fix cursor tracking bugs and a few other issues
* When recursively removing empty internal nodes from the B-Tree only
call hammer_cursor_deleted_element() if the related internal
element is actually removed. The element might not be removed due
to the deadlock fail path.
* If hammer_cursor_up_locked() fails fully restore the cursor before
returning. The index field was not being restored.
* Acquire the sync lock when recovering a cursor lost due to a deadlock
in the mirroring code.
* Document and fix an issue in the rebalancing code which could cause a
cursor to fall off the end of the B-Tree.
Reported-by: YONETANI Tomokazu <qhwt+dfly at les.ath.cx>
Summary of changes:
sys/vfs/hammer/hammer_btree.c | 26 ++++++++++++++++++++++++--
sys/vfs/hammer/hammer_cursor.c | 21 ++++++++++++++++-----
sys/vfs/hammer/hammer_mirror.c | 2 ++
sys/vfs/hammer/hammer_rebalance.c | 21 +++++++++++++++++++++
4 files changed, 63 insertions(+), 7 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/f3a4893b0e844e1ab8c2334d304ebff61aa71ace
--
DragonFly BSD source repository
More information about the Commits
mailing list