Whamcloud - gitweb
LU-11647 ptlrpc: always unregister bulk 98/33798/4
authorHongchao Zhang <hongchao@whamcloud.com>
Thu, 15 Nov 2018 16:21:15 +0000 (11:21 -0500)
committerOleg Drokin <green@whamcloud.com>
Fri, 15 Feb 2019 01:37:54 +0000 (01:37 +0000)
In ptlrpc_check_set, the bulk should be unregistered before
ptl_send_rpc in any case.

Lustre-change: https://review.whamcloud.com/22378
Lustre-commit: e34a4cf031a2b83259cee8e05c2f646b5652b6a9

Change-Id: Icf963002f934b43ccbb9d6ef02ba7f9d11f297f8
Signed-off-by: Hongchao Zhang <hongchao@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/33798
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/ptlrpc/client.c

index d127e5e..9642a56 100644 (file)
@@ -1896,10 +1896,6 @@ int ptlrpc_check_set(const struct lu_env *env, struct ptlrpc_request_set *set)
                                        spin_lock(&req->rq_lock);
                                        req->rq_resend = 1;
                                        spin_unlock(&req->rq_lock);
-
-                                       if (req->rq_bulk != NULL &&
-                                           !ptlrpc_unregister_bulk(req, 1))
-                                               continue;
                                 }
                                 /*
                                  * rq_wait_ctx is only touched by ptlrpcd,
@@ -1926,6 +1922,12 @@ int ptlrpc_check_set(const struct lu_env *env, struct ptlrpc_request_set *set)
                                        spin_unlock(&req->rq_lock);
                                }
 
+                               /* In any case, the previous bulk should be
+                                * cleaned up to prepare for the new sending */
+                               if (req->rq_bulk != NULL &&
+                                   !ptlrpc_unregister_bulk(req, 1))
+                                       continue;
+
                                rc = ptl_send_rpc(req, 0);
                                if (rc == -ENOMEM) {
                                        spin_lock(&imp->imp_lock);