summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2017-03-14 13:34:07 -0700
committerKarolin Seeger <kseeger@samba.org>2017-03-24 12:35:06 +0100
commit2e00feb278e174fd28d003c4d5a576f91c0bd7d0 (patch)
treef4bcbd2ad7d28601f8d80cf3a6b96214e8bb81c5
parent419f5cca88fa31d723f4bfe243d72398d4445801 (diff)
downloadsamba-2e00feb278e174fd28d003c4d5a576f91c0bd7d0.tar.gz
s3: locking: Update oplock optimization for the leases era !
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
-rw-r--r--source3/locking/locking.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/source3/locking/locking.c b/source3/locking/locking.c
index 5a9746094ba..e6d3918db79 100644
--- a/source3/locking/locking.c
+++ b/source3/locking/locking.c
@@ -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;
}
}