bug fix: when doing uvm_vnp_sync() actually skip over blocked uvn's so
that we don't try and sync them later. should get rid of the "uvm_vnp_sync: dying vnode on sync list" related warnings that were occuring during a "make install."
This commit is contained in:
parent
156a6a5c98
commit
927ec8b012
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: uvm_vnode.c,v 1.8 1998/03/09 00:58:59 mrg Exp $ */
|
||||
/* $NetBSD: uvm_vnode.c,v 1.9 1998/03/11 01:37:40 chuck Exp $ */
|
||||
|
||||
/*
|
||||
* XXXCDC: "ROUGH DRAFT" QUALITY UVM PRE-RELEASE FILE!
|
||||
@ -1953,21 +1953,29 @@ uvm_vnp_sync(mp)
|
||||
|
||||
/* attempt to gain reference */
|
||||
while ((got_lock = simple_lock_try(&uvn->u_obj.vmobjlock)) ==
|
||||
FALSE && (uvn->u_flags & UVM_VNODE_BLOCKED) == 0)
|
||||
FALSE &&
|
||||
(uvn->u_flags & UVM_VNODE_BLOCKED) == 0)
|
||||
/* spin */ ;
|
||||
|
||||
/*
|
||||
* we will exit the loop if we were unable to get the lock and
|
||||
* we detected that the vnode was "blocked" ... if it is
|
||||
* blocked then it must be a dying vnode. since dying vnodes
|
||||
* are in the process of being flushed out we can safely skip
|
||||
* it.
|
||||
* we will exit the loop if either if the following are true:
|
||||
* - we got the lock [always true if NCPU == 1]
|
||||
* - we failed to get the lock but noticed the vnode was
|
||||
* "blocked" -- in this case the vnode must be a dying
|
||||
* vnode, and since dying vnodes are in the process of
|
||||
* being flushed out, we can safely skip this one
|
||||
*
|
||||
* we want to skip over the vnode if we did not get the lock,
|
||||
* or if the vnode is already dying (due to the above logic).
|
||||
*
|
||||
* note that uvn must already be valid because we found it on
|
||||
* the wlist (this also means it can't be ALOCK'd).
|
||||
*/
|
||||
if (!got_lock)
|
||||
continue;
|
||||
if (!got_lock || (uvn->u_flags & UVM_VNODE_BLOCKED) != 0) {
|
||||
if (got_lock)
|
||||
simple_unlock(&uvn->u_obj.vmobjlock);
|
||||
continue; /* skip it */
|
||||
}
|
||||
|
||||
/*
|
||||
* gain reference. watch out for persisting uvns (need to
|
||||
|
Loading…
Reference in New Issue
Block a user