cvs commit: src/sys/vfs/hammer hammer.h hammer_blockmap.c hammer_btree.c hammer_btree.h hammer_cursor.h hammer_disk.h hammer_flusher.c hammer_inode.c hammer_io.c hammer_ioctl.c hammer_ioctl.h hammer_object.c hammer_ondisk.c hammer_prune.c ...

Matthew Dillon dillon at crater.dragonflybsd.org
Sat May 17 19:09:45 PDT 2008


dillon      2008/05/17 18:48:51 PDT

DragonFly src repository

  Modified files:
    sys/vfs/hammer       hammer.h hammer_blockmap.c hammer_btree.c 
                         hammer_btree.h hammer_cursor.h 
                         hammer_disk.h hammer_flusher.c 
                         hammer_inode.c hammer_io.c hammer_ioctl.c 
                         hammer_ioctl.h hammer_object.c 
                         hammer_ondisk.c hammer_prune.c 
                         hammer_reblock.c hammer_recover.c 
                         hammer_subs.c hammer_transaction.c 
                         hammer_vfsops.c hammer_vnops.c 
  Log:
  HAMMER 46/Many: Performance pass, media changes, bug fixes.
  
  * Add a localization field to the B-Tree element which has sorting priority
    over the object id.
  
    Use the localization field to separate inode entries from file data.  This
    allows the reblocker to cluster inode information together and greatly
    improves directory/stat performance.
  
  * Enhance the reblocker to reblock internal B-Tree nodes as well as leaves.
  
  * Enhance the reblocker by adding 'reblock-inodes' in addition to
    'reblock-data' and 'reblock-btree', allowing individual types of
    meta-data to be independantly reblocked.
  
  * Fix a bug in hammer_bread().  The buffer's zoneX_offset field was
    sometimes not being properly masked, resulting in unnecessary blockmap
    lookups.  Also add hammer_clrxlate_buffer() to clear the translation
    cache for a hammer_buffer.
  
  * Fix numerous issues with hmp->sync_lock.
  
  * Fix a buffer exhaustion issue in the pruner and reblocker due to not
    counting I/O's in progress as being dirty.
  
  * Enhance the symlink implementation.  Take advantage of the extra 24 bytes
    of space in the inode data to directly store symlinks <= 24 bytes.
  
  * Use cluster_read() to gang read I/O's into 64KB chunks.  Rely on
    localization and the reblocker and pruner to make doing the larger
    I/O's worthwhile.
  
  These changes reduce ls -lR overhead on 43383 files (half created with cpdup,
  half totally randomly created with blogbench).  Overhead went from 35 seconds
  after reblocking, before the changes, to 5 seconds after reblocking,
  after the changes.
  
  Revision  Changes    Path
  1.69      +16 -3     src/sys/vfs/hammer/hammer.h
  1.13      +2 -0      src/sys/vfs/hammer/hammer_blockmap.c
  1.49      +58 -33    src/sys/vfs/hammer/hammer_btree.c
  1.16      +13 -1     src/sys/vfs/hammer/hammer_btree.h
  1.19      +1 -0      src/sys/vfs/hammer/hammer_cursor.h
  1.33      +6 -1      src/sys/vfs/hammer/hammer_disk.h
  1.17      +5 -2      src/sys/vfs/hammer/hammer_flusher.c
  1.60      +4 -0      src/sys/vfs/hammer/hammer_inode.c
  1.32      +28 -6     src/sys/vfs/hammer/hammer_io.c
  1.19      +4 -0      src/sys/vfs/hammer/hammer_ioctl.c
  1.9       +16 -5     src/sys/vfs/hammer/hammer_ioctl.h
  1.59      +8 -0      src/sys/vfs/hammer/hammer_object.c
  1.46      +42 -11    src/sys/vfs/hammer/hammer_ondisk.c
  1.2       +21 -7     src/sys/vfs/hammer/hammer_prune.c
  1.16      +145 -23   src/sys/vfs/hammer/hammer_reblock.c
  1.18      +3 -1      src/sys/vfs/hammer/hammer_recover.c
  1.20      +32 -0     src/sys/vfs/hammer/hammer_subs.c
  1.15      +14 -0     src/sys/vfs/hammer/hammer_transaction.c
  1.35      +5 -0      src/sys/vfs/hammer/hammer_vfsops.c
  1.54      +32 -9     src/sys/vfs/hammer/hammer_vnops.c


http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.68&r2=1.69&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_blockmap.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.c.diff?r1=1.48&r2=1.49&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.h.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_cursor.h.diff?r1=1.18&r2=1.19&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_disk.h.diff?r1=1.32&r2=1.33&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_flusher.c.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.59&r2=1.60&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_io.c.diff?r1=1.31&r2=1.32&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ioctl.c.diff?r1=1.18&r2=1.19&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ioctl.h.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.58&r2=1.59&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ondisk.c.diff?r1=1.45&r2=1.46&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_prune.c.diff?r1=1.1&r2=1.2&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_reblock.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_recover.c.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_subs.c.diff?r1=1.19&r2=1.20&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_transaction.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.34&r2=1.35&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vnops.c.diff?r1=1.53&r2=1.54&f=u





More information about the Commits mailing list