Whamcloud - gitweb
LU-15402 ldlm: speedup RD flock enqueue 57/45957/2
authorAndriy Skulysh <c17819@cray.com>
Wed, 24 Nov 2021 11:33:47 +0000 (13:33 +0200)
committerOleg Drokin <green@whamcloud.com>
Thu, 20 Jan 2022 18:25:20 +0000 (18:25 +0000)
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 <c17819@cray.com>
Reviewed-by: Alexander Boyko <c17825@cray.com>
Reviewed-by: Andrew Perepechko <c17827@cray.com>
Reviewed-by: Vitaly Fertman <c17818@cray.com>
Reviewed-on: https://review.whamcloud.com/45957
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andrew Perepechko <andrew.perepechko@hpe.com>
Reviewed-by: Alexander Boyko <alexander.boyko@hpe.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/ldlm/ldlm_flock.c

index b83dde8..745c1ea 100644 (file)
@@ -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;