From e236be32f6acc8c002d7720a4ad16d410957a4be Mon Sep 17 00:00:00 2001 From: Andriy Skulysh Date: Thu, 26 Jun 2014 13:37:36 +0300 Subject: [PATCH] LU-5259 ptlrpc: request gets stuck in UNREGISTERING phase Exit condition from UNREGISTERING phase is releasing of both reply and bulk buffers. Call ptlrpc_unregister_bulk() if ptlrpc_unregister_reply() wasn't completed in async mode before switching to UNREGISTERING phase. Change-Id: Ia0420aecf0391e1a45063add2aa75bb4b3caa5a6 Xyratex-bug-id: MRP-1960 Signed-off-by: Andriy Skulysh Reviewed-on: http://review.whamcloud.com/10846 Reviewed-by: Andreas Dilger Tested-by: Jenkins Reviewed-by: Ann Koehler Tested-by: Maloo Reviewed-by: Liang Zhen Reviewed-by: Oleg Drokin --- lustre/ptlrpc/client.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index 8ec94a3..679d05f 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -1665,8 +1665,10 @@ int ptlrpc_check_set(const struct lu_env *env, struct ptlrpc_request_set *set) req->rq_waiting || req->rq_wait_ctx) { int status; - if (!ptlrpc_unregister_reply(req, 1)) - continue; + if (!ptlrpc_unregister_reply(req, 1)) { + ptlrpc_unregister_bulk(req, 1); + continue; + } spin_lock(&imp->imp_lock); if (ptlrpc_import_delay_req(imp, req, &status)){ -- 1.8.3.1