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:
parent
e0cfeb44a8
commit
f2154b33d2
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user