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 crater.dragonflybsd.org
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 
  Log:
  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


http://www.dragonflybsd.org/cvsweb/src/sys/kern/uipc_usrreq.c.diff?r1=1.37&r2=1.38&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_cache.c.diff?r1=1.88&r2=1.89&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_subr.c.diff?r1=1.112&r2=1.113&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_syscalls.c.diff?r1=1.124&r2=1.125&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_vnops.c.diff?r1=1.55&r2=1.56&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/namecache.h.diff?r1=1.29&r2=1.30&f=u





More information about the Commits mailing list