cvs commit: src/sbin/hammer cmd_prune.c misc.c src/sys/sys buf.h src/sys/vfs/hammer hammer.h hammer_btree.c hammer_cursor.c hammer_inode.c hammer_ioctl.c hammer_ioctl.h hammer_object.c hammer_vnops.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Feb 4 23:59:43 PST 2008
dillon 2008/02/04 23:58:43 PST
DragonFly src repository
Modified files:
sbin/hammer cmd_prune.c misc.c
sys/sys buf.h
sys/vfs/hammer hammer.h hammer_btree.c hammer_cursor.c
hammer_inode.c hammer_ioctl.c
hammer_ioctl.h hammer_object.c
hammer_vnops.c
Log:
HAMMER 25/many: Pruning code
* Add b_tid to struct buf so dirty buffer cache buffers can be tagged with
a transaction id to try to retain consistency when doing as-of queries
on files that change size (so the data records have a TID <= the inode
record). This is also an issue when a file is created and immediately
written to. This may be temporary, a more sophisticated solution is needed.
* Fix a bug in the special handling of create_tid for as-of queries
in btree_search(). An assignment was off by one, causing historical
queries to not be able to find bits of data here and there.
* Freeze the transaction id for newly created inodes until the initial
inode record is laid down on disk, so the transaction id matches the
transaction id of the related directory entry.
* Major work on the pruning code. When pruning the tree to a particular
granularity the create_tid and delete_tid of related records must be
aligned to that granularity in order to avoid creating 'holes' at
various time points.
This requires some serious B-Tree manipulation because the right-hand
boundary may need to be shifted when the create_tid of an existing
record is forward aligned. This work is still in progress but it works
in basic testing.
Prune the tree in the reverse direction instead of in the forward
direction. This keeps the B-Tree consistent when we have to adjust
the right-hand boundary to accomodate the realignment of create_tid.
Revision Changes Path
1.2 +4 -4 src/sbin/hammer/cmd_prune.c
1.3 +5 -10 src/sbin/hammer/misc.c
1.43 +1 -0 src/sys/sys/buf.h
1.32 +7 -1 src/sys/vfs/hammer/hammer.h
1.28 +539 -2 src/sys/vfs/hammer/hammer_btree.c
1.16 +29 -0 src/sys/vfs/hammer/hammer_cursor.c
1.26 +5 -2 src/sys/vfs/hammer/hammer_inode.c
1.2 +167 -26 src/sys/vfs/hammer/hammer_ioctl.c
1.2 +4 -3 src/sys/vfs/hammer/hammer_ioctl.h
1.28 +8 -4 src/sys/vfs/hammer/hammer_object.c
1.26 +18 -1 src/sys/vfs/hammer/hammer_vnops.c
http://www.dragonflybsd.org/cvsweb/src/sbin/hammer/cmd_prune.c.diff?r1=1.1&r2=1.2&f=u
http://www.dragonflybsd.org/cvsweb/src/sbin/hammer/misc.c.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/buf.h.diff?r1=1.42&r2=1.43&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.31&r2=1.32&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_cursor.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ioctl.c.diff?r1=1.1&r2=1.2&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ioctl.h.diff?r1=1.1&r2=1.2&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vnops.c.diff?r1=1.25&r2=1.26&f=u
More information about the Commits
mailing list