This reverts commit
a6886dba0ed8a622c9831cd33d310d933492c72d.
This is failing dbench intermittently in sanity-benchmark.
Change-Id: Id3720c79ca8dd9276e086aab5d3fcfe43ddd680a
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/54686
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Mikhail Pershin <mpershin@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Stephane Thiell <sthiell@stanford.edu>
return req->rq_receiving_reply;
}
+#define ptlrpc_cli_wait_unlink(req) __ptlrpc_cli_wait_unlink(req, NULL)
+
static inline int
-ptlrpc_cli_wait_unlink(struct ptlrpc_request *req)
+__ptlrpc_cli_wait_unlink(struct ptlrpc_request *req, bool *discard)
{
int rc;
return 1;
}
+ if (discard) {
+ *discard = false;
+ if (req->rq_reply_unlinked && req->rq_req_unlinked == 0) {
+ *discard = true;
+ spin_unlock(&req->rq_lock);
+ return 1; /* Should call again after LNetMDUnlink */
+ }
+ }
+
rc = !req->rq_req_unlinked || !req->rq_reply_unlinked ||
req->rq_receiving_reply;
spin_unlock(&req->rq_lock);
*/
static int ptlrpc_unregister_reply(struct ptlrpc_request *request, int async)
{
- bool discard;
+ bool discard = false;
/*
* Might sleep.
*/
/*
* Nothing left to do.
*/
- if (!ptlrpc_cli_wait_unlink(request))
+ if (!__ptlrpc_cli_wait_unlink(request, &discard))
RETURN(1);
LNetMDUnlink(request->rq_reply_md_h);
- spin_lock(&request->rq_lock);
- discard = request->rq_reply_unlinked && !request->rq_req_unlinked;
- spin_unlock(&request->rq_lock);
-
if (discard) /* Discard the request-out callback */
__LNetMDUnlink(request->rq_req_md_h, discard);