From b07a57027ee5cc1afa82cc4c82be73a2c4894502 Mon Sep 17 00:00:00 2001 From: Andriy Skulysh Date: Wed, 24 Nov 2021 13:33:47 +0200 Subject: [PATCH] LU-15402 ldlm: speedup RD flock enqueue Scanning of lr_granted can be done until covering granted RD lock is reached. Change-Id: I907cff002d9765c5f8496d377eddd5e62795d89c HPE-bug-id: LUS-10623 Signed-off-by: Andriy Skulysh Reviewed-by: Alexander Boyko Reviewed-by: Andrew Perepechko Reviewed-by: Vitaly Fertman Reviewed-on: https://review.whamcloud.com/45957 Tested-by: jenkins Reviewed-by: Andrew Perepechko Reviewed-by: Alexander Boyko Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/ldlm/ldlm_flock.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lustre/ldlm/ldlm_flock.c b/lustre/ldlm/ldlm_flock.c index b83dde8..745c1ea 100644 --- a/lustre/ldlm/ldlm_flock.c +++ b/lustre/ldlm/ldlm_flock.c @@ -355,6 +355,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; -- 1.8.3.1