getnewvnode: Weaken the panic "cleaned vnode isn't" to a warning.

Discussion: this panic (or waning) only occurs when the kernel is
  compiled with INVARIANTS.  Otherwise the problem (which means that
  the vp->v_data field isn't NULL, and represents a coding error and
  possibly a memory leak) is silently ignored by setting it to NULL
  later on.

  Panicking here isn't very helpful: by this time, we can only find
  the symptoms.  The panic occurs long after the reason for "not
  cleaning" has been forgotten; in the case in point, it was the
  result of severe file system corruption which left the v_type field
  set to VBAD.  That issue will be addressed by a separate commit.
This commit is contained in:
Greg Lehey 2004-10-06 02:06:11 +00:00
parent e0cfeb44a8
commit f2154b33d2

View File

@ -787,7 +787,9 @@ getnewvnode(tag, mp, vops, vpp)
#ifdef INVARIANTS
{
if (vp->v_data)
panic("cleaned vnode isn't");
printf("cleaned vnode isn't, "
"address %p, inode %p\n",
vp, vp->v_data);
if (vp->v_numoutput)
panic("Clean vnode has pending I/O's");
if (vp->v_writecount != 0)