From: Derrick Brashear Date: Tue, 9 Mar 2010 19:13:50 +0000 (-0500) Subject: make tryevalfakestat really not block X-Git-Tag: openafs-devel-1_5_73~19 X-Git-Url: http://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=51362aba7b22a44cb601fb5c7d8800d55cd4f7b6 make tryevalfakestat really not block turns out this VerifyVCache can end up hitting other lockers. move it out of the try path. Change-Id: I073318a44b4da519413905b677fd439f1edd6c54 Reviewed-on: http://gerrit.openafs.org/1547 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- diff --git a/src/afs/VNOPS/afs_vnop_lookup.c b/src/afs/VNOPS/afs_vnop_lookup.c index 2086e17..c4d2a11 100644 --- a/src/afs/VNOPS/afs_vnop_lookup.c +++ b/src/afs/VNOPS/afs_vnop_lookup.c @@ -377,11 +377,12 @@ afs_EvalFakeStat_int(struct vcache **avcp, struct afs_fakestat_state *state, if (tvc->mvstat != 1) return 0; - /* Is the call to VerifyVCache really necessary? */ - code = afs_VerifyVCache(tvc, areq); - if (code) - goto done; if (canblock) { + /* Is the call to VerifyVCache really necessary? */ + code = afs_VerifyVCache(tvc, areq); + if (code) + goto done; + ObtainWriteLock(&tvc->lock, 599); code = EvalMountPoint(tvc, NULL, &tvolp, areq); ReleaseWriteLock(&tvc->lock);