[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