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, 7 Dec 2012 22:44:26 +0000 (14:44 -0800)
commit7222030f2d36164f16e5373a2c87e7420c7670d9
tree4be0f4b0e50614f81201d528473af6521a2c26ad
parentd86d27a81d75c46fb451b36f43f87b3300c1a260
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