cvs commit: src/sys/vfs/hammer hammer.h hammer_btree.c hammer_inode.c hammer_io.c hammer_object.c hammer_ondisk.c hammer_subs.c hammer_transaction.c hammer_vfsops.c hammer_vnops.c

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Dec 31 17:00:22 PST 2007


dillon      2007/12/31 17:00:03 PST

DragonFly src repository

  Modified files:
    sys/vfs/hammer       hammer.h hammer_btree.c hammer_inode.c 
                         hammer_io.c hammer_object.c 
                         hammer_ondisk.c hammer_subs.c 
                         hammer_transaction.c hammer_vfsops.c 
                         hammer_vnops.c 
  Log:
  HAMMER 14/many - historical access cleanup, itimes, bug fixes.
  
  With this commit most historical accesses work and I can go through at least
  two cycles of cpdup / rm -rf without crashing.
  
  * Fix a bug in the B-Tree code related to searches on historical records.
    These records are differentiated by key.create_tid but unlike the rest
    of the key the matching algorithm has to be somewhat more sophisticated.
    e.g. A search as of time 10 needs to find a record with a create_tid of 5.
  
    To make this work properly we use a trick when we generate the separator
    when splitting a leaf. see hammer_btree.c / hammer_make_separator().
  
  * Recycle inodes a link count of 0 immediately.
  
  * Optimization: Do not flush backing store to disk on reclaim.
  
  * Add a per-inode read-only flag.  Mark all historical inodes as read-only
  
  * Implement read-only semantics in the vnops and assert attempts to modify
    inodes marked read-only.
  
  * Properly record the last transaction id for use when synchronizing
    inodes to the platter.  There were a few cases when late synchronizations
    were using the wrong transaction id, breaking user expectations when
    accessing historical data after a sync.
  
  * Update the itimes (atime and mtime). These are non-historical updates by
    default (meaning we just overwrite the latest inode record instead of
    deleting it and inserting a new one).  A future mount option will allow
    these updates to operate historically (the coding is trivial)... didn't
    you always want to know the last time a file was accessed prior to a
    particular date?  Think about it...
  
  * Fix an inode memory leak.  The inode in-memory structure must be freed
    on last reference.  There were cases where it was being left in the
    HAMMER cache.
  
  * Optimization: Reduce vnode scan overhead during 'sync' by improving
    on the inode flags which indicate that some sort of sync is required.
  
  * Optimization: Don't flush inodes when their link count drops by 1, try
    to only flush them when their link drops to 0.
  
  * Fix a couple of potential deadlocks.
  
  * Fix a case in the vnops code where an inode was not being properly flagged
    as being dirty.
  
  Revision  Changes    Path
  1.18      +12 -6     src/sys/vfs/hammer/hammer.h
  1.15      +62 -23    src/sys/vfs/hammer/hammer_btree.c
  1.16      +152 -43   src/sys/vfs/hammer/hammer_inode.c
  1.11      +4 -3      src/sys/vfs/hammer/hammer_io.c
  1.14      +11 -10    src/sys/vfs/hammer/hammer_object.c
  1.15      +21 -11    src/sys/vfs/hammer/hammer_ondisk.c
  1.10      +9 -0      src/sys/vfs/hammer/hammer_subs.c
  1.6       +22 -1     src/sys/vfs/hammer/hammer_transaction.c
  1.13      +4 -1      src/sys/vfs/hammer/hammer_vfsops.c
  1.15      +89 -17    src/sys/vfs/hammer/hammer_vnops.c


http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_io.c.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ondisk.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_subs.c.diff?r1=1.9&r2=1.10&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_transaction.c.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vnops.c.diff?r1=1.14&r2=1.15&f=u





More information about the Commits mailing list