cvs commit: src/sys/kern vfs_cache.c vfs_syscalls.c vfs_vnops.c vfs_vopops.c src/sys/sys namecache.h stat.h

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Aug 25 11:35:02 PDT 2005


dillon      2005/08/25 11:34:17 PDT

DragonFly src repository

  Modified files:
    sys/kern             vfs_cache.c vfs_syscalls.c vfs_vnops.c 
                         vfs_vopops.c 
    sys/sys              namecache.h stat.h 
  Log:
  Implement FSMID.  Use one of the spare 64 bit fields in the stat structure
  for the FSMID.   The FSMID is a recursively updated field which allows one
  to determine whether a subdirectory hierarchy has changed simply by checking
  the base directory of the desired hierarchy.  The new field is st_fsmid.
  
  The initial implementation stores the FSMID in the namecache, which means that
  the FSMID will indicate a false change if a namecache entry is destroyed and
  recreated.  A more deterministic test can be made by holding a file or
  directory descriptor open.  However, it should be noted that DragonFly
  implements a coherent and hierarchically consistent namecache so simply having
  a subdirectory or file open will prevent the namecache records from that point
  through to the root from being destroyed.
  
  The FSMID can be used to greatly reduce the directories that must be searched
  when synchronizing a filesystem.  The immediate intention is to use it to
  provide a more efficient way to resynchronize a mirror (to generate journal
  records 'diff'ing the current filesystem against a mirror), to improve
  filesystem mirroring utilities, and to provide for an alternative backup
  strategy that involves generating a diff set between two filesystems.
  Normally such schemes would require the entire filesystem to be scanned, but
  with FSMID the number of directories that must be searched can be greatly
  reduced.
  
  TODO: It is desireable for the FSMID information to be stored more permanently
  in the inode to survive reboots and to not return false hits due to namecache
  thrash.
  
  Note that the FSMID facility does not work on an NFS client if the NFS server
  or some other client modifies the filesystem.
  
  Revision  Changes    Path
  1.55      +35 -0     src/sys/kern/vfs_cache.c
  1.70      +11 -0     src/sys/kern/vfs_syscalls.c
  1.31      +12 -2     src/sys/kern/vfs_vnops.c
  1.14      +34 -0     src/sys/kern/vfs_vopops.c
  1.20      +4 -0      src/sys/sys/namecache.h
  1.8       +12 -1     src/sys/sys/stat.h


http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_cache.c.diff?r1=1.54&r2=1.55&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_syscalls.c.diff?r1=1.69&r2=1.70&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_vnops.c.diff?r1=1.30&r2=1.31&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_vopops.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/namecache.h.diff?r1=1.19&r2=1.20&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/stat.h.diff?r1=1.7&r2=1.8&f=u





More information about the Commits mailing list