[SCM] Samba Shared Repository - branch master updated

Michael Adam obnox at samba.org
Tue Aug 20 06:36:03 MDT 2013


The branch, master has been updated
       via  534af20 smbd: Simplify new_break_message_smb1
       via  e7dab40 smbd: Replace a 0-timeout wakeup_send
      from  1808316 docs: Fix variable list in man vfs_crossrename.

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


- Log -----------------------------------------------------------------
commit 534af203e3e32789b673e6e029b3fb3fd5d40646
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Aug 19 12:28:24 2013 +0000

    smbd: Simplify new_break_message_smb1
    
    There's no point in allocating a fixed length array that we throw away
    immediately after use.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Michael Adam <obnox at samba.org>
    
    Autobuild-User(master): Michael Adam <obnox at samba.org>
    Autobuild-Date(master): Tue Aug 20 14:35:21 CEST 2013 on sn-devel-104

commit e7dab403c0ca6f64d0ffe5a61898cd642a16b078
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Aug 16 11:40:38 2013 +0000

    smbd: Replace a 0-timeout wakeup_send
    
    A tevent_immediate is simpler and is what we want here.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Michael Adam <obnox at samba.org>

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

Summary of changes:
 source3/smbd/oplock.c |   55 +++++++++++++++++-------------------------------
 1 files changed, 20 insertions(+), 35 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c
index e08a963..21792bd 100644
--- a/source3/smbd/oplock.c
+++ b/source3/smbd/oplock.c
@@ -223,16 +223,11 @@ bool should_notify_deferred_opens(struct smbd_server_connection *sconn)
  Set up an oplock break message.
 ****************************************************************************/
 
-static char *new_break_message_smb1(TALLOC_CTX *mem_ctx,
-				   files_struct *fsp, int cmd)
-{
-	char *result = talloc_array(mem_ctx, char, smb_size + 8*2 + 0);
-
-	if (result == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		return NULL;
-	}
+#define SMB1_BREAK_MESSAGE_LENGTH (smb_size + 8*2)
 
+static void new_break_message_smb1(files_struct *fsp, int cmd,
+				   char result[SMB1_BREAK_MESSAGE_LENGTH])
+{
 	memset(result,'\0',smb_size);
 	srv_set_message(result,8,0,true);
 	SCVAL(result,smb_com,SMBlockingX);
@@ -244,7 +239,6 @@ static char *new_break_message_smb1(TALLOC_CTX *mem_ctx,
 	SSVAL(result,smb_vwv2,fsp->fnum);
 	SCVAL(result,smb_vwv3,LOCKING_ANDX_OPLOCK_RELEASE);
 	SCVAL(result,smb_vwv3+1,cmd);
-	return result;
 }
 
 /****************************************************************************
@@ -369,12 +363,9 @@ static void add_oplock_timeout_handler(files_struct *fsp)
 
 static void send_break_message_smb1(files_struct *fsp, int level)
 {
-	char *break_msg = new_break_message_smb1(talloc_tos(),
-					fsp,
-					level);
-	if (break_msg == NULL) {
-		exit_server("Could not talloc break_msg\n");
-	}
+	char break_msg[SMB1_BREAK_MESSAGE_LENGTH];
+
+	new_break_message_smb1(fsp, level, break_msg);
 
 	show_msg(break_msg);
 	if (!srv_send_smb(fsp->conn->sconn,
@@ -384,8 +375,6 @@ static void send_break_message_smb1(files_struct *fsp, int level)
 		exit_server_cleanly("send_break_message_smb1: "
 			"srv_send_smb failed.");
 	}
-
-	TALLOC_FREE(break_msg);
 }
 
 static void break_level2_to_none_async(files_struct *fsp)
@@ -632,7 +621,9 @@ struct break_to_none_state {
 	struct smbd_server_connection *sconn;
 	struct file_id id;
 };
-static void do_break_to_none(struct tevent_req *req);
+static void do_break_to_none(struct tevent_context *ctx,
+			     struct tevent_immediate *im,
+			     void *private_data);
 
 /****************************************************************************
  This function is called on any file modification or lock request. If a file
@@ -644,7 +635,7 @@ static void contend_level2_oplocks_begin_default(files_struct *fsp,
 					      enum level2_contention_type type)
 {
 	struct smbd_server_connection *sconn = fsp->conn->sconn;
-	struct tevent_req *req;
+	struct tevent_immediate *im;
 	struct break_to_none_state *state;
 
 	/*
@@ -673,31 +664,25 @@ static void contend_level2_oplocks_begin_default(files_struct *fsp,
 	state->sconn = sconn;
 	state->id = fsp->file_id;
 
-	req = tevent_wakeup_send(state, sconn->ev_ctx, timeval_set(0, 0));
-	if (req == NULL) {
-		DEBUG(1, ("tevent_wakeup_send failed\n"));
+	im = tevent_create_immediate(state);
+	if (im == NULL) {
+		DEBUG(1, ("tevent_create_immediate failed\n"));
 		TALLOC_FREE(state);
 		return;
 	}
-	tevent_req_set_callback(req, do_break_to_none, state);
-	return;
+	tevent_schedule_immediate(im, sconn->ev_ctx, do_break_to_none, state);
 }
 
-static void do_break_to_none(struct tevent_req *req)
+static void do_break_to_none(struct tevent_context *ctx,
+			     struct tevent_immediate *im,
+			     void *private_data)
 {
-	struct break_to_none_state *state = tevent_req_callback_data(
-		req, struct break_to_none_state);
+	struct break_to_none_state *state = talloc_get_type_abort(
+		private_data, struct break_to_none_state);
 	struct server_id self = messaging_server_id(state->sconn->msg_ctx);
-	bool ret;
 	int i;
 	struct share_mode_lock *lck;
 
-	ret = tevent_wakeup_recv(req);
-	TALLOC_FREE(req);
-	if (!ret) {
-		DEBUG(1, ("tevent_wakeup_recv failed\n"));
-		goto done;
-	}
 	lck = get_existing_share_mode_lock(talloc_tos(), state->id);
 	if (lck == NULL) {
 		DEBUG(1, ("release_level_2_oplocks_on_change: failed to lock "


-- 
Samba Shared Repository


More information about the samba-cvs mailing list