cvs commit: src/sys/kern vfs_cache.c

Matthew Dillon dillon at crater.dragonflybsd.org
Sat Sep 17 01:33:47 PDT 2005


dillon      2005/09/17 01:29:42 PDT

DragonFly src repository

  Modified files:
    sys/kern             vfs_cache.c 
  Log:
  With the new FSMID flag scheme we can optimize the update of the chain by
  stopping once we hit a namecache node that already has NCF_FSMID set.  Since
  the bit is only cleared when a node is 'observed' with [f][l]stat(), or
  when it is reclaimed, the result is that high performance I/O's on a node
  do not have to update the entire namecache chain to root on each operation.
  
  Basically the idea of the FSMID is to be able to optimally monitor changes
  in a filesystem hierarchy.  When we see the FSMID of a node change we know
  we have to scan its sub-tree.  But there's no reason to change the FSMID of
  the parent node AGAIN while further changes are made to the children AFTER
  the original observation if the scan of the sub-tree has NOT YET REACHED
  those children.  This is a kind of Einsteinian-observer effect, but it
  works!
  
  If on the other hand we are trying to detect changes in a tree by
  monitoring an FSMID, but we do not bother to rescan the tree after noting
  such a change in a parent node, this optimization will break us.
  
  This is a solution to a problem Joerg Sonnenberger posed with regard to
  the detrimental effect that could occur when a high rate of I/O is
  performed on a file deep in a directory tree.
  
  Revision  Changes    Path
  1.59      +30 -5     src/sys/kern/vfs_cache.c


http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_cache.c.diff?r1=1.58&r2=1.59&f=u





More information about the Commits mailing list