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