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_alist.c hammer_alist.h hammer_btree.c hammer_cursor.c hammer_cursor.h hammer_disk.h hammer_inode.c hammer_io.c hammer_object.c hammer_ondisk.c hammer_recover.c hammer_spike.c hammer_vfsops.c

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 23 Jan 2008 18:14:45 -0800 (PST)

dillon      2008/01/23 18:14:45 PST

DragonFly src repository

  Modified files:
    sys/vfs/hammer       hammer.h hammer_alist.c hammer_alist.h 
                         hammer_btree.c hammer_cursor.c 
                         hammer_cursor.h hammer_disk.h 
                         hammer_inode.c hammer_io.c 
                         hammer_object.c hammer_ondisk.c 
                         hammer_recover.c hammer_spike.c 
  HAMMER 23/many: Recovery, B-Tree, spike, I/O work.
  Warning: filesystem structures have changed, recompile newfs_hammer too.
  * Correct a couple more edge cases with historical lookups.  We have to
    flag the need for an iteration anywhere the edge case is hit as we
    recurse down, not just on the terminal B-Tree node.
  * Get rid of the kludge record buffer bitmap in the cluster header.  Augment
    the A-List recovery and scanning code to locate record buffers.   This
    required adding some unfortunate complexity to the A-list search and
    recovery routines due to the fact that we ran out of bit codes and
    couldn't represent an all-free/initialized AND an all-free/uninitialized
  * Go back to making the SPIKE_END elements range-inclusive instead of
    range-exclusive.  It turns out that making them range-exclusive caused
    a few too many collisions with adjacent records in the B-Tree.
  * Excellent progress on the recovery code.  It still has numerous issues
    (there are lots of recovery cases I still have to implement), but
    it survives much longer now.  Add a sysctl to disable/enable/force
    cluster recovery (default disabled, since its still buggy).
  * When creating a spike be sure to properly assign the cluster record's
  * When removing a spike be sure to also free the related cluster record.
  * Spike code progress.  Implement the last case it couldn't handle (spiking
    a spike) and add a very simple starter heuristic which generates a
    better spike topology (doesn't create long chains of end-range spikes).
  * Add a huge number of new assertions to ease the tracking down of bugs.
  * Address some IO sequencing issues that could result in io.modified
    getting prematurely cleared.  io.modified can only be cleared on write
    initiation on the last ref to a HAMMER structure.
  * Add a hack to pre-reserve enough B-Tree buffers to guarantee the recovery
    code can regenerate the B-Tree without having to pack it.  This ultimately
    needs to be fixed (the recovery code really needs to pack the tree).
  Revision  Changes    Path
  1.28      +27 -4     src/sys/vfs/hammer/hammer.h
  1.11      +142 -27   src/sys/vfs/hammer/hammer_alist.c
  1.7       +11 -3     src/sys/vfs/hammer/hammer_alist.h
  1.23      +291 -128  src/sys/vfs/hammer/hammer_btree.c
  1.15      +21 -5     src/sys/vfs/hammer/hammer_cursor.c
  1.10      +8 -0      src/sys/vfs/hammer/hammer_cursor.h
  1.19      +18 -9     src/sys/vfs/hammer/hammer_disk.h
  1.24      +3 -1      src/sys/vfs/hammer/hammer_inode.c
  1.17      +70 -28    src/sys/vfs/hammer/hammer_io.c
  1.23      +128 -32   src/sys/vfs/hammer/hammer_object.c
  1.24      +165 -93   src/sys/vfs/hammer/hammer_ondisk.c
  1.6       +189 -82   src/sys/vfs/hammer/hammer_recover.c
  1.11      +157 -46   src/sys/vfs/hammer/hammer_spike.c
  1.14      +3 -0      src/sys/vfs/hammer/hammer_vfsops.c


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