svn commit: samba r4121 - in branches/SAMBA_3_0/source/locking: .
jra at samba.org
jra at samba.org
Thu Dec 9 22:10:40 GMT 2004
Author: jra
Date: 2004-12-09 22:10:40 +0000 (Thu, 09 Dec 2004)
New Revision: 4121
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=4121
Log:
Optimisation from Nadav Danieli <nadavd at exanet.com>. If we're oplocked,
short circuit some is_locked() tests.
Jeremy.
Modified:
branches/SAMBA_3_0/source/locking/locking.c
Changeset:
Modified: branches/SAMBA_3_0/source/locking/locking.c
===================================================================
--- branches/SAMBA_3_0/source/locking/locking.c 2004-12-09 21:42:00 UTC (rev 4120)
+++ branches/SAMBA_3_0/source/locking/locking.c 2004-12-09 22:10:40 UTC (rev 4121)
@@ -77,9 +77,17 @@
if (!lp_locking(snum) || !lp_strict_locking(snum))
return(False);
- ret = !brl_locktest(fsp->dev, fsp->inode, fsp->fnum,
+ if (EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type) && (lock_type == READ_LOCK || lock_type == WRITE_LOCK)) {
+ DEBUG(10,("is_locked: optimisation - exclusive oplock on file %s\n", fsp->fsp_name ));
+ ret = 0;
+ } else if (LEVEL_II_OPLOCK_TYPE(fsp->oplock_type) && (lock_type == READ_LOCK)) {
+ DEBUG(10,("is_locked: optimisation - level II oplock on file %s\n", fsp->fsp_name ));
+ ret = 0;
+ } else {
+ ret = !brl_locktest(fsp->dev, fsp->inode, fsp->fnum,
global_smbpid, sys_getpid(), conn->cnum,
offset, count, lock_type);
+ }
DEBUG(10,("is_locked: brl start=%.0f len=%.0f %s for file %s\n",
(double)offset, (double)count, ret ? "locked" : "unlocked",
More information about the samba-cvs
mailing list