[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Fri May 7 07:22:12 MDT 2010


The branch, master has been updated
       via  adf4833... This patch looks bigger than it is. It does 2 things. 1). Renames smbpid -> smblctx in our locking code. 2). Widens smblctx to 64-bits internally. Preparing to use the SMB2 handle as the locking context.
      from  6fd4861... s4-devel: a very useful script when dealing with library/linking issues

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit adf4833792f36653bc8a854aeff47598a046dad6
Author: Jeremy Allison <jra at samba.org>
Date:   Fri May 7 06:20:50 2010 -0700

    This patch looks bigger than it is. It does 2 things. 1). Renames smbpid -> smblctx in our locking code. 2). Widens smblctx to 64-bits internally. Preparing to use the SMB2 handle as the locking context.
    
    Jeremy.

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

Summary of changes:
 source3/include/locking.h |    8 +++---
 source3/include/proto.h   |   32 ++++++++++++------------
 source3/locking/brlock.c  |   52 +++++++++++++++++++-------------------
 source3/locking/locking.c |   30 +++++++++++-----------
 source3/smbd/aio.c        |    4 +-
 source3/smbd/blocking.c   |   54 ++++++++++++++++++++--------------------
 source3/smbd/globals.h    |    4 +-
 source3/smbd/reply.c      |   60 ++++++++++++++++++++++----------------------
 source3/smbd/smb2_lock.c  |   28 ++++++++++----------
 source3/smbd/trans2.c     |   28 ++++++++++----------
 10 files changed, 150 insertions(+), 150 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/locking.h b/source3/include/locking.h
index ee59cad..88104b0 100644
--- a/source3/include/locking.h
+++ b/source3/include/locking.h
@@ -36,7 +36,7 @@ enum brl_flavour {WINDOWS_LOCK = 0, POSIX_LOCK = 1};
    this client */
 
 struct lock_context {
-	uint32 smbpid;
+	uint64_t smblctx;
 	uint16 tid;
 	struct server_id pid;
 };
