From: adilger Date: Wed, 3 Nov 2004 00:40:32 +0000 (+0000) Subject: Branch: b1_4 X-Git-Tag: v1_8_0_110~486^5~127 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=ca8c385749e2092ab92a0c79d58638ce30acfd18;p=fs%2Flustre-release.git Branch: b1_4 Don't complete EKC RPC on peer death. Fixes oops hit during CMD testing. b=4012 --- diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 95e485a..84686a6 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -4,6 +4,7 @@ tbd Cluster File Systems, Inc. - flock/lockf fixes - don't use EXT3 constants in llite code (5094) - return async write errors to application if possible (2248) + - don't complete EKC RPC on peer death (4012) * miscellania - reorganization of lov code - single portals codebase diff --git a/lustre/portals/knals/qswnal/qswnal_cb.c b/lustre/portals/knals/qswnal/qswnal_cb.c index 97b5a26..ef9fd55 100644 --- a/lustre/portals/knals/qswnal/qswnal_cb.c +++ b/lustre/portals/knals/qswnal/qswnal_cb.c @@ -995,6 +995,8 @@ kqswnal_rdma (kqswnal_rx_t *krx, lib_msg_t *libmsg, int type, #endif if (eprc != EP_SUCCESS) { CERROR("ep_rpc_get failed: %d\n", eprc); + /* don't attempt RPC completion */ + krx->krx_rpc_reply_needed = 0; rc = -ECONNABORTED; } break; @@ -1582,11 +1584,12 @@ kqswnal_rxhandler(EP_RXD *rxd) krx->krx_state = KRX_PARSE; krx->krx_rxd = rxd; krx->krx_nob = nob; -#if MULTIRAIL_EKC - krx->krx_rpc_reply_needed = (status != EP_SHUTDOWN) && ep_rxd_isrpc(rxd); -#else - krx->krx_rpc_reply_needed = ep_rxd_isrpc(rxd); -#endif + + /* RPC reply iff rpc request received without error */ + krx->krx_rpc_reply_needed = ep_rxd_isrpc(rxd) && + !(status == EP_SUCCESS || + status == EP_MSG_TOO_BIG); + /* Default to failure if an RPC reply is requested but not handled */ krx->krx_rpc_reply_status = -EPROTO; atomic_set (&krx->krx_refcount, 1);