DragonFly commits List (threaded) for 2008-05
DragonFly BSD
DragonFly commits List (threaded) for 2008-05
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

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 ...


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 17 May 2008 18:48:51 -0700 (PDT)

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



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]