FreeBSD Bugzilla – Attachment 8643 Details for
Bug 18012
[patch] vfs_subr.c: vnode_free_list corruption, "free vnode isn't" panic
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
file.diff
file.diff (text/plain), 1.70 KB, created by
Dave Chapeskie
on 2000-04-14 19:50:00 UTC
(
hide
)
Description:
file.diff
Filename:
MIME Type:
Creator:
Dave Chapeskie
Created:
2000-04-14 19:50:00 UTC
Size:
1.70 KB
patch
obsolete
>diff -u -t -r1.253 vfs_subr.c >--- kern/vfs_subr.c 2000/03/20 11:28:45 1.253 >+++ kern/vfs_subr.c 2000/04/14 18:01:52 >@@ -467,6 +467,8 @@ > > for (vp = TAILQ_FIRST(&vnode_tobefree_list); vp; vp = nvp) { > nvp = TAILQ_NEXT(vp, v_freelist); >+ if (!simple_lock_try(&vp->v_interlock)) >+ continue; > TAILQ_REMOVE(&vnode_tobefree_list, vp, v_freelist); > if (vp->v_flag & VAGE) { > TAILQ_INSERT_HEAD(&vnode_free_list, vp, v_freelist); >@@ -478,6 +480,7 @@ > if (vp->v_usecount) > panic("tobe free vnode isn't"); > freevnodes++; >+ simple_unlock(&tvp->v_interlock); > } > > if (wantfreevnodes && freevnodes < wantfreevnodes) { >@@ -507,6 +510,10 @@ > /* Don't recycle if active in the namecache */ > simple_unlock(&vp->v_interlock); > continue; >+ } else if (VOP_ISLOCKED(vp)) >+ TAILQ_REMOVE(&vnode_free_list, vp, v_freelist); >+ TAILQ_INSERT_TAIL(&vnode_tmp_list, vp, v_freelist); >+ continue; > } else { > break; > } >@@ -2613,6 +2620,10 @@ > int s; > > s = splbio(); >+ if (vp->v_flag & VDOOMED) { >+ vprint("vbusy", vp); >+ panic("vbusy on VDOOMED vnode"); >+ } > simple_lock(&vnode_free_list_slock); > if (vp->v_flag & VTBFREE) { > TAILQ_REMOVE(&vnode_tobefree_list, vp, v_freelist);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 18012
: 8643