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