make tryevalfakestat really not block
authorDerrick Brashear <shadow@dementia.org>
Tue, 9 Mar 2010 19:13:50 +0000 (14:13 -0500)
committerDerrick Brashear <shadow@dementia.org>
Tue, 23 Mar 2010 19:23:29 +0000 (12:23 -0700)
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 <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/afs/VNOPS/afs_vnop_lookup.c

index 2086e17..c4d2a11 100644 (file)
@@ -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);