mirror of
https://git.openafs.org/openafs.git
synced 2025-01-19 07:20:11 +00:00
rx: Generate BUSY packets for error call channels
Currently, if a call is error'd out but still active, we won't generate BUSY packets if another call comes in on the same channel. This is because we bail out earlier, here, before we get to the BUSY processing. The comments suggest that this is for if we enter an error state while waiting for TQ to clear. So, only do this if our error has changed. Change-Id: I070f2af16bc79b1ebc7d19b7cb761fdbca78344b Reviewed-on: http://gerrit.openafs.org/8460 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com> Reviewed-by: Simon Wilkinson <simonxwilkinson@gmail.com> Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
This commit is contained in:
parent
45721d0d56
commit
a84c6b0ece
@ -3311,12 +3311,13 @@ rxi_ReceiveServerCall(osi_socket socket, struct rx_packet *np,
|
|||||||
*/
|
*/
|
||||||
#ifdef RX_ENABLE_LOCKS
|
#ifdef RX_ENABLE_LOCKS
|
||||||
if (call->state == RX_STATE_ACTIVE) {
|
if (call->state == RX_STATE_ACTIVE) {
|
||||||
|
int old_error = call->error;
|
||||||
rxi_WaitforTQBusy(call);
|
rxi_WaitforTQBusy(call);
|
||||||
/* If we entered error state while waiting,
|
/* If we entered error state while waiting,
|
||||||
* must call rxi_CallError to permit rxi_ResetCall
|
* must call rxi_CallError to permit rxi_ResetCall
|
||||||
* to processed when the tqWaiter count hits zero.
|
* to processed when the tqWaiter count hits zero.
|
||||||
*/
|
*/
|
||||||
if (call->error) {
|
if (call->error && call->error != old_error) {
|
||||||
rxi_CallError(call, call->error);
|
rxi_CallError(call, call->error);
|
||||||
MUTEX_EXIT(&call->lock);
|
MUTEX_EXIT(&call->lock);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user