cvs commit: src/sys/kern vfs_subr.c

Don Lewis truckman at FreeBSD.org
Tue Aug 23 03:44:07 GMT 2005


truckman    2005-08-23 03:44:06 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             vfs_subr.c 
  Log:
  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-all mailing list