From 0fbaf7ba629861c8847e607cb62aea534f8f2b0b Mon Sep 17 00:00:00 2001 From: Chris Horn Date: Tue, 7 Nov 2023 10:36:29 -0700 Subject: [PATCH] LU-17270 kfilnd: Check status of TAG_RX_OK in WAIT_COMP When the target of a bulk Get/Put drops the message it sends ENODATA back to the initiator via immediate data. This status needs to be accounted for while the transaction is in the TN_STATE_WAIT_COMP state, otherwise it can be lost if the TN_EVENT_TAG_RX_OK event arrives before the TN_EVENT_TX_OK event. HPE-bug-id: LUS-11971 Test-Parameters: trivial Signed-off-by: Chris Horn Change-Id: I52d6ea52746cbc14a86478fcccb32b25badd3b0a Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53027 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Ron Gredvig Reviewed-by: Ian Ziemba Reviewed-by: Oleg Drokin --- lnet/klnds/kfilnd/kfilnd_tn.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lnet/klnds/kfilnd/kfilnd_tn.c b/lnet/klnds/kfilnd/kfilnd_tn.c index 7b5cf15..0b802fa 100644 --- a/lnet/klnds/kfilnd/kfilnd_tn.c +++ b/lnet/klnds/kfilnd/kfilnd_tn.c @@ -1105,6 +1105,9 @@ static int kfilnd_tn_state_wait_comp(struct kfilnd_transaction *tn, break; case TN_EVENT_TAG_RX_OK: + if (status) + kfilnd_tn_status_update(tn, status, LNET_MSG_STATUS_OK); + kfilnd_tn_state_change(tn, TN_STATE_WAIT_SEND_COMP); if (unlikely(tn->msg_type == KFILND_MSG_BULK_PUT_REQ) && CFS_FAIL_CHECK(CFS_KFI_FAIL_WAIT_SEND_COMP2)) { -- 1.8.3.1