cvs commit: src/sys/kern vfs_subr.c
truckman at FreeBSD.org
Tue Aug 23 03:44:07 GMT 2005
truckman 2005-08-23 03:44:06 UTC
FreeBSD src repository
Back out the removal of LK_NOWAIT from the VOP_LOCK() call in
vlrureclaim() in vfs_subr.c 1.636 because waiting for the vnode
lock aggravates an existing race condition. It is also undesirable
according to the commit log for 1.631.
Fix the tiny race condition that remains by rechecking the vnode
state after grabbing the vnode lock and grabbing the vnode interlock.
Fix the problem of other threads being starved (which 1.636 attempted
to fix by removing LK_NOWAIT) by calling uio_yield() periodically
in vlrureclaim(). This should be more deterministic than hoping
that VOP_LOCK() without LK_NOWAIT will block, which may not happen
in this loop.
Reviewed by: kan
MFC after: 5 days
Revision Changes Path
1.642 +37 -7 src/sys/kern/vfs_subr.c
More information about the cvs-src