DragonFly commits List (threaded) for 2008-01
DragonFly BSD
DragonFly commits List (threaded) for 2008-01
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

cvs commit: src/sys/vfs/hammer hammer.h hammer_btree.c hammer_cursor.c hammer_cursor.h hammer_inode.c hammer_object.c hammer_ondisk.c hammer_recover.c hammer_spike.c hammer_subs.c hammer_vnops.c

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 17 Jan 2008 23:02:41 -0800 (PST)

dillon      2008/01/17 23:02:41 PST

DragonFly src repository

  Modified files:
    sys/vfs/hammer       hammer.h hammer_btree.c hammer_cursor.c 
                         hammer_cursor.h hammer_inode.c 
                         hammer_object.c hammer_ondisk.c 
                         hammer_recover.c hammer_spike.c 
                         hammer_subs.c hammer_vnops.c 
  HAMMER 21/many: B-Tree node locking finalization.
  * Implement the final locking scheme for B-Tree nodes.  Use shared locks
    for all searches, upgrade to exclusive locks for modifications.  If
    unable to upgrade fall through with an EDEADLK error code and retry the
    operation after releasing all other locks and blocking on the lock that
    could not be obtained.
    Simple iterations never fail and do not need to handle an EDEADLK error
    Because EDEADLK can actually occur quite often the error paths for most
    code modules will begin to get some exercise, which is good for code
    It is possible to cache cursor positions closer to the desired target
    to reduce re-lookup times but I don't try to do this yet.
  * Finalize code for basic (unbalanced) deletions.   Neither leaf nor internal
    nodes are allowed to be empty any more (except at the root of a cluster),
    but recursive deletions may deadlock while going up the tree and leave
    an internal node with a zero'd out element.   The search and iteration
    code now properly detects such elements and finishes off the deletion,
    though a complete cleaning will be left up to the balancing module.
  * Remove most instances of recursively instantiated cursors.  There is still
    one left in the directory deletion code.
  * Remove all remaining unprotected cursor transitions (where locks had to be
    released to avoid deadlocks).
  Revision  Changes    Path
  1.26      +17 -2     src/sys/vfs/hammer/hammer.h
  1.21      +172 -99   src/sys/vfs/hammer/hammer_btree.c
  1.14      +76 -41    src/sys/vfs/hammer/hammer_cursor.c
  1.8       +9 -4      src/sys/vfs/hammer/hammer_cursor.h
  1.22      +12 -3     src/sys/vfs/hammer/hammer_inode.c
  1.21      +58 -21    src/sys/vfs/hammer/hammer_object.c
  1.22      +3 -2      src/sys/vfs/hammer/hammer_ondisk.c
  1.4       +3 -0      src/sys/vfs/hammer/hammer_recover.c
  1.9       +12 -4     src/sys/vfs/hammer/hammer_spike.c
  1.12      +32 -1     src/sys/vfs/hammer/hammer_subs.c
  1.22      +27 -14    src/sys/vfs/hammer/hammer_vnops.c


[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]