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

Jeremy Allison jra at samba.org
Mon Oct 26 22:24:17 MDT 2009


The branch, v3-5-test has been updated
       via  b3bb185... Second part of the fix for bug 6828 - infinite timeout occurs when byte lock held outside of samba. Fixes case where a connection with a pending lock can me marked "idle", and ensures that the lock queue timeout is always recalculated. Jeremy.
      from  855430f... WHATSNEW: Update changes.

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


- Log -----------------------------------------------------------------
commit b3bb18554d4e414fb960b8d043af464c8b4ac43a
Author: Jeremy Allison <jra at samba.org>
Date:   Mon Oct 26 21:20:22 2009 -0700

    Second part of the fix for bug 6828 - infinite timeout occurs when byte lock held outside of samba.
    Fixes case where a connection with a pending lock can me marked "idle", and ensures
    that the lock queue timeout is always recalculated.
    Jeremy.

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

Summary of changes:
 source3/smbd/blocking.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/blocking.c b/source3/smbd/blocking.c
index 01d9ca8..deb7f8f 100644
--- a/source3/smbd/blocking.c
+++ b/source3/smbd/blocking.c
@@ -652,7 +652,6 @@ void process_blocking_lock_queue(void)
 {
 	struct timeval tv_curr = timeval_current();
 	struct blocking_lock_record *blr, *next = NULL;
-	bool recalc_timeout = False;
 
 	/*
 	 * Go through the queue and see if we can get any of the locks.
@@ -670,6 +669,14 @@ void process_blocking_lock_queue(void)
 
 		DEBUG(10, ("Processing BLR = %p\n", blr));
 
+		/* We use set_current_service so connections with
+		 * pending locks are not marked as idle.
+		 */
+
+		set_current_service(blr->fsp->conn,
+				SVAL(blr->req->inbuf,smb_flg),
+				false);
+
 		if(blocking_lock_record_process(blr)) {
 			struct byte_range_lock *br_lck = brl_get_locks(
 				talloc_tos(), blr->fsp);
@@ -690,7 +697,6 @@ void process_blocking_lock_queue(void)
 
 			DLIST_REMOVE(blocking_lock_queue, blr);
 			TALLOC_FREE(blr);
-			recalc_timeout = True;
 			continue;
 		}
 
@@ -729,13 +735,10 @@ void process_blocking_lock_queue(void)
 			blocking_lock_reply_error(blr,NT_STATUS_FILE_LOCK_CONFLICT);
 			DLIST_REMOVE(blocking_lock_queue, blr);
 			TALLOC_FREE(blr);
-			recalc_timeout = True;
 		}
 	}
 
-	if (recalc_timeout) {
-		recalc_brl_timeout();
-	}
+	recalc_brl_timeout();
 }
 
 /****************************************************************************


-- 
Samba Shared Repository


More information about the samba-cvs mailing list