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