[lustre-devel] [PATCH 11/50] lustre: fld: don't obtain a slot for fld request

James Simmons jsimmons at infradead.org
Sun Mar 20 06:30:25 PDT 2022


From: Andriy Skulysh <c17819 at cray.com>

fld_client_rpc() is called with ldlm_lock held.
Thus it can cause deadlock on obtainig request slot:

Request slot can be ommited for fld request as they
are sent to separate FLD_REQUEST_PORTAL portal.

HPE-bug-id: LUS-10576
WC-bug-id: https://jira.whamcloud.com/browse/LU-15401
Lustre-commit: be5ed6b393e0268ff ("LU-15401 fld: don't obtain a slot for fld request")
Signed-off-by: Andriy Skulysh <c17819 at cray.com>
Reviewed-by: Vitaly Fertman <c17818 at cray.com>
Reviewed-by: Andrew Perepechko <c17827 at cray.com>
Reviewed-on: https://review.whamcloud.com/45956
Reviewed-by: Andrew Perepechko <andrew.perepechko at hpe.com>
Reviewed-by: Vitaly Fertman <vitaly.fertman at hpe.com>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
---
 fs/lustre/fld/fld_request.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/fs/lustre/fld/fld_request.c b/fs/lustre/fld/fld_request.c
index 4180bcf..b365dc2 100644
--- a/fs/lustre/fld/fld_request.c
+++ b/fs/lustre/fld/fld_request.c
@@ -368,9 +368,7 @@ int fld_client_rpc(struct obd_export *exp,
 		rc = -EAGAIN;
 		req->rq_status = rc;
 	} else {
-		obd_get_request_slot(&exp->exp_obd->u.cli);
 		rc = ptlrpc_queue_wait(req);
-		obd_put_request_slot(&exp->exp_obd->u.cli);
 	}
 
 	if (rc != 0) {
-- 
1.8.3.1



More information about the lustre-devel mailing list