Whamcloud - gitweb
LU-17270 kfilnd: Check status of TAG_RX_OK in WAIT_COMP 27/53027/2
authorChris Horn <chris.horn@hpe.com>
Tue, 7 Nov 2023 17:36:29 +0000 (10:36 -0700)
committerOleg Drokin <green@whamcloud.com>
Thu, 15 Feb 2024 07:06:58 +0000 (07:06 +0000)
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 <chris.horn@hpe.com>
Change-Id: I52d6ea52746cbc14a86478fcccb32b25badd3b0a
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53027
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Ron Gredvig <ron.gredvig@hpe.com>
Reviewed-by: Ian Ziemba <ian.ziemba@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/klnds/kfilnd/kfilnd_tn.c

index 7b5cf15..0b802fa 100644 (file)
@@ -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)) {