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