Whamcloud - gitweb
LU-15435 ptlrpc: unregister reply buffer on rq_err 32/46132/11
authorAlexander Zarochentsev <alexander.zarochentsev@hpe.com>
Fri, 14 Jan 2022 15:35:48 +0000 (10:35 -0500)
committerOleg Drokin <green@whamcloud.com>
Sun, 27 Mar 2022 03:55:03 +0000 (03:55 +0000)
Unregister reply buffer on rq_err and prevent a late reply from
modifying request flags in INTERPRET state.

Fixes: cefabee52586 ("LU-15112 mgc: do not ignore target registration failure")
HPE-bug-id: LUS-10717

Signed-off-by: Alexander Zarochentsev <alexander.zarochentsev@hpe.com>
Signed-off-by: Alexey Lyashkov <alexey.lyashkov@hpe.com>
Change-Id: I0106e3fd5443c1292c103247cdbf6122f91922e8
Reviewed-on: https://review.whamcloud.com/46132
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Alexander Boyko <alexander.boyko@hpe.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/ptlrpc/client.c

index 5b74d89..fff2296 100644 (file)
@@ -1936,6 +1936,11 @@ int ptlrpc_check_set(const struct lu_env *env, struct ptlrpc_request_set *set)
                }
 
                if (req->rq_err) {
+                       if (!ptlrpc_unregister_reply(req, 1)) {
+                               ptlrpc_unregister_bulk(req, 1);
+                               continue;
+                       }
+
                        spin_lock(&req->rq_lock);
                        req->rq_replied = 0;
                        spin_unlock(&req->rq_lock);