kernel - Fix "cleaned vnode isn't" panic
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 11 Feb 2010 20:40:45 +0000 (12:40 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 11 Feb 2010 20:40:45 +0000 (12:40 -0800)
commit1b7df30abd5674475a59bf1c84b42774101bc3a6
tree59cd00605114696e2436f86583ca5ebd7fdec419
parente654922c869be2609aefdb087a028c991681b1fa
kernel - Fix "cleaned vnode isn't" panic

* Fix the "cleaned vnode isn't" panic.  This panic was occuring due to
  vrecycle() not checking for a vgone*() recursion.

  Adjust vrecycle() to check for the recursion.  The recursion can be
  detected by testing the VRECLAIMED flag.

* Under certain circumstances hammer_vop_inactive() was calling
  vrecycle().  This could cause the underlying vnode to be modified
  after it has been destroyed as the recursion returns.

* Add a KKASSERT() in vgone_vxlocked() to detect the condition
  earlier if it occurs again.
sys/kern/vfs_subr.c