From 7a6bc371f1c91d89e33cfee9143f5a5a600458dd Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Tue, 13 Nov 2012 22:46:34 -0600 Subject: [PATCH] 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. Reviewed-on: http://gerrit.openafs.org/8460 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Reviewed-by: Simon Wilkinson Reviewed-by: Derrick Brashear (cherry-picked from commit a84c6b0ece1fdee4f462c6ce27fa78c2e0d419f4) Change-Id: I50fda40b3f010f1b9d03f2d3e22ed00381ae0b33 Reviewed-on: http://gerrit.openafs.org/8548 Reviewed-by: Andrew Deason Reviewed-by: Paul Smeddle Reviewed-by: Stephan Wiesand Tested-by: BuildBot --- src/rx/rx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rx/rx.c b/src/rx/rx.c index d4f3bd346..4ac971678 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -3339,13 +3339,14 @@ rxi_ReceivePacket(struct rx_packet *np, osi_socket socket, */ #ifdef AFS_GLOBAL_RXLOCK_KERNEL if (call->state == RX_STATE_ACTIVE) { + int old_error = call->error; rxi_WaitforTQBusy(call); /* * If we entered error state while waiting, * must call rxi_CallError to permit rxi_ResetCall * to processed when the tqWaiter count hits zero. */ - if (call->error) { + if (call->error && call->error != old_error) { rxi_CallError(call, call->error); MUTEX_EXIT(&call->lock); MUTEX_ENTER(&rx_refcnt_mutex); -- 2.39.5