cvs commit: src/sys/vfs/hammer hammer.h hammer_blockmap.c hammer_freemap.c hammer_inode.c hammer_io.c hammer_object.c hammer_ondisk.c hammer_recover.c hammer_vfsops.c hammer_vnops.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Jun 8 11:17:06 PDT 2008
dillon 2008/06/08 11:16:26 PDT
DragonFly src repository
Modified files:
sys/vfs/hammer hammer.h hammer_blockmap.c
hammer_freemap.c hammer_inode.c
hammer_io.c hammer_object.c
hammer_ondisk.c hammer_recover.c
hammer_vfsops.c hammer_vnops.c
Log:
HAMMER 53B/Many: Complete overhaul of strategy code, reservations, etc
* Completely overhaul the strategy code. Implement direct reads and writes
for all cases. REMOVE THE BACKEND BIO QUEUE. BIOs are no longer queued
to the flusher under any circumstances.
Remove numerous hacks that were previously emplaced to deal with BIO's
being queued to the flusher.
* Add a mechanism to invalidate buffer cache buffers that might be shadowed
by direct I/O. e.g. if a strategy write uses the vnode's bio directly
there may be a shadow hammer_buffer that will then become stale and must
be invalidated.
* Implement a reservation tracking structure (hammer_reserve) to track
storage reservations made by the frontend. The backend will not attempt
to free or reuse reserved space if it encounters it.
Use reservations to back cached holes (struct hammer_hole) for the
same reason.
* Index hammer_buffer on the zone-X offset instead of the zone-2 offset.
Base the RB tree in the hammer_mount instead of (zone-2) hammer_volume.
This removes nearly all blockmap lookup operations from the critical path.
* Do a much better job tracking cached dirty data for the purposes of
calculating whether the filesystem will become full or not.
* Fix a critical bug in the CRC generation of short data buffers.
* Fix a VM deadlock.
* Use 16-byte alignment for all on-disk data instead of 8-byte alignment.
* Major code cleanup.
As-of this commit write performance is now extremely good.
Revision Changes Path
1.75 +32 -23 src/sys/vfs/hammer/hammer.h
1.16 +249 -93 src/sys/vfs/hammer/hammer_blockmap.c
1.14 +0 -1 src/sys/vfs/hammer/hammer_freemap.c
1.66 +27 -92 src/sys/vfs/hammer/hammer_inode.c
1.35 +45 -56 src/sys/vfs/hammer/hammer_io.c
1.62 +154 -94 src/sys/vfs/hammer/hammer_object.c
1.51 +95 -255 src/sys/vfs/hammer/hammer_ondisk.c
1.21 +3 -3 src/sys/vfs/hammer/hammer_recover.c
1.40 +15 -4 src/sys/vfs/hammer/hammer_vfsops.c
1.60 +91 -39 src/sys/vfs/hammer/hammer_vnops.c
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.74&r2=1.75&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_blockmap.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_freemap.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.65&r2=1.66&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_io.c.diff?r1=1.34&r2=1.35&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.61&r2=1.62&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ondisk.c.diff?r1=1.50&r2=1.51&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_recover.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.39&r2=1.40&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vnops.c.diff?r1=1.59&r2=1.60&f=u
More information about the Commits
mailing list