[SCM] Samba Shared Repository - branch v3-6-test updated

Jeremy Allison jra at samba.org
Fri Feb 4 16:37:10 MST 2011


The branch, v3-6-test has been updated
       via  f96b11d Move the "oplock file with byte range locks" check to the correct place, where we're making oplock decisions. (cherry picked from commit 8d8242cdfd4aec4be87c81022b7a53acfa8ffaaf)
      from  1b1d52a charcnv: removed call to setlocale() (bug 7519)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit f96b11d61b8a32dbbf321d0c85b0b0e7514e61de
Author: Jeremy Allison <jra at samba.org>
Date:   Fri Feb 4 15:32:09 2011 -0800

    Move the "oplock file with byte range locks" check to the correct place, where we're making oplock decisions.
    (cherry picked from commit 8d8242cdfd4aec4be87c81022b7a53acfa8ffaaf)

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/open.c   |   15 +++++++++++++++
 source3/smbd/oplock.c |   17 -----------------
 2 files changed, 15 insertions(+), 17 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index f236243..0ef2b3a 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -1011,6 +1011,17 @@ static bool delay_for_exclusive_oplocks(files_struct *fsp,
 	return false;
 }
 
+static bool file_has_brlocks(files_struct *fsp)
+{
+	struct byte_range_lock *br_lck;
+
+	br_lck = brl_get_locks_readonly(fsp);
+	if (!br_lck)
+		return false;
+
+	return br_lck->num_locks > 0 ? true : false;
+}
+
 static void grant_fsp_oplock_type(files_struct *fsp,
 				int oplock_request,
 				bool got_level2_oplock,
@@ -1029,6 +1040,10 @@ static void grant_fsp_oplock_type(files_struct *fsp,
 		DEBUG(10,("grant_fsp_oplock_type: oplock type 0x%x on file %s\n",
 			fsp->oplock_type, fsp_str_dbg(fsp)));
 		return;
+	} else if (lp_locking(fsp->conn->params) && file_has_brlocks(fsp)) {
+		DEBUG(10,("grant_fsp_oplock_type: file %s has byte range locks\n",
+			fsp_str_dbg(fsp)));
+		fsp->oplock_type = NO_OPLOCK;
 	}
 
 	if (is_stat_open(fsp->access_mask)) {
diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c
index c3c41d1..a2ba010 100644
--- a/source3/smbd/oplock.c
+++ b/source3/smbd/oplock.c
@@ -52,17 +52,6 @@ void break_kernel_oplock(struct messaging_context *msg_ctx, files_struct *fsp)
 			   msg, MSG_SMB_KERNEL_BREAK_SIZE);
 }
 
-static bool file_has_brlocks(files_struct *fsp)
-{
-	struct byte_range_lock *br_lck;
-
-	br_lck = brl_get_locks_readonly(fsp);
-	if (!br_lck)
-		return false;
-
-	return br_lck->num_locks > 0 ? true : false;
-}
-
 /****************************************************************************
  Attempt to set an oplock on a file. Succeeds if kernel oplocks are
  disabled (just sets flags) and no byte-range locks in the file. Returns True
@@ -72,12 +61,6 @@ static bool file_has_brlocks(files_struct *fsp)
 bool set_file_oplock(files_struct *fsp, int oplock_type)
 {
 	if (fsp->oplock_type == LEVEL_II_OPLOCK) {
-		if (lp_locking(fsp->conn->params) && file_has_brlocks(fsp)) {
-			DEBUG(10, ("Refusing level2 oplock because of "
-				   "byte-range locks on the file\n"));
-			return false;
-		}
-
 		if (koplocks &&
 		    !(koplocks->flags & KOPLOCKS_LEVEL2_SUPPORTED)) {
 			DEBUG(10, ("Refusing level2 oplock, kernel oplocks "


-- 
Samba Shared Repository


More information about the samba-cvs mailing list