From be5ed6b393e0268ffa0c046951b3b01cf0d7c74e Mon Sep 17 00:00:00 2001 From: Andriy Skulysh Date: Wed, 10 Nov 2021 22:22:06 +0200 Subject: [PATCH 1/1] LU-15401 fld: don't obtain a slot for fld request fld_client_rpc() is called with ldlm_lock held. Thus it can cause deadlock on obtainig request slot: #0 [ffff92c9d63df568] __schedule #1 [ffff92c9d63df5f0] schedule #2 [ffff92c9d63df600] obd_get_request_slot #3 [ffff92c9d63df6b0] fld_client_rpc #4 [ffff92c9d63df700] fld_client_lookup #5 [ffff92c9d63df780] lmv_fld_lookup #6 [ffff92c9d63df7b8] lmv_unpackmd #7 [ffff92c9d63df810] mdc_get_lustre_md #8 [ffff92c9d63df850] lmv_get_lustre_md #9 [ffff92c9d63df888] ll_prep_inode Request slot can be ommited for fld reuest as they are sent to separate FLD_REQUEST_PORTAL portal. Change-Id: I12987ca2e4aa0d70aa760e3a1ac20fe1a91d64b5 HPE-bug-id: LUS-10576 Signed-off-by: Andriy Skulysh Reviewed-by: Vitaly Fertman Reviewed-by: Andrew Perepechko Reviewed-on: https://review.whamcloud.com/45956 Reviewed-by: Andrew Perepechko Tested-by: jenkins Tested-by: Maloo Reviewed-by: Vitaly Fertman Reviewed-by: Oleg Drokin --- lustre/fld/fld_request.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/lustre/fld/fld_request.c b/lustre/fld/fld_request.c index 3be93c2..e381eb8 100644 --- a/lustre/fld/fld_request.c +++ b/lustre/fld/fld_request.c @@ -389,9 +389,7 @@ again: 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 == -ENOENT) { -- 1.8.3.1