cvs commit: src/sys/vfs/hammer hammer.h hammer_blockmap.c hammer_disk.h hammer_flusher.c hammer_freemap.c hammer_inode.c hammer_recover.c hammer_transaction.c hammer_undo.c hammer_vfsops.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Apr 28 18:13:59 PDT 2008
dillon 2008/04/28 18:10:37 PDT
DragonFly src repository
Modified files:
sys/vfs/hammer hammer.h hammer_blockmap.c hammer_disk.h
hammer_flusher.c hammer_freemap.c
hammer_inode.c hammer_recover.c
hammer_transaction.c hammer_undo.c
hammer_vfsops.c
Log:
HAMMER 39/Many: Parallel operations optimizations
* Implement a per-direct cache of new object IDs. Up to 128 directories
will be managed in LRU fashion. The cached provides a pool of object
IDs to better localize the object ids of files created in a directory,
so parallel operations on the filesystem do not create a fragmented
object id space.
* Cache numerous fields in the root volume's header to avoid creating
undo records for them, creatly improving
(ultimately we can sync an undo space representing the volume header
using a direct comparison mechanic but for now we assume the write of
the volume header to be atomic).
* Implement a zone limit for the blockmap which newfs_hammer can install.
The blockmap zones have an ultimate limit of 2^60 bytes, or around
one million terrabytes. If you create a 100G filesystem there is no
reason to let the blockmap iterate over its entire range as that would
result in a lot of fragmentation and blockmap overhead. By default
newfs_hammer sets the zone limit to 100x the size of the filesystem.
* Fix a bug in the crash recovery code. Do not sync newly added inodes
once the flusher is running, otherwise the volume header can get out
of sync. Just create a dummy marker structure and move it to the tail
of the inode flush_list when the flush starts, and stop when we hit it.
* Adjust hammer_vfs_sync() to sync twice. The second sync is needed to
update the volume header's undo fifo indices, otherwise HAMMER will
believe that it must undo the last fully synchronized flush.
Revision Changes Path
1.54 +27 -1 src/sys/vfs/hammer/hammer.h
1.9 +6 -7 src/sys/vfs/hammer/hammer_blockmap.c
1.30 +4 -4 src/sys/vfs/hammer/hammer_disk.h
1.7 +32 -8 src/sys/vfs/hammer/hammer_flusher.c
1.7 +3 -4 src/sys/vfs/hammer/hammer_freemap.c
1.43 +9 -1 src/sys/vfs/hammer/hammer_inode.c
1.13 +7 -0 src/sys/vfs/hammer/hammer_recover.c
1.14 +79 -17 src/sys/vfs/hammer/hammer_transaction.c
1.7 +2 -2 src/sys/vfs/hammer/hammer_undo.c
1.30 +47 -7 src/sys/vfs/hammer/hammer_vfsops.c
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.53&r2=1.54&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_blockmap.c.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_disk.h.diff?r1=1.29&r2=1.30&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_flusher.c.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_freemap.c.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.42&r2=1.43&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_recover.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_transaction.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_undo.c.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.29&r2=1.30&f=u
More information about the Commits
mailing list