summaryrefslogtreecommitdiff
path: root/source3/locking
diff options
context:
space:
mode:
Diffstat (limited to 'source3/locking')
-rw-r--r--source3/locking/locking.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/source3/locking/locking.c b/source3/locking/locking.c
index a70f9d20fe..b342fa9b1e 100644
--- a/source3/locking/locking.c
+++ b/source3/locking/locking.c
@@ -1186,7 +1186,16 @@ bool remove_share_oplock(struct share_mode_lock *lck, files_struct *fsp)
}
e->op_mid = 0;
- e->op_type = NO_OPLOCK;
+ if (EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type)) {
+ /*
+ * Going from exclusive or batch,
+ * we always go through FAKE_LEVEL_II
+ * first.
+ */
+ e->op_type = FAKE_LEVEL_II_OPLOCK;
+ } else {
+ e->op_type = NO_OPLOCK;
+ }
lck->modified = True;
return True;
}