OpenAFS Master Repository branch, master, updated. openafs-devel-1_5_73_3-52-g0607e8a
Gerrit Code Review
gerrit@openafs.org
Thu, 15 Apr 2010 10:40:47 -0700 (PDT)
The following commit has been merged in the master branch:
commit 0607e8a4a19183798c656bf29aaa3f8aa75ac078
Author: Jeffrey Altman <jaltman@your-file-system.com>
Date: Wed Apr 14 23:21:37 2010 -0400
Rx: restore thread safety to rx_NewCall
Thread safety in rx_NewCall requires that only one thread be
actively allocating or recycling a call at a time. Since we are
no longer holding the conn_call_lock across the entire transaction
we need to have another synchronization mechanism. Add a new
rx_connection flag, RX_CONN_MAKECALL_ACTIVE, which when set indicates
that a thread is actively obtaining a call. If any other threads
see this flag set, they will wait until being signalled that the
thread has completed its activity.
In addition, because the call->lock may be dropped when processing
rxi_ResetCall(), we must hold a reference to the call once we
begin using it. Otherwise, the call may be garbage collected
behind our back.
Change-Id: Ie97757f812d7043203ffcaf399400789cda39da1
Reviewed-on: http://gerrit.openafs.org/1755
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
src/rx/rx.c | 41 +++++++++++++++++++++++++++--------------
src/rx/rx.h | 3 ++-
2 files changed, 29 insertions(+), 15 deletions(-)
--
OpenAFS Master Repository