OpenAFS Master Repository branch, openafs-devel-1_7_x, updated. openafs-devel-1_7_9-7-gb77a28b

Gerrit Code Review gerrit@openafs.org
Tue, 10 Apr 2012 07:42:03 -0700 (PDT)


The following commit has been merged in the openafs-devel-1_7_x branch:
commit 4c6116515f08febccabe5dace3c115593149b99f
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Feb 13 14:11:36 2012 -0600

    Rx: Avoid lastBusy/PEER_BUSY discrepancy
    
    If an rx call has the RX_CALL_PEER_BUSY flag set, but the call's
    conn->lastBusy is not set, we can easily cause an rx caller to loop
    infinitely. rx_NewCall will see that lastBusy for a call channel is
    not set, and will use that call channel, but rxi_CheckBusy will note
    that the call appears busy and that there are non-busy call channels
    on the same conn, and so will return RX_CALL_BUSY.
    
    This can currently happen in rxi_ResetCall, since we set
    RX_CALL_PEER_BUSY on the call again if the call had that flag set when
    rxi_ResetCall was called. If we are calling rxi_ResetCall with
    'newcall' set, the passed in call is unrelated to the new call, since
    it was obtained from the free list. Thus, the busy-ness of the call
    should be ignored. Fix this by only paying attention to the incoming
    RX_CALL_PEER_BUSY flag if 'newcall' is not set.
    
    Also prevent this from happening by clearing RX_CALL_PEER_BUSY in
    rx_NewCall when we select a call and clear lastBusy for that call.
    
    Reviewed-on: http://gerrit.openafs.org/6707
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Alistair Ferguson <alistair.ferguson@mac.com>
    Reviewed-by: Derrick Brashear <shadow@dementix.org>
    (cherry picked from commit 2a4c6c3b9e1dc30d5599e67e02237a1aeef8a0f0)
    
    Change-Id: I6a9d2dadc90340b6abcca118cc6e17942a8ca0f1
    Reviewed-on: http://gerrit.openafs.org/7154
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

 src/rx/rx.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

-- 
OpenAFS Master Repository