diff options
Diffstat (limited to 'source3/locking')
-rw-r--r-- | source3/locking/locking.c | 11 |
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; } |