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
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_vfsops.c
Log:
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
case.
* 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
rec_offset.
* 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
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_alist.c.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_alist.h.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.c.diff?r1=1.22&r2=1.23&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_cursor.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_cursor.h.diff?r1=1.9&r2=1.10&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_disk.h.diff?r1=1.18&r2=1.19&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.23&r2=1.24&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_io.c.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.22&r2=1.23&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ondisk.c.diff?r1=1.23&r2=1.24&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_recover.c.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_spike.c.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.13&r2=1.14&f=u
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]