From fc6b321036f34c00d5b32b49c817dc0034fbad9e Mon Sep 17 00:00:00 2001 From: Amir Shehata Date: Tue, 30 Apr 2019 14:01:48 -0700 Subject: [PATCH] LU-12199 lnet: verify msg is commited for send/recv Before performing a health check make sure the message is committed for either send or receive. Otherwise we can just finalize it. Test-Parameters: forbuildonly Signed-off-by: Amir Shehata Change-Id: Id7bd956f8e81e60a2d63059730973f851d4c7abe Reviewed-on: https://review.whamcloud.com/34797 Reviewed-by: Chris Horn Tested-by: Jenkins Reviewed-by: Sebastien Buisson --- lnet/lnet/lib-msg.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lnet/lnet/lib-msg.c b/lnet/lnet/lib-msg.c index e1a8142..f785f55 100644 --- a/lnet/lnet/lib-msg.c +++ b/lnet/lnet/lib-msg.c @@ -793,6 +793,20 @@ lnet_is_health_check(struct lnet_msg *msg) bool hc; int status = msg->msg_ev.status; + if ((!msg->msg_tx_committed && !msg->msg_rx_committed) || + !msg->msg_onactivelist) { + CDEBUG(D_NET, "msg %p not committed for send or receive\n", + msg); + return false; + } + + if ((msg->msg_tx_committed && !msg->msg_txpeer) || + (msg->msg_rx_committed && !msg->msg_rxpeer)) { + CDEBUG(D_NET, "msg %p failed too early to retry and send\n", + msg); + return false; + } + /* * perform a health check for any message committed for transmit */ -- 1.8.3.1