afs: Drop GLOCK for RXAFS_GetCapabilities 81/14181/2
authorAndrew Deason <adeason@dson.org>
Sun, 3 May 2020 04:54:55 +0000 (23:54 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 15 May 2020 04:15:51 +0000 (00:15 -0400)
We are hitting the net here; we certainly should not be holding
AFS_GLOCK while waiting for the server's response.

Found via FreeBSD WITNESS.

Change-Id: Ie727db27adaeed23ac8cff7665143bae2ce2ede8
Reviewed-on: https://gerrit.openafs.org/14181
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/afs/afs_server.c

index e6a1d0f..22d9bfd 100644 (file)
@@ -1520,7 +1520,9 @@ afs_GetCapabilities(struct server *ts)
     }
     /* InitCallBackStateN, triggered by our RPC, may need this */
     ReleaseWriteLock(&afs_xserver);
+    AFS_GUNLOCK();
     code = RXAFS_GetCapabilities(rxconn, &caps);
+    AFS_GLOCK();
     ObtainWriteLock(&afs_xserver, 723);
     /* we forced a conn above; important we mark it down if needed */
     if ((code < 0) && (code != RXGEN_OPCODE)) {