From 51362aba7b22a44cb601fb5c7d8800d55cd4f7b6 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Tue, 9 Mar 2010 14:13:50 -0500 Subject: [PATCH] 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 --- src/afs/VNOPS/afs_vnop_lookup.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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); -- 1.9.4