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