OpenAFS Master Repository branch, master, updated. openafs-devel-1_5_76-2109-g503d094
Gerrit Code Review
Wed, 18 Jan 2012 15:17:24 -0800 (PST)
The following commit has been merged in the master branch:
Author: Jeffrey Altman <firstname.lastname@example.org>
Date: Sat Jan 14 10:32:51 2012 -0500
Windows: cm_EndCallbackGrantingCall refactoring
Refactor cm_EndCallbackGrantingCall to prevent assigning a
callback to the cm_scache object in the case where it is going
to be discarded. If the race was lost the callback data was
already discarded by cm_RevokeCallback. By assigning and then
discarding we are forced to issue an additional change notification
to the smb client or afs redirector. Not only is this extra work
but the afs redirector notification can result in a deadlock with
a kernel thread that is waiting for the current thread to complete.
modify the function signature to return whether or not a race
was lost with a callback revocation.
rename 'freeFlag' to 'freeRacingRevokes' since that is what
the flag is meant to indicate.
create a new 'freeServer' flag to indicate when the server
reference should be released. There was a leak of server
references when a race occurred.
modify all calls to cm_EndCallbackGrantingCall() that provide
an AFSCallBack structure on input to check for a lost race.
If a race occurs, cm_MergeStatus() should not be performed.
Reviewed-by: Jeffrey Altman <email@example.com>
Tested-by: Jeffrey Altman <firstname.lastname@example.org>
src/WINNT/afsd/cm_callback.c | 108 +++++++++++++++++++++++-------------------
src/WINNT/afsd/cm_callback.h | 2 +-
src/WINNT/afsd/cm_conn.c | 2 -
src/WINNT/afsd/cm_vnodeops.c | 32 +++++++-----
4 files changed, 80 insertions(+), 64 deletions(-)
OpenAFS Master Repository