[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Mon Apr 12 22:41:58 MDT 2010


The branch, master has been updated
       via  7984243... Move to using 64-bit mid values in our internal open file database.
      from  8a2169d... build: cope with spaces in options passed to ./configure

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


- Log -----------------------------------------------------------------
commit 79842437684be380407661fc27e64f223a326b18
Author: Jeremy Allison <jra at samba.org>
Date:   Mon Apr 12 21:40:28 2010 -0700

    Move to using 64-bit mid values in our internal open file database.
    
    This will allow us to share logic much easier between SMB1 and SMB2
    servers.
    
    Jeremy

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

Summary of changes:
 source3/include/proto.h        |   24 ++++++------
 source3/include/smb.h          |   55 +++++++++++++++++++----------
 source3/locking/locking.c      |   15 ++++----
 source3/modules/onefs_open.c   |    7 ++--
 source3/modules/vfs_aio_fork.c |    5 ++-
 source3/smbd/aio.c             |   38 ++++++++++++--------
 source3/smbd/blocking.c        |    4 +-
 source3/smbd/globals.h         |   14 ++-----
 source3/smbd/notify.c          |    4 +-
 source3/smbd/nttrans.c         |    3 +-
 source3/smbd/open.c            |   14 ++++---
 source3/smbd/oplock.c          |   60 ++++++++++++++++----------------
 source3/smbd/oplock_onefs.c    |   16 +++++----
 source3/smbd/process.c         |   73 ++++++++++++++++++++++------------------
 source3/smbd/smb2_glue.c       |   22 +++---------
 15 files changed, 188 insertions(+), 166 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index bd81690..f1cba8f 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -3510,12 +3510,12 @@ bool is_valid_share_mode_entry(const struct share_mode_entry *e);
 bool is_deferred_open_entry(const struct share_mode_entry *e);
 bool is_unused_share_mode_entry(const struct share_mode_entry *e);
 void set_share_mode(struct share_mode_lock *lck, files_struct *fsp,
-		    uid_t uid, uint16 mid, uint16 op_type);
-void add_deferred_open(struct share_mode_lock *lck, uint16 mid,
+		    uid_t uid, uint64_t mid, uint16 op_type);
+void add_deferred_open(struct share_mode_lock *lck, uint64_t mid,
 		       struct timeval request_time,
 		       struct file_id id);
 bool del_share_mode(struct share_mode_lock *lck, files_struct *fsp);
-void del_deferred_open_entry(struct share_mode_lock *lck, uint16 mid);
+void del_deferred_open_entry(struct share_mode_lock *lck, uint64_t mid);
 bool remove_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
 bool downgrade_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
 NTSTATUS can_set_delete_on_close(files_struct *fsp, uint32 dosmode);
@@ -6090,7 +6090,7 @@ NTSTATUS schedule_aio_write_and_X(connection_struct *conn,
 			      size_t numtowrite);
 int wait_for_aio_completion(files_struct *fsp);
 void cancel_aio_by_fsp(files_struct *fsp);
-void smbd_aio_complete_mid(unsigned int mid);
+void smbd_aio_complete_mid(uint64_t mid);
 
 /* The following definitions come from smbd/blocking.c  */
 
@@ -6107,8 +6107,8 @@ bool push_blocking_lock_request( struct byte_range_lock *br_lck,
 		uint64_t count,
 		uint32 blocking_pid);
 void cancel_pending_lock_requests_by_fid(files_struct *fsp, struct byte_range_lock *br_lck);
-void remove_pending_lock_requests_by_mid(int mid);
-bool blocking_lock_was_deferred(int mid);
+void remove_pending_lock_requests_by_mid(uint64_t mid);
+bool blocking_lock_was_deferred(uint64_t mid);
 struct blocking_lock_record *blocking_lock_cancel(files_struct *fsp,
 			uint32 lock_pid,
 			uint64_t offset,
@@ -6547,7 +6547,7 @@ NTSTATUS change_notify_add_request(struct smb_request *req,
 				void (*reply_fn)(struct smb_request *req,
 					NTSTATUS error_code,
 					uint8_t *buf, size_t len));
-void remove_pending_change_notify_requests_by_mid(uint16 mid);
+void remove_pending_change_notify_requests_by_mid(uint64_t mid);
 void remove_pending_change_notify_requests_by_fid(files_struct *fsp,
 						  NTSTATUS status);
 void notify_fname(connection_struct *conn, uint32 action, uint32 filter,
@@ -6808,10 +6808,10 @@ int srv_set_message(char *buf,
                         int num_words,
                         int num_bytes,
                         bool zero);
-void remove_deferred_open_message_smb(uint16_t mid);
-void schedule_deferred_open_message_smb(uint16_t mid);
-bool open_was_deferred(uint16_t mid);
-bool get_deferred_open_message_state(uint16_t mid,
+void remove_deferred_open_message_smb(uint64_t mid);
+void schedule_deferred_open_message_smb(uint64_t mid);
+bool open_was_deferred(uint64_t mid);
+bool get_deferred_open_message_state(uint64_t mid,
 				struct timeval *p_request_time,
 				void **pp_state);
 bool push_deferred_open_message_smb(struct smb_request *req,
@@ -6825,7 +6825,7 @@ struct idle_event *event_add_idle(struct event_context *event_ctx,
 				  bool (*handler)(const struct timeval *now,
 						  void *private_data),
 				  void *private_data);
-NTSTATUS allow_new_trans(struct trans_state *list, int mid);
+NTSTATUS allow_new_trans(struct trans_state *list, uint64_t mid);
 void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes);
 const char *smb_fn_name(int type);
 void add_to_common_flags2(uint32 v);
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 853ced0..19e45ed 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -496,7 +496,7 @@ typedef struct {
 struct trans_state {
 	struct trans_state *next, *prev;
 	uint16 vuid;
-	uint16 mid;
+	uint64_t mid;
 
 	uint32 max_param_return;
 	uint32 max_data_return;
@@ -629,7 +629,7 @@ struct smb_request {
 	uint8_t cmd;
 	uint16 flags2;
 	uint16 smbpid;
-	uint16 mid;
+	uint64_t mid; /* For compatibility with SMB2. */
 	uint32_t seqnum;
 	uint16 vuid;
 	uint16 tid;
@@ -751,7 +751,7 @@ struct pending_message_list {
 /* struct returned by get_share_modes */
 struct share_mode_entry {
 	struct server_id pid;
-	uint16 op_mid;
+	uint64_t op_mid;	/* For compatibility with SMB2 opens. */
 	uint16 op_type;
 	uint32 access_mask;		/* NTCreateX access bits (FILE_READ_DATA etc.) */
 	uint32 share_access;		/* NTCreateX share constants (FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE). */
@@ -770,26 +770,43 @@ struct share_mode_entry {
 
 Offset  Data			length.
 0	struct server_id pid	4
-4	uint16 op_mid		2
-6	uint16 op_type		2
-8	uint32 access_mask	4
-12	uint32 share_access	4
-16	uint32 private_options	4
-20	uint32 time sec		4
-24	uint32 time usec	4
-28	uint64 dev		8 bytes
-36	uint64 inode		8 bytes
-44	uint64 extid		8 bytes
-52	unsigned long file_id	4 bytes
-56	uint32 uid		4 bytes
-60	uint16 flags		2 bytes
-62
+4	uint16 op_mid		8
+12	uint16 op_type		2
+14	uint32 access_mask	4
+18	uint32 share_access	4
+22	uint32 private_options	4
+26	uint32 time sec		4
+30	uint32 time usec	4
+34	uint64 dev		8 bytes
+42	uint64 inode		8 bytes
+50	uint64 extid		8 bytes
+58	unsigned long file_id	4 bytes
+62	uint32 uid		4 bytes
+66	uint16 flags		2 bytes
+68
 
 */
+
+#define OP_BREAK_MSG_PID_OFFSET 0
+#define OP_BREAK_MSG_MID_OFFSET 4
+#define OP_BREAK_MSG_OP_TYPE_OFFSET 12
+#define OP_BREAK_MSG_ACCESS_MASK_OFFSET 14
+#define OP_BREAK_MSG_SHARE_ACCESS_OFFSET 18
+#define OP_BREAK_MSG_PRIV_OFFSET 22
+#define OP_BREAK_MSG_TIME_SEC_OFFSET 26
+#define OP_BREAK_MSG_TIME_USEC_OFFSET 30
+#define OP_BREAK_MSG_DEV_OFFSET 34
+#define OP_BREAK_MSG_INO_OFFSET 42
+#define OP_BREAK_MSG_EXTID_OFFSET 50
+#define OP_BREAK_MSG_FILE_ID_OFFSET 58
+#define OP_BREAK_MSG_UID_OFFSET 62
+#define OP_BREAK_MSG_FLAGS_OFFSET 66
+
 #ifdef CLUSTER_SUPPORT
-#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 66
+#define OP_BREAK_MSG_VNN_OFFSET 68
+#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 72
 #else
-#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 62
+#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 68
 #endif
 
 struct share_mode_lock {
diff --git a/source3/locking/locking.c b/source3/locking/locking.c
index 1ada13e..a2581b1 100644
--- a/source3/locking/locking.c
+++ b/source3/locking/locking.c
@@ -480,13 +480,14 @@ char *share_mode_str(TALLOC_CTX *ctx, int num, const struct share_mode_entry *e)
 {
 	return talloc_asprintf(ctx, "share_mode_entry[%d]: %s "
 		 "pid = %s, share_access = 0x%x, private_options = 0x%x, "
-		 "access_mask = 0x%x, mid = 0x%x, type= 0x%x, gen_id = %lu, "
+		 "access_mask = 0x%x, mid = 0x%llx, type= 0x%x, gen_id = %lu, "
 		 "uid = %u, flags = %u, file_id %s",
 		 num,
 		 e->op_type == UNUSED_SHARE_MODE_ENTRY ? "UNUSED" : "",
 		 procid_str_static(&e->pid),
 		 e->share_access, e->private_options,
-		 e->access_mask, e->op_mid, e->op_type, e->share_file_id,
+		 e->access_mask, (unsigned long long)e->op_mid,
+		 e->op_type, e->share_file_id,
 		 (unsigned int)e->uid, (unsigned int)e->flags,
 		 file_id_string_tos(&e->id));
 }
@@ -1098,7 +1099,7 @@ bool is_unused_share_mode_entry(const struct share_mode_entry *e)
 
 static void fill_share_mode_entry(struct share_mode_entry *e,
 				  files_struct *fsp,
-				  uid_t uid, uint16 mid, uint16 op_type)
+				  uid_t uid, uint64_t mid, uint16 op_type)
 {
 	ZERO_STRUCTP(e);
 	e->pid = procid_self();
@@ -1117,7 +1118,7 @@ static void fill_share_mode_entry(struct share_mode_entry *e,
 
 static void fill_deferred_open_entry(struct share_mode_entry *e,
 				     const struct timeval request_time,
-				     struct file_id id, uint16 mid)
+				     struct file_id id, uint64_t mid)
 {
 	ZERO_STRUCTP(e);
 	e->pid = procid_self();
@@ -1152,14 +1153,14 @@ static void add_share_mode_entry(struct share_mode_lock *lck,
 }
 
 void set_share_mode(struct share_mode_lock *lck, files_struct *fsp,
-		    uid_t uid, uint16 mid, uint16 op_type)
+		    uid_t uid, uint64_t mid, uint16 op_type)
 {
 	struct share_mode_entry entry;
 	fill_share_mode_entry(&entry, fsp, uid, mid, op_type);
 	add_share_mode_entry(lck, &entry);
 }
 
-void add_deferred_open(struct share_mode_lock *lck, uint16 mid,
+void add_deferred_open(struct share_mode_lock *lck, uint64_t mid,
 		       struct timeval request_time,
 		       struct file_id id)
 {
@@ -1238,7 +1239,7 @@ bool del_share_mode(struct share_mode_lock *lck, files_struct *fsp)
 	return True;
 }
 
-void del_deferred_open_entry(struct share_mode_lock *lck, uint16 mid)
+void del_deferred_open_entry(struct share_mode_lock *lck, uint64_t mid)
 {
 	struct share_mode_entry entry, *e;
 
diff --git a/source3/modules/onefs_open.c b/source3/modules/onefs_open.c
index eb22584..b0c88c7 100644
--- a/source3/modules/onefs_open.c
+++ b/source3/modules/onefs_open.c
@@ -358,7 +358,8 @@ static void defer_open(struct share_mode_lock *lck,
 
 		if (procid_is_me(&e->pid) && (e->op_mid == req->mid)) {
 			DEBUG(0, ("Trying to defer an already deferred "
-				  "request: mid=%d, exiting\n", req->mid));
+				"request: mid=%llu, exiting\n",
+				(unsigned long long)req->mid));
 			exit_server("attempt to defer a deferred request");
 		}
 	}
@@ -366,10 +367,10 @@ static void defer_open(struct share_mode_lock *lck,
 	/* End paranoia check */
 
 	DEBUG(10,("defer_open_sharing_error: time [%u.%06u] adding deferred "
-		  "open entry for mid %u\n",
+		  "open entry for mid %llu\n",
 		  (unsigned int)request_time.tv_sec,
 		  (unsigned int)request_time.tv_usec,
-		  (unsigned int)req->mid));
+		  (unsigned long long)req->mid));
 
 	if (!push_deferred_open_message_smb(req, request_time, timeout,
 				       (char *)state, sizeof(*state))) {
diff --git a/source3/modules/vfs_aio_fork.c b/source3/modules/vfs_aio_fork.c
index ebad4b4..8fd8936 100644
--- a/source3/modules/vfs_aio_fork.c
+++ b/source3/modules/vfs_aio_fork.c
@@ -383,7 +383,7 @@ static void handle_aio_completion(struct event_context *event_ctx,
 				  void *p)
 {
 	struct aio_child *child = (struct aio_child *)p;
-	uint16 mid;
+	uint64_t mid;
 
 	DEBUG(10, ("handle_aio_completion called with flags=%d\n", flags));
 
@@ -411,7 +411,8 @@ static void handle_aio_completion(struct event_context *event_ctx,
 		       child->retval.size);
 	}
 
-	mid = child->aiocb->aio_sigevent.sigev_value.sival_int;
+	/* FIXME - this won't work for SMB2. */
+	mid = (uint64_t)child->aiocb->aio_sigevent.sigev_value.sival_int;
 
 	DEBUG(10, ("mid %d finished\n", (int)mid));
 
diff --git a/source3/smbd/aio.c b/source3/smbd/aio.c
index e172b27..b775977 100644
--- a/source3/smbd/aio.c
+++ b/source3/smbd/aio.c
@@ -45,7 +45,9 @@ static void smbd_aio_signal_handler(struct tevent_context *ev_ctx,
 				    void *_info, void *private_data)
 {
 	siginfo_t *info = (siginfo_t *)_info;
-	unsigned int mid = (unsigned int)info->si_value.sival_int;
+	/* This won't work for SMB2.
+	 * We need a mapping table from sival_int -> uint64_t mid. */
+	uint64_t mid = (uint64_t)info->si_value.sival_int;
 
 	smbd_aio_complete_mid(mid);
 }
@@ -126,7 +128,7 @@ static struct aio_extra *create_aio_extra(files_struct *fsp, size_t buflen)
  Given the mid find the extended aio struct containing it.
 *****************************************************************************/
 
-static struct aio_extra *find_aio_ex(uint16 mid)
+static struct aio_extra *find_aio_ex(uint64_t mid)
 {
 	struct aio_extra *p;
 
@@ -546,9 +548,10 @@ static bool handle_aio_completed(struct aio_extra *aio_ex, int *perr)
 	/* Ensure the operation has really completed. */
 	err = SMB_VFS_AIO_ERROR(fsp, &aio_ex->acb);
 	if (err == EINPROGRESS) {
-		DEBUG(10,( "handle_aio_completed: operation mid %u still in "
-			   "process for file %s\n",
-			   aio_ex->req->mid, fsp_str_dbg(aio_ex->fsp)));
+		DEBUG(10,( "handle_aio_completed: operation mid %llu still in "
+			"process for file %s\n",
+			(unsigned long long)aio_ex->req->mid,
+			fsp_str_dbg(aio_ex->fsp)));
 		return False;
 	}
 
@@ -558,8 +561,9 @@ static bool handle_aio_completed(struct aio_extra *aio_ex, int *perr)
 	if (err == ECANCELED) {
 		/* If error is ECANCELED then don't return anything to the
 		 * client. */
-	        DEBUG(10,( "handle_aio_completed: operation mid %u"
-                           " canceled\n", aio_ex->req->mid));
+	        DEBUG(10,( "handle_aio_completed: operation mid %llu"
+			" canceled\n",
+			(unsigned long long)aio_ex->req->mid));
 		return True;
         }
 
@@ -575,7 +579,7 @@ static bool handle_aio_completed(struct aio_extra *aio_ex, int *perr)
  Handle any aio completion inline.
 *****************************************************************************/
 
-void smbd_aio_complete_mid(unsigned int mid)
+void smbd_aio_complete_mid(uint64_t mid)
 {
 	files_struct *fsp = NULL;
 	struct aio_extra *aio_ex = find_aio_ex(mid);
@@ -583,11 +587,13 @@ void smbd_aio_complete_mid(unsigned int mid)
 
 	outstanding_aio_calls--;
 
-	DEBUG(10,("smbd_aio_complete_mid: mid[%u]\n", mid));
+	DEBUG(10,("smbd_aio_complete_mid: mid[%llu]\n",
+		(unsigned long long)mid));
 
 	if (!aio_ex) {
 		DEBUG(3,("smbd_aio_complete_mid: Can't find record to "
-			 "match mid %u.\n", mid));
+			"match mid %llu.\n",
+			(unsigned long long)mid));
 		return;
 	}
 
@@ -596,7 +602,8 @@ void smbd_aio_complete_mid(unsigned int mid)
 		/* file was closed whilst I/O was outstanding. Just
 		 * ignore. */
 		DEBUG( 3,( "smbd_aio_complete_mid: file closed whilst "
-			   "aio outstanding (mid[%u]).\n", mid));
+			"aio outstanding (mid[%llu]).\n",
+			(unsigned long long)mid));
 		return;
 	}
 
@@ -685,14 +692,15 @@ int wait_for_aio_completion(files_struct *fsp)
 		/* One or more events might have completed - process them if
 		 * so. */
 		for( i = 0; i < aio_completion_count; i++) {
-			uint16 mid = aiocb_list[i]->aio_sigevent.sigev_value.sival_int;
+			/* FIXME. Won't work for SMB2. */
+			uint64_t mid = (uint64_t)aiocb_list[i]->aio_sigevent.sigev_value.sival_int;
 
 			aio_ex = find_aio_ex(mid);
 
 			if (!aio_ex) {
-				DEBUG(0, ("wait_for_aio_completion: mid %u "
+				DEBUG(0, ("wait_for_aio_completion: mid %llu "
 					  "doesn't match an aio record\n",
-					  (unsigned int)mid ));
+					  (unsigned long long)mid ));
 				continue;
 			}
 
@@ -766,6 +774,6 @@ int wait_for_aio_completion(files_struct *fsp)
 	return ENOSYS;
 }
 
-void smbd_aio_complete_mid(unsigned int mid);
+void smbd_aio_complete_mid(uint64_t mid);
 
 #endif
diff --git a/source3/smbd/blocking.c b/source3/smbd/blocking.c
index 90d2f31..d876c8b 100644
--- a/source3/smbd/blocking.c
+++ b/source3/smbd/blocking.c
@@ -608,7 +608,7 @@ void cancel_pending_lock_requests_by_fid(files_struct *fsp, struct byte_range_lo
  Delete entries by mid from the blocking lock pending queue. Always send reply.
 *****************************************************************************/
 
-void remove_pending_lock_requests_by_mid(int mid)
+void remove_pending_lock_requests_by_mid(uint64_t mid)
 {
 	struct blocking_lock_record *blr, *next = NULL;
 
@@ -651,7 +651,7 @@ void remove_pending_lock_requests_by_mid(int mid)
  Is this mid a blocking lock request on the queue ?
 *****************************************************************************/
 
-bool blocking_lock_was_deferred(int mid)
+bool blocking_lock_was_deferred(uint64_t mid)
 {
 	struct blocking_lock_record *blr, *next = NULL;
 
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index f08da7b..864143d 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -332,10 +332,10 @@ bool push_blocking_lock_request_smb2( struct byte_range_lock *br_lck,
 				uint64_t offset,
 				uint64_t count,
 				uint32_t blocking_pid);
-void remove_deferred_open_message_smb2(uint16_t mid);
-void schedule_deferred_open_message_smb2(uint16_t mid);
-bool open_was_deferred_smb2(uint16_t mid);
-bool get_deferred_open_message_state_smb2(uint16_t mid,
+void remove_deferred_open_message_smb2(uint64_t mid);
+void schedule_deferred_open_message_smb2(uint64_t mid);
+bool open_was_deferred_smb2(uint64_t mid);
+bool get_deferred_open_message_state_smb2(uint64_t mid,
 			struct timeval *p_request_time,
 			void **pp_state);
 bool push_deferred_open_message_smb2(struct smb_request *req,
@@ -360,11 +360,6 @@ struct smbd_smb2_request {
 
 	int current_idx;
 	bool do_signing;
-	/*
-	 * mid used for compatibility with SMB1 code.
-	 * Server allocated, never seen by client.
-	 */
-	uint16_t compat_mid;
 
 	struct files_struct *compat_chain_fsp;
 
@@ -562,7 +557,6 @@ struct smbd_server_connection {
 			struct smbd_smb2_session *list;
 		} sessions;
 		struct smbd_smb2_request *requests;
-		uint16_t next_compat_mid;
 	} smb2;
 };
 
diff --git a/source3/smbd/notify.c b/source3/smbd/notify.c
index 0c75769..554591f 100644
--- a/source3/smbd/notify.c
+++ b/source3/smbd/notify.c
@@ -45,7 +45,7 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name);
 struct notify_mid_map {
 	struct notify_mid_map *prev, *next;
 	struct notify_change_request *req;
-	uint16 mid;
+	uint64_t mid;
 };
 
 static bool notify_change_record_identical(struct notify_change *c1,
@@ -297,7 +297,7 @@ static void change_notify_remove_request(struct notify_change_request *remove_re
  Delete entries by mid from the change notify pending queue. Always send reply.
 *****************************************************************************/
 
-void remove_pending_change_notify_requests_by_mid(uint16 mid)
+void remove_pending_change_notify_requests_by_mid(uint64_t mid)
 {
 	struct notify_mid_map *map;
 	struct smbd_server_connection *sconn = smbd_server_conn;
diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
index a03a0b1..2783545 100644
--- a/source3/smbd/nttrans.c
+++ b/source3/smbd/nttrans.c
@@ -1280,7 +1280,8 @@ void reply_ntcancel(struct smb_request *req)
 	remove_pending_change_notify_requests_by_mid(req->mid);
 	remove_pending_lock_requests_by_mid(req->mid);
 
-	DEBUG(3,("reply_ntcancel: cancel called on mid = %d.\n", req->mid));
+	DEBUG(3,("reply_ntcancel: cancel called on mid = %llu.\n",
+		(unsigned long long)req->mid));
 
 	END_PROFILE(SMBntcancel);
 	return;
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 1e98e88..0e45c1d 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -890,7 +890,7 @@ static bool is_delete_request(files_struct *fsp) {
 
 static NTSTATUS send_break_message(files_struct *fsp,
 					struct share_mode_entry *exclusive,
-					uint16 mid,
+					uint64_t mid,
 					int oplock_request)
 {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list