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