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