]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: locking: Update oplock optimization for the leases era !
authorJeremy Allison <jra@samba.org>
Tue, 14 Mar 2017 20:34:07 +0000 (13:34 -0700)
committerKarolin Seeger <kseeger@samba.org>
Fri, 24 Mar 2017 11:35:06 +0000 (12:35 +0100)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12628

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Mar 15 20:04:32 CET 2017 on sn-devel-144

(cherry picked from commit 1c4b15aa5f6707e7bcfc21435e26929fb7f45c0f)

Autobuild-User(v4-4-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-4-test): Fri Mar 24 12:35:06 CET 2017 on sn-devel-144

source3/locking/locking.c

index 5a9746094baefbc34ed31c51cac1bb19d645533f..e6d3918db79b41cd694f7588b23371e4105765d3 100644 (file)
@@ -118,17 +118,21 @@ bool strict_lock_default(files_struct *fsp, struct lock_struct *plock)
        }
 
        if (strict_locking == Auto) {
-               if  (EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type) &&
-                    (plock->lock_type == READ_LOCK ||
-                     plock->lock_type == WRITE_LOCK)) {
-                       DEBUG(10, ("is_locked: optimisation - exclusive oplock "
-                                  "on file %s\n", fsp_str_dbg(fsp)));
+               uint32_t lease_type = fsp_lease_type(fsp);
+
+               if ((lease_type & SMB2_LEASE_READ) &&
+                    (plock->lock_type == READ_LOCK))
+               {
+                       DBG_DEBUG("optimisation - read lease on file %s\n",
+                                 fsp_str_dbg(fsp));
                        return true;
                }
-               if ((fsp->oplock_type == LEVEL_II_OPLOCK) &&
-                   (plock->lock_type == READ_LOCK)) {
-                       DEBUG(10, ("is_locked: optimisation - level II oplock "
-                                  "on file %s\n", fsp_str_dbg(fsp)));
+
+               if ((lease_type & SMB2_LEASE_WRITE) &&
+                    (plock->lock_type == WRITE_LOCK))
+               {
+                       DBG_DEBUG("optimisation - write lease on file %s\n",
+                                 fsp_str_dbg(fsp));
                        return true;
                }
        }