@@ -88,8 +88,8 @@ struct blocking_lock_record {
 	int lock_num;
 	uint64_t offset;
 	uint64_t count;
-	uint32_t lock_pid;
-	uint32_t blocking_pid; /* PID that blocks us. */
+	uint64_t smblctx;
+	uint64_t blocking_smblctx; /* Context that blocks us. */
 	enum brl_flavour lock_flav;
 	enum brl_type lock_type;
 	struct smb_request *req;
@@ -97,7 +97,7 @@ struct blocking_lock_record {
 };
 
 struct smbd_lock_element {
-	uint32_t smbpid;
+	uint64_t smblctx;
 	enum brl_type brltype;
 	uint64_t offset;
 	uint64_t count;
diff --git a/source3/include/proto.h b/source3/include/proto.h
index f05f76b..a3ba747 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -3374,18 +3374,18 @@ NTSTATUS brl_lock_windows_default(struct byte_range_lock *br_lck,
 
 NTSTATUS brl_lock(struct messaging_context *msg_ctx,
 		struct byte_range_lock *br_lck,
-		uint32 smbpid,
+		uint64_t smblctx,
 		struct server_id pid,
 		br_off start,
 		br_off size, 
 		enum brl_type lock_type,
 		enum brl_flavour lock_flav,
 		bool blocking_lock,
-		uint32 *psmbpid,
+		uint64_t *psmblctx,
 		struct blocking_lock_record *blr);
 bool brl_unlock(struct messaging_context *msg_ctx,
 		struct byte_range_lock *br_lck,
-		uint32 smbpid,
+		uint64_t smblctx,
 		struct server_id pid,
 		br_off start,
 		br_off size,
@@ -3394,21 +3394,21 @@ bool brl_unlock_windows_default(struct messaging_context *msg_ctx,
 			       struct byte_range_lock *br_lck,
 			       const struct lock_struct *plock);
 bool brl_locktest(struct byte_range_lock *br_lck,
-		uint32 smbpid,
+		uint64_t smblctx,
 		struct server_id pid,
 		br_off start,
 		br_off size, 
 		enum brl_type lock_type,
 		enum brl_flavour lock_flav);
 NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
-		uint32 *psmbpid,
+		uint64_t *psmblctx,
 		struct server_id pid,
 		br_off *pstart,
 		br_off *psize, 
 		enum brl_type *plock_type,
 		enum brl_flavour lock_flav);
 bool brl_lock_cancel(struct byte_range_lock *br_lck,
-		uint32 smbpid,
+		uint64_t smblctx,
 		struct server_id pid,
 		br_off start,
 		br_off size,
@@ -3434,7 +3434,7 @@ void brl_register_msgs(struct messaging_context *msg_ctx);
 const char *lock_type_name(enum brl_type lock_type);
 const char *lock_flav_name(enum brl_flavour lock_flav);
 void init_strict_lock_struct(files_struct *fsp,
-				uint32 smbpid,
+				uint64_t smblctx,
 				br_off start,
 				br_off size,
 				enum brl_type lock_type,
@@ -3444,30 +3444,30 @@ bool strict_lock_default(files_struct *fsp,
 void strict_unlock_default(files_struct *fsp,
 				struct lock_struct *plock);
 NTSTATUS query_lock(files_struct *fsp,
-			uint32 *psmbpid,
+			uint64_t *psmblctx,
 			uint64_t *pcount,
 			uint64_t *poffset,
 			enum brl_type *plock_type,
 			enum brl_flavour lock_flav);
 struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
 			files_struct *fsp,
-			uint32 lock_pid,
+			uint64_t smblctx,
 			uint64_t count,
 			uint64_t offset,
 			enum brl_type lock_type,
 			enum brl_flavour lock_flav,
 			bool blocking_lock,
 			NTSTATUS *perr,
-			uint32 *plock_pid,
+			uint64_t *psmblctx,
 			struct blocking_lock_record *blr);
 NTSTATUS do_unlock(struct messaging_context *msg_ctx,
 			files_struct *fsp,
-			uint32 lock_pid,
+			uint64_t smblctx,
 			uint64_t count,
 			uint64_t offset,
 			enum brl_flavour lock_flav);
 NTSTATUS do_lock_cancel(files_struct *fsp,
-			uint32 lock_pid,
+			uint64 smblctx,
 			uint64_t count,
 			uint64_t offset,
 			enum brl_flavour lock_flav,
@@ -5997,19 +5997,19 @@ bool push_blocking_lock_request( struct byte_range_lock *br_lck,
 		files_struct *fsp,
 		int lock_timeout,
 		int lock_num,
-		uint32 lock_pid,
+		uint64_t smblctx,
 		enum brl_type lock_type,
 		enum brl_flavour lock_flav,
 		uint64_t offset,
 		uint64_t count,
-		uint32 blocking_pid);
+		uint64_t blocking_smblctx);
 void cancel_pending_lock_requests_by_fid(files_struct *fsp,
 			struct byte_range_lock *br_lck,
 			enum file_close_type close_type);
 void remove_pending_lock_requests_by_mid_smb1(uint64_t mid);
 bool blocking_lock_was_deferred_smb1(uint64_t mid);
 struct blocking_lock_record *blocking_lock_cancel_smb1(files_struct *fsp,
-			uint32 lock_pid,
+			uint64_t smblctx,
 			uint64_t offset,
 			uint64_t count,
 			enum brl_flavour lock_flav,
@@ -6868,7 +6868,7 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
 			int count,
 			bool target_is_directory);
 void reply_copy(struct smb_request *req);
-uint32 get_lock_pid(const uint8_t *data, int data_offset,
+uint64_t get_lock_pid(const uint8_t *data, int data_offset,
 		    bool large_file_format);
 uint64_t get_lock_count(const uint8_t *data, int data_offset,
 			bool large_file_format);
diff --git a/source3/locking/brlock.c b/source3/locking/brlock.c
index c462217..985b98a 100644
--- a/source3/locking/brlock.c
+++ b/source3/locking/brlock.c
@@ -42,9 +42,9 @@ static struct db_context *brlock_db;
 
 static void print_lock_struct(unsigned int i, struct lock_struct *pls)
 {
-	DEBUG(10,("[%u]: smbpid = %u, tid = %u, pid = %s, ",
+	DEBUG(10,("[%u]: smblctx = %llu, tid = %u, pid = %s, ",
 			i,
-			(unsigned int)pls->context.smbpid,
+			(unsigned long long)pls->context.smblctx,
 			(unsigned int)pls->context.tid,
 			procid_str(talloc_tos(), &pls->context.pid) ));
 	
@@ -64,7 +64,7 @@ bool brl_same_context(const struct lock_context *ctx1,
 			     const struct lock_context *ctx2)
 {
 	return (procid_equal(&ctx1->pid, &ctx2->pid) &&
-		(ctx1->smbpid == ctx2->smbpid) &&
+		(ctx1->smblctx == ctx2->smblctx) &&
 		(ctx1->tid == ctx2->tid));
 }
 
@@ -342,7 +342,7 @@ NTSTATUS brl_lock_windows_default(struct byte_range_lock *br_lck,
 		/* Do any Windows or POSIX locks conflict ? */
 		if (brl_conflict(&locks[i], plock)) {
 			/* Remember who blocked us. */
-			plock->context.smbpid = locks[i].context.smbpid;
+			plock->context.smblctx = locks[i].context.smblctx;
 			return brl_lock_failed(fsp,plock,blocking_lock);
 		}
 #if ZERO_ZERO
@@ -373,7 +373,7 @@ NTSTATUS brl_lock_windows_default(struct byte_range_lock *br_lck,
 				&errno_ret)) {
 
 			/* We don't know who blocked us. */
-			plock->context.smbpid = 0xFFFFFFFF;
+			plock->context.smblctx = 0xFFFFFFFFFFFFFFFFLL;
 
 			if (errno_ret == EACCES || errno_ret == EAGAIN) {
 				status = NT_STATUS_FILE_LOCK_CONFLICT;
@@ -747,7 +747,7 @@ static NTSTATUS brl_lock_posix(struct messaging_context *msg_ctx,
 				/* No games with error messages. */
 				SAFE_FREE(tp);
 				/* Remember who blocked us. */
-				plock->context.smbpid = curr_lock->context.smbpid;
+				plock->context.smblctx = curr_lock->context.smblctx;
 				return NT_STATUS_FILE_LOCK_CONFLICT;
 			}
 			/* Just copy the Windows lock into the new array. */
@@ -762,7 +762,7 @@ static NTSTATUS brl_lock_posix(struct messaging_context *msg_ctx,
 				/* No games with error messages. */
 				SAFE_FREE(tp);
 				/* Remember who blocked us. */
-				plock->context.smbpid = curr_lock->context.smbpid;
+				plock->context.smblctx = curr_lock->context.smblctx;
 				return NT_STATUS_FILE_LOCK_CONFLICT;
 			}
 
@@ -822,7 +822,7 @@ static NTSTATUS brl_lock_posix(struct messaging_context *msg_ctx,
 				&errno_ret)) {
 
 			/* We don't know who blocked us. */
-			plock->context.smbpid = 0xFFFFFFFF;
+			plock->context.smblctx = 0xFFFFFFFFFFFFFFFFLL;
 
 			if (errno_ret == EACCES || errno_ret == EAGAIN) {
 				SAFE_FREE(tp);
@@ -902,14 +902,14 @@ NTSTATUS smb_vfs_call_brl_lock_windows(struct vfs_handle_struct *handle,
 
 NTSTATUS brl_lock(struct messaging_context *msg_ctx,
 		struct byte_range_lock *br_lck,
-		uint32 smbpid,
+		uint64_t smblctx,
 		struct server_id pid,
 		br_off start,
 		br_off size, 
 		enum brl_type lock_type,
 		enum brl_flavour lock_flav,
 		bool blocking_lock,
-		uint32 *psmbpid,
+		uint64_t *psmblctx,
 		struct blocking_lock_record *blr)
 {
 	NTSTATUS ret;
@@ -926,7 +926,7 @@ NTSTATUS brl_lock(struct messaging_context *msg_ctx,
 	memset(&lock, '\0', sizeof(lock));
 #endif
 
-	lock.context.smbpid = smbpid;
+	lock.context.smblctx = smblctx;
 	lock.context.pid = pid;
 	lock.context.tid = br_lck->fsp->conn->cnum;
 	lock.start = start;
@@ -948,8 +948,8 @@ NTSTATUS brl_lock(struct messaging_context *msg_ctx,
 #endif
 
 	/* If we're returning an error, return who blocked us. */
-	if (!NT_STATUS_IS_OK(ret) && psmbpid) {
-		*psmbpid = lock.context.smbpid;
+	if (!NT_STATUS_IS_OK(ret) && psmblctx) {
+		*psmblctx = lock.context.smblctx;
 	}
 	return ret;
 }
@@ -1235,7 +1235,7 @@ bool smb_vfs_call_brl_unlock_windows(struct vfs_handle_struct *handle,
 
 bool brl_unlock(struct messaging_context *msg_ctx,
 		struct byte_range_lock *br_lck,
-		uint32 smbpid,
+		uint64_t smblctx,
 		struct server_id pid,
 		br_off start,
 		br_off size,
@@ -1243,7 +1243,7 @@ bool brl_unlock(struct messaging_context *msg_ctx,
 {
 	struct lock_struct lock;
 
-	lock.context.smbpid = smbpid;
+	lock.context.smblctx = smblctx;
 	lock.context.pid = pid;
 	lock.context.tid = br_lck->fsp->conn->cnum;
 	lock.start = start;
@@ -1266,7 +1266,7 @@ bool brl_unlock(struct messaging_context *msg_ctx,
 ****************************************************************************/
 
 bool brl_locktest(struct byte_range_lock *br_lck,
-		uint32 smbpid,
+		uint64_t smblctx,
 		struct server_id pid,
 		br_off start,
 		br_off size, 
@@ -1279,7 +1279,7 @@ bool brl_locktest(struct byte_range_lock *br_lck,
 	const struct lock_struct *locks = br_lck->lock_data;
 	files_struct *fsp = br_lck->fsp;
 
-	lock.context.smbpid = smbpid;
+	lock.context.smblctx = smblctx;
 	lock.context.pid = pid;
 	lock.context.tid = br_lck->fsp->conn->cnum;
 	lock.start = start;
@@ -1324,7 +1324,7 @@ bool brl_locktest(struct byte_range_lock *br_lck,
 ****************************************************************************/
 
 NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
-		uint32 *psmbpid,
+		uint64_t *psmblctx,
 		struct server_id pid,
 		br_off *pstart,
 		br_off *psize, 
@@ -1336,7 +1336,7 @@ NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
 	const struct lock_struct *locks = br_lck->lock_data;
 	files_struct *fsp = br_lck->fsp;
 
-	lock.context.smbpid = *psmbpid;
+	lock.context.smblctx = *psmblctx;
 	lock.context.pid = pid;
 	lock.context.tid = br_lck->fsp->conn->cnum;
 	lock.start = *pstart;
@@ -1357,7 +1357,7 @@ NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
 		}
 
 		if (conflict) {
-			*psmbpid = exlock->context.smbpid;
+			*psmblctx = exlock->context.smblctx;
         		*pstart = exlock->start;
 		        *psize = exlock->size;
         		*plock_type = exlock->lock_type;
@@ -1378,8 +1378,8 @@ NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
 			fsp->fnum, fsp_str_dbg(fsp)));
 
 		if (ret) {
-			/* Hmmm. No clue what to set smbpid to - use -1. */
-			*psmbpid = 0xFFFF;
+			/* Hmmm. No clue what to set smblctx to - use -1. */
+			*psmblctx = 0xFFFFFFFFFFFFFFFFLL;
 			return NT_STATUS_LOCK_NOT_GRANTED;
 		}
         }
@@ -1401,7 +1401,7 @@ bool smb_vfs_call_brl_cancel_windows(struct vfs_handle_struct *handle,
  Remove a particular pending lock.
 ****************************************************************************/
 bool brl_lock_cancel(struct byte_range_lock *br_lck,
-		uint32 smbpid,
+		uint64_t smblctx,
 		struct server_id pid,
 		br_off start,
 		br_off size,
@@ -1411,7 +1411,7 @@ bool brl_lock_cancel(struct byte_range_lock *br_lck,
 	bool ret;
 	struct lock_struct lock;
 
-	lock.context.smbpid = smbpid;
+	lock.context.smblctx = smblctx;
 	lock.context.pid = pid;
 	lock.context.tid = br_lck->fsp->conn->cnum;
 	lock.start = start;
@@ -1533,7 +1533,7 @@ void brl_close_fnum(struct messaging_context *msg_ctx,
 						(lock->fnum == fnum)) {
 					brl_unlock(msg_ctx,
 						br_lck,
-						lock->context.smbpid,
+						lock->context.smblctx,
 						pid,
 						lock->start,
 						lock->size,
@@ -1646,7 +1646,7 @@ static bool validate_lock_entries(unsigned int *pnum_entries, struct lock_struct
 			num_valid_entries = 0;
 			for (i = 0; i < *pnum_entries; i++) {
 				struct lock_struct *lock_data = &locks[i];
-				if (lock_data->context.smbpid &&
+				if (lock_data->context.smblctx &&
 						lock_data->context.tid) {
 					/* Valid (nonzero) entry - copy it. */
 					memcpy(&new_lock_data[num_valid_entries],
diff --git a/source3/locking/locking.c b/source3/locking/locking.c
index dc43f9e..917b436 100644
--- a/source3/locking/locking.c
+++ b/source3/locking/locking.c
@@ -77,7 +77,7 @@ const char *lock_flav_name(enum brl_flavour lock_flav)
 ****************************************************************************/
 
 void init_strict_lock_struct(files_struct *fsp,
-				uint32 smbpid,
+				uint64_t smblctx,
 				br_off start,
 				br_off size,
 				enum brl_type lock_type,
@@ -85,7 +85,7 @@ void init_strict_lock_struct(files_struct *fsp,
 {
 	SMB_ASSERT(lock_type == READ_LOCK || lock_type == WRITE_LOCK);
 
-	plock->context.smbpid = smbpid;
+	plock->context.smblctx = smblctx;
         plock->context.tid = fsp->conn->cnum;
         plock->context.pid = procid_self();
         plock->start = start;
@@ -124,7 +124,7 @@ bool strict_lock_default(files_struct *fsp, struct lock_struct *plock)
 				return True;
 			}
 			ret = brl_locktest(br_lck,
-					plock->context.smbpid,
+					plock->context.smblctx,
 					plock->context.pid,
 					plock->start,
 					plock->size,
@@ -139,7 +139,7 @@ bool strict_lock_default(files_struct *fsp, struct lock_struct *plock)
 			return True;
 		}
 		ret = brl_locktest(br_lck,
-				plock->context.smbpid,
+				plock->context.smblctx,
 				plock->context.pid,
 				plock->start,
 				plock->size,
@@ -166,7 +166,7 @@ void strict_unlock_default(files_struct *fsp, struct lock_struct *plock)
 ****************************************************************************/
 
 NTSTATUS query_lock(files_struct *fsp,
-			uint32 *psmbpid,
+			uint64_t *psmblctx,
 			uint64_t *pcount,
 			uint64_t *poffset,
 			enum brl_type *plock_type,
@@ -188,7 +188,7 @@ NTSTATUS query_lock(files_struct *fsp,
 	}
 
 	return brl_lockquery(br_lck,
-			psmbpid,
+			psmblctx,
 			procid_self(),
 			poffset,
 			pcount,
@@ -230,14 +230,14 @@ static void decrement_current_lock_count(files_struct *fsp,
 
 struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
 			files_struct *fsp,
-			uint32 lock_pid,
+			uint64_t smblctx,
 			uint64_t count,
 			uint64_t offset,
 			enum brl_type lock_type,
 			enum brl_flavour lock_flav,
 			bool blocking_lock,
 			NTSTATUS *perr,
-			uint32 *plock_pid,
+			uint64_t *psmblctx,
 			struct blocking_lock_record *blr)
 {
 	struct byte_range_lock *br_lck = NULL;
@@ -274,14 +274,14 @@ struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
 
 	*perr = brl_lock(msg_ctx,
 			br_lck,
-			lock_pid,
+			smblctx,
 			procid_self(),
 			offset,
-			count, 
+			count,
 			lock_type,
 			lock_flav,
 			blocking_lock,
-			plock_pid,
+			psmblctx,
 			blr);
 
 	DEBUG(10, ("do_lock: returning status=%s\n", nt_errstr(*perr)));
@@ -296,7 +296,7 @@ struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
 
 NTSTATUS do_unlock(struct messaging_context *msg_ctx,
 			files_struct *fsp,
-			uint32 lock_pid,
+			uint64_t smblctx,
 			uint64_t count,
 			uint64_t offset,
 			enum brl_flavour lock_flav)
@@ -323,7 +323,7 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx,
 
 	ok = brl_unlock(msg_ctx,
 			br_lck,
-			lock_pid,
+			smblctx,
 			procid_self(),
 			offset,
 			count,
@@ -345,7 +345,7 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx,
 ****************************************************************************/
 
 NTSTATUS do_lock_cancel(files_struct *fsp,
-			uint32 lock_pid,
+			uint64 smblctx,
 			uint64_t count,
 			uint64_t offset,
 			enum brl_flavour lock_flav,
@@ -373,7 +373,7 @@ NTSTATUS do_lock_cancel(files_struct *fsp,
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list