cvs commit: src/sys/vfs/hammer hammer.h hammer_blockmap.c hammer_btree.c hammer_btree.h hammer_cursor.c hammer_disk.h hammer_freemap.c hammer_inode.c hammer_io.c hammer_object.c hammer_ondisk.c hammer_recover.c hammer_subs.c hammer_vfsops.c ...
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Jun 19 22:40:27 PDT 2008
dillon 2008/06/19 22:38:26 PDT
DragonFly src repository
Modified files:
sys/vfs/hammer hammer.h hammer_blockmap.c hammer_btree.c
hammer_btree.h hammer_cursor.c
hammer_disk.h hammer_freemap.c
hammer_inode.c hammer_io.c
hammer_object.c hammer_ondisk.c
hammer_recover.c hammer_subs.c
hammer_vfsops.c hammer_vnops.c
Log:
HAMMER 56C/Many: Performance tuning - MEDIA STRUCTURES CHANGED!
* Implement variable block sizes. Records at offsets < 1MB use 16K buffers
while records at offsets >= 1MB use 64K buffers. This improves performance
primarily by reducing the number of B-Tree elements we have to stuff.
* Mess around with the deadlock handling code a bit. It still needs
a re-think but it works. Implement low-priority shared locks.
A low priority shared lock can only be acquired if no other locks are
held by the thread.
* Implement slow-down code for the record backlog to the flusher and
reimplement the slow-down code that deals with reclaimed inodes queued
to the flusher. This should hopefully fix the kernel memory exhaustion
issues for M_HAMMER.
* Update layer2->append_off. It isn't implemented yet but doing this now
will prevent media incompatibilities later on when it does get implemented.
* Split hammer_blockmap_free() into hammer_blockmap_free() and
hammer_blockmap_finalize().
* Fix a bug in the delayed-CRC handling related to reblocking. When
throwing away a modified buffer, pending CRC requests must also be
thrown away.
* Fix a bug in the record overlap compare code. If we cannot return 0
due to an overlap because the record has been deleted, we must still
return an appropriate formal code so the scan progresses in the
correct direction down the red-black tree.
* Make data in the meta-data zone a meta-data buffer structure type so
it gets synced to disk at the appropriate time. This may be temporary,
it's needed to deal with the atime/mtime code but another commit may
soon make it moot.
* Bump the seqcount so cluster_read() does the right thing when reading
into a large UIO just after opening a file.
* Do a better job calculating vap->va_bytes. It's still fake, but its a
more accurate fake.
* Fix an issue in the BMAP code related to ranges that do not cover the
requested logical offset.
* Fix a bug in the blockmap code. If a reservation is released without
finalizing any allocations within that big-block, another zone can steal
it out from under the current zone's next_offset, resulting in a zone
mismatch panic.
Revision Changes Path
1.87 +22 -10 src/sys/vfs/hammer/hammer.h
1.20 +285 -131 src/sys/vfs/hammer/hammer_blockmap.c
1.56 +14 -14 src/sys/vfs/hammer/hammer_btree.c
1.19 +2 -2 src/sys/vfs/hammer/hammer_btree.h
1.32 +2 -2 src/sys/vfs/hammer/hammer_cursor.c
1.39 +8 -1 src/sys/vfs/hammer/hammer_disk.h
1.18 +2 -233 src/sys/vfs/hammer/hammer_freemap.c
1.78 +46 -67 src/sys/vfs/hammer/hammer_inode.c
1.44 +79 -48 src/sys/vfs/hammer/hammer_io.c
1.71 +61 -14 src/sys/vfs/hammer/hammer_object.c
1.60 +57 -14 src/sys/vfs/hammer/hammer_ondisk.c
1.25 +2 -1 src/sys/vfs/hammer/hammer_recover.c
1.25 +58 -0 src/sys/vfs/hammer/hammer_subs.c
1.50 +0 -5 src/sys/vfs/hammer/hammer_vfsops.c
1.73 +235 -91 src/sys/vfs/hammer/hammer_vnops.c
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.86&r2=1.87&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_blockmap.c.diff?r1=1.19&r2=1.20&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.c.diff?r1=1.55&r2=1.56&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.h.diff?r1=1.18&r2=1.19&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_cursor.c.diff?r1=1.31&r2=1.32&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_disk.h.diff?r1=1.38&r2=1.39&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_freemap.c.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.77&r2=1.78&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_io.c.diff?r1=1.43&r2=1.44&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.70&r2=1.71&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ondisk.c.diff?r1=1.59&r2=1.60&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_recover.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_subs.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.49&r2=1.50&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vnops.c.diff?r1=1.72&r2=1.73&f=u
More information about the Commits
mailing list