kernel - Fix filesystem lookup error due to parent directory recyclement race
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 7 Dec 2012 22:44:26 +0000 (14:44 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 14 Dec 2012 03:13:16 +0000 (19:13 -0800)
commitbfbb2132a079ca54cc1fa53d20df0cc3fba3be3d
treef37ce9b30fd1b7b4c1d1ee5e4be93b42f2361fbc
parent86340e059ccde828c4146f19c52723140ae4aa13
kernel - Fix filesystem lookup error due to parent directory recyclement race

* When looking up a path the parent ncp's vnode is needed to pass into
  the VFS code as the directory vnode (dvp) for the element being looked up.

* Fix a timing race whereby a system under extreme vnode pressure (such as
  when kern.maxvnodes is set to a very low value) can squeek in recyclement
  of this directory vnode when there are no children under it in the
  namecache.

  We fix the problem by holding the directory vnode during the nlookup() and
  cache_resolve().
sys/kern/vfs_nlookup.c