}
if (strict_locking == Auto) {
- 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));
+ 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)));
return true;
}
-
- if ((lease_type & SMB2_LEASE_WRITE) &&
- (plock->lock_type == WRITE_LOCK))
- {
- DBG_DEBUG("optimisation - write lease on file %s\n",
- fsp_str_dbg(fsp));
+ 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)));
return true;
}
}