svn commit: samba r13798 - in trunk/source/locking: .

jra at samba.org jra at samba.org
Thu Mar 2 22:58:50 GMT 2006


Author: jra
Date: 2006-03-02 22:58:50 +0000 (Thu, 02 Mar 2006)
New Revision: 13798

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=13798

Log:
Acutally remember to copy new locks into the lock array.
This helps :-). Now back to passing locktest again for
Windows locks.
Jeremy.

Modified:
   trunk/source/locking/brlock.c
   trunk/source/locking/locking.c


Changeset:
Modified: trunk/source/locking/brlock.c
===================================================================
--- trunk/source/locking/brlock.c	2006-03-02 21:43:40 UTC (rev 13797)
+++ trunk/source/locking/brlock.c	2006-03-02 22:58:50 UTC (rev 13798)
@@ -311,8 +311,10 @@
 	if (!tp) {
 		return NT_STATUS_NO_MEMORY;
 	} else {
+		locks = (struct lock_struct *)tp;
+		memcpy(&locks[br_lck->num_locks], plock, sizeof(struct lock_struct));
 		br_lck->num_locks += 1;
-		br_lck->lock_data = (void *)tp;
+		br_lck->lock_data = (void *)locks;
 		br_lck->modified = True;
 	}
 
@@ -715,6 +717,22 @@
 	return 0;
 }
 
+static void print_lock_struct(unsigned int i, struct lock_struct *pls)
+{
+	DEBUG(10,("[%u]: smbpid = %u, tid = %u, pid = %u, ",
+			i,
+			(unsigned int)pls->context.smbpid,
+			(unsigned int)pls->context.tid,
+			(unsigned int)procid_to_pid(&pls->context.pid) ));
+	
+	DEBUG(10,("start = %.0f, size = %.0f, fnum = %d, %s %s\n",
+		(double)pls->start,
+		(double)pls->size,
+		pls->fnum,
+		lock_type_name(pls->lock_type),
+		lock_flav_name(pls->lock_flav) ));
+}
+
 /*******************************************************************
  Fetch a set of byte range lock data from the database.
  Leave the record locked.
@@ -748,5 +766,15 @@
 	br_lck->lock_data = (void *)data.dptr;
 	br_lck->num_locks = data.dsize / sizeof(struct lock_struct);
 
+	if (DEBUGLEVEL >= 10) {
+		unsigned int i;
+		struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
+		DEBUG(10,("brl_get_locks: %u current locks on dev=%.0f, inode=%.0f\n",
+			br_lck->num_locks,
+			(double)fsp->dev, (double)fsp->inode ));
+		for( i = 0; i < br_lck->num_locks; i++) {
+			print_lock_struct(i, &locks[i]);
+		}
+	}
 	return br_lck;
 }

Modified: trunk/source/locking/locking.c
===================================================================
--- trunk/source/locking/locking.c	2006-03-02 21:43:40 UTC (rev 13797)
+++ trunk/source/locking/locking.c	2006-03-02 22:58:50 UTC (rev 13798)
@@ -48,12 +48,21 @@
  Debugging aids :-).
 ****************************************************************************/
 
-static const char *lock_type_name(enum brl_type lock_type)
+const char *lock_type_name(enum brl_type lock_type)
 {
-	return (lock_type == READ_LOCK) ? "READ" : "WRITE";
+	switch (lock_type) {
+		case READ_LOCK:
+			return "READ";
+		case WRITE_LOCK:
+			return "WRITE";
+		case PENDING_LOCK:
+			return "PENDING";
+		default:
+			return "other";
+	}
 }
 
-static const char *lock_flav_name(enum brl_flavour lock_flav)
+const char *lock_flav_name(enum brl_flavour lock_flav)
 {
 	return (lock_flav == WINDOWS_LOCK) ? "WINDOWS_LOCK" : "POSIX_LOCK";
 }
@@ -112,10 +121,10 @@
 		TALLOC_FREE(br_lck);
 	}
 
-	DEBUG(10,("is_locked: flavour = %s brl start=%.0f len=%.0f %s for file %s\n",
+	DEBUG(10,("is_locked: flavour = %s brl start=%.0f len=%.0f %s for fnum %d file %s\n",
 			lock_flav_name(lock_flav),
 			(double)offset, (double)count, ret ? "locked" : "unlocked",
-			fsp->fsp_name ));
+			fsp->fnum, fsp->fsp_name ));
 
 	/*
 	 * There is no lock held by an SMB daemon, check to
@@ -126,9 +135,9 @@
 	if(!ret && lp_posix_locking(snum) && (lock_flav == WINDOWS_LOCK)) {
 		ret = is_posix_locked(fsp, offset, count, lock_type);
 
-		DEBUG(10,("is_locked: posix start=%.0f len=%.0f %s for file %s\n",
+		DEBUG(10,("is_locked: posix start=%.0f len=%.0f %s for fnum %d file %s\n",
 				(double)offset, (double)count, ret ? "locked" : "unlocked",
-				fsp->fsp_name ));
+				fsp->fnum, fsp->fsp_name ));
 	}
 
 	return ret;
@@ -155,9 +164,9 @@
 
 	/* NOTE! 0 byte long ranges ARE allowed and should be stored  */
 
-	DEBUG(10,("do_lock: lock flavour %s lock type %s start=%.0f len=%.0f requested for file %s\n",
+	DEBUG(10,("do_lock: lock flavour %s lock type %s start=%.0f len=%.0f requested for fnum %d file %s\n",
 		lock_flav_name(lock_flav), lock_type_name(lock_type),
-		(double)offset, (double)count, fsp->fsp_name ));
+		(double)offset, (double)count, fsp->fnum, fsp->fsp_name ));
 
 	if (!OPEN_FSP(fsp) || !fsp->can_lock) {
 		return status;
@@ -304,8 +313,8 @@
 		return NT_STATUS_INVALID_HANDLE;
 	}
 	
-	DEBUG(10,("do_unlock: unlock start=%.0f len=%.0f requested for file %s\n",
-		  (double)offset, (double)count, fsp->fsp_name ));
+	DEBUG(10,("do_unlock: unlock start=%.0f len=%.0f requested for fnum %d file %s\n",
+		  (double)offset, (double)count, fsp->fnum, fsp->fsp_name ));
 
 	/*
 	 * Remove the existing lock record from the tdb lockdb



More information about the samba-cvs mailing list