From: Jeffrey Altman Date: Sat, 7 Mar 2009 14:11:01 +0000 (+0000) Subject: STABLE14-avoid-blocking-with-connhashtable-lock-in-reapconnections-20090307 X-Git-Tag: openafs-stable-1_4_9pre1~35 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=46b8dc55c749502a8416b5959bf78c49f5912c93;p=packages%2Fo%2Fopenafs.git STABLE14-avoid-blocking-with-connhashtable-lock-in-reapconnections-20090307 LICENSE BSD instead of potentially blocking waiting for a call lock, assume if the call is locked, the conn is still busy. also, don't even try to get the conn data lock if we don't need to (cherry picked from commit 581fd18bd9c3fe8e07169c60a7cde9e72e8af89c) --- diff --git a/src/rx/rx.c b/src/rx/rx.c index c16aec29d..94a939547 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -5789,8 +5789,11 @@ rxi_ReapConnections(void) for (i = 0; i < RX_MAXCALLS; i++) { call = conn->call[i]; if (call) { + int code; havecalls = 1; - MUTEX_ENTER(&call->lock); + code = MUTEX_TRYENTER(&call->lock); + if (!code) + continue; #ifdef RX_ENABLE_LOCKS result = rxi_CheckCall(call, 1); #else /* RX_ENABLE_LOCKS */