OpenAFS Master Repository branch, master, updated. openafs-devel-1_5_74_1-358-g5fe4161
   
    Gerrit Code Review
     
    gerrit@openafs.org
       
    Thu,  1 Jul 2010 10:05:46 -0700 (PDT)
    
    
  
The following commit has been merged in the master branch:
commit 5fe4161270f774c8f7938c432ac84a5edcaf4c33
Author: Ben Kaduk <kaduk@mit.edu>
Date:   Thu Jul 1 12:47:55 2010 -0400
    FBSD: do not recurse on the afs_xvcache write lock
    
    afs_ShakeLooseVcaches grabs the write lock before calling
    osi_TryEvictVCache.  The latter calls vgone(l), which sometimes
    calls into VOP_CLOSE, which again trys to acquire the write lock,
    leading to deadlock.  Drop the write lock and reaquire it in
    TryEvictVCache as a fix.
    
    While here, set *slept to 1 since we drop the glock.
    
    This churn was enough that the gcc no longer cached the value of
    AFSTOV(avc), which gets set to 0 in VOP_RECLAIM, so the subsequent
    VOP_UNLOCK dereferenced a null pointer.  Cache the vnode pointer
    in a local variable for the entire function instead of using
    AFSTOV() everywhere.
    
    Change-Id: Ic826e7888cb400c19857c58cb6ed88b9bdd0dddc
    Reviewed-on: http://gerrit.openafs.org/2315
    Reviewed-by: Derrick Brashear <shadow@dementia.org>
    Tested-by: Derrick Brashear <shadow@dementia.org>
 src/afs/FBSD/osi_vcache.c |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)
-- 
OpenAFS Master Repository