From: Andriy Skulysh Date: Wed, 24 Nov 2021 11:33:47 +0000 (+0200) Subject: LU-15402 ldlm: speedup RD flock enqueue X-Git-Tag: 2.14.57~3 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=b07a57027ee5cc1afa82cc4c82be73a2c4894502;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. 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 --- 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;