Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Mar 2005 11:54:28 +0000 (UTC)
From:      Jeff Roberson <jeff@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern vfs_subr.c
Message-ID:  <200503131154.j2DBsSrq041257@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
jeff        2005-03-13 11:54:28 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             vfs_subr.c 
  Log:
   - Remove vx_lock, vx_unlock, vx_wait, etc.
   - Add a vn_start_write/vn_finished_write around vlrureclaim so we don't do
     writing ops without suspending.  This could suspend the vlruproc which
     should not be a problem under normal circumstances.
   - Manually implement VMIGHTFREE in vlrureclaim as this was the only instance
     where it was used.
   - Acquire a lock before calling vgone() as it now requires it.
   - Move the acquisition of the vnode interlock from vtryrecycle() to
     getnewvnode() so that if it fails we don't drop and reacquire the
     vnode_free_list_mtx.
   - Check for a usecount or holdcount at the end of vtryrecycle() in case
     someone grabbed a ref while we were recycling.  Abort the recycle, and
     on the final ref drop this vnode will be placed on the head of the free
     list.
   - Move the redundant VOP_INACTIVE protection code into the local
     vinactive() routine to avoid code bloat.
   - Keep the vnode lock held across calls to vgone() in several places.
   - vgonel() no longer uses XLOCK, instead callers must hold an exclusive
     vnode lock.  The VI_DOOMED flag is set to allow other threads to detect
     a vnode which is no longer valid.  This flag is set until the last
     reference is gone, and there are no chances for a new ref.  vgonel()
     holds this lock across the entire function, which greatly simplifies
     logic.
   _ Only vfree() in one place in vgone() not three.
   - Adjust vget() to check the VI_DOOMED flag prior to waiting on the lock
     in the LK_NOWAIT case.  In other cases, check after we have slept and
     acquired an exlusive lock.  This will simulate the old vx_wait()
     behavior.
  
  Sponsored by:   Isilon Systems, Inc.
  
  Revision  Changes    Path
  1.590     +129 -225  src/sys/kern/vfs_subr.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503131154.j2DBsSrq041257>