cvs commit: src/sys/kern uipc_usrreq.c vfs_cache.c vfs_subr.c vfs_syscalls.c vfs_vnops.c src/sys/sys namecache.h

Matthew Dillon dillon at
Wed May 7 18:41:19 PDT 2008

dillon      2008/05/07 18:41:07 PDT

DragonFly src repository

  Modified files:
    sys/kern             uipc_usrreq.c vfs_cache.c vfs_subr.c 
                         vfs_syscalls.c vfs_vnops.c 
    sys/sys              namecache.h 
  Fix a race between the namecache and the vnode recycler.  A vnode cannot be
  recycled if it's namecache entry represents a directory with locked children.
  The various VOP_N*() functions require the parent dvp to be stable.
  The main fix is in vrecycle() (kern/vfs_subr.c).  Do not vgone() the vnode
  if we can't clean out the children.
  Also create an API to assert that the parent dvp is stable, and make it
  vhold/vdrop the dvp.
  The race primarily effected HAMMER which uses the VOP_N*() API.
  Revision  Changes    Path
  1.38      +2 -3      src/sys/kern/uipc_usrreq.c
  1.89      +56 -13    src/sys/kern/vfs_cache.c
  1.113     +5 -0      src/sys/kern/vfs_subr.c
  1.125     +26 -35    src/sys/kern/vfs_syscalls.c
  1.56      +2 -3      src/sys/kern/vfs_vnops.c
  1.30      +2 -0      src/sys/sys/namecache.h

More information about the Commits mailing list