From: Andriy Skulysh Date: Wed, 24 Nov 2021 11:33:47 +0000 (+0200) Subject: LU-15402 ldlm: speedup RD flock enqueue X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=9a7e790be094e07184ce3d2e3794222252a05914;p=fs%2Flustre-release.git LU-15402 ldlm: speedup RD flock enqueue Scanning of lr_granted can be done until covering granted RD lock is reached. Lustre-change: https://review.whamcloud.com/45957 Lustre-commit: b07a57027ee5cc1afa82cc4c82be73a2c4894502 Change-Id: I907cff002d9765c5f8496d377eddd5e62795d89c HPE-bug-id: LUS-10623 Signed-off-by: Andriy Skulysh Reviewed-on: https://review.whamcloud.com/48323 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger --- diff --git a/lustre/ldlm/ldlm_flock.c b/lustre/ldlm/ldlm_flock.c index d5f740f..1941872 100644 --- a/lustre/ldlm/ldlm_flock.c +++ b/lustre/ldlm/ldlm_flock.c @@ -356,6 +356,15 @@ reprocess: continue; } + if (req->l_req_mode == LCK_PR && + lock->l_granted_mode == LCK_PR && + lock->l_policy_data.l_flock.start <= + req->l_policy_data.l_flock.start && + lock->l_policy_data.l_flock.end >= + req->l_policy_data.l_flock.end) { + /* there can't be granted WR lock */ + break; + } /* locks are compatible, overlap doesn't matter */ if (lockmode_compat(lock->l_granted_mode, mode)) continue;