[SCM] Samba Shared Repository - branch master updated
Stefan Metzmacher
metze at samba.org
Tue Dec 13 14:07:01 MST 2011
The branch, master has been updated
via 9eb3c05 s3:smbd/globals: remove unused extern declarations
via 297f1b1 s3:smbd/server: move smbd_open_socket and smbd_parent_context to the top
via 6630b20 s3:smbd/oplock_onefs: avoid using smbd_messaging_context()
via fcc1f5f s3:smbd/oplock_onefs: pass smbd_server_connection to onefs_oplock_wait_record()
via daa685c s3:vfstest: reload_services() doesn't need a messaging_context
via 290ce33 s3:smbd: pass smbd_server_connection to smbd_setup_sig_hup_handler()
via 8a83464 s3:smbd: pass smbd_server_connection to smbd_setup_sig_term_handler()
via 6fc8dc9 s3:smbd/oplock: pass smbd_server_connection to onefs_init_kernel_oplocks()
via 641a2de s3:smbd/oplock: pass smbd_server_connection to linux_init_kernel_oplocks()
via 47e21bc s3:smbd/oplock: pass smbd_server_connection to irix_init_kernel_oplocks()
via 17ae226 s3:smbd/oplock: pass sconn as private_data to process_open_retry_message()
via 90674f0 s3:smbd/oplock: pass sconn as private_data to process_kernel_oplock_break()
via 7fee41c s3:smbd/oplock: pass sconn as private_data to process_oplock_break_response()
via fb81772 s3:smbd/oplock: pass sconn as private_data to process_oplock_async_level2_break_message()
via da4b503 s3:smbd/oplock: pass sconn as private_data to process_oplock_break_message()
via 21de673 s3:smbd/oplock: pass smbd_server_connection to init_oplocks()
from 5efd7e1 s3: Move can_delete_directory to smbd/, remove shim
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 9eb3c053b843c4615869f774ee68dda73fe62d7d
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 14:48:04 2011 +0100
s3:smbd/globals: remove unused extern declarations
metze
Autobuild-User: Stefan Metzmacher <metze at samba.org>
Autobuild-Date: Tue Dec 13 22:06:02 CET 2011 on sn-devel-104
commit 297f1b1f126163f890b926aa4d87dff886e6ecb8
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 14:38:55 2011 +0100
s3:smbd/server: move smbd_open_socket and smbd_parent_context to the top
metze
commit 6630b20046915d883a1cc1a1e8c8272756c60e6a
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 14:24:58 2011 +0100
s3:smbd/oplock_onefs: avoid using smbd_messaging_context()
metze
commit fcc1f5f7f7a5a1f51657c8da90f45142359a01bb
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 14:24:58 2011 +0100
s3:smbd/oplock_onefs: pass smbd_server_connection to onefs_oplock_wait_record()
metze
commit daa685c00847e28d3fd9e594af9afdfc5d962308
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 14:16:21 2011 +0100
s3:vfstest: reload_services() doesn't need a messaging_context
It's only used to get the global smbd_server_connection,
which is used in conn_snum_used() via lp_killunused().
But there we don't need it, as we don't have any tree connects
at startup time.
metze
commit 290ce331b6e5995095a1237277a2a6a7272986ce
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:55:02 2011 +0100
s3:smbd: pass smbd_server_connection to smbd_setup_sig_hup_handler()
metze
commit 8a83464216156204c75c44e90fae55dc34cb389f
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:55:02 2011 +0100
s3:smbd: pass smbd_server_connection to smbd_setup_sig_term_handler()
metze
commit 6fc8dc98ab0de1f2de7d086eee299d89f0527b6e
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:38:41 2011 +0100
s3:smbd/oplock: pass smbd_server_connection to onefs_init_kernel_oplocks()
metze
commit 641a2dea812faf628146145e3d04e411e7d19485
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:38:41 2011 +0100
s3:smbd/oplock: pass smbd_server_connection to linux_init_kernel_oplocks()
metze
commit 47e21bcc43a362696c775bf5467e3bf711a99c77
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:38:41 2011 +0100
s3:smbd/oplock: pass smbd_server_connection to irix_init_kernel_oplocks()
metze
commit 17ae2267e346920445ea67253f0a9d82fb3e0e35
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:18:47 2011 +0100
s3:smbd/oplock: pass sconn as private_data to process_open_retry_message()
metze
commit 90674f0fce81f3fea1d15a9c2588427dd5e4cd9c
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:18:47 2011 +0100
s3:smbd/oplock: pass sconn as private_data to process_kernel_oplock_break()
metze
commit 7fee41cd39afff925ce9af7793736e2444572b58
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:18:47 2011 +0100
s3:smbd/oplock: pass sconn as private_data to process_oplock_break_response()
metze
commit fb81772eed3c653dcd567dcb2e97894bd3c6f84a
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:18:47 2011 +0100
s3:smbd/oplock: pass sconn as private_data to process_oplock_async_level2_break_message()
metze
commit da4b503581be43558257940d0a63931920966868
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:18:47 2011 +0100
s3:smbd/oplock: pass sconn as private_data to process_oplock_break_message()
metze
commit 21de67357509f18817dd202431017a7aa15e8495
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Dec 13 13:13:53 2011 +0100
s3:smbd/oplock: pass smbd_server_connection to init_oplocks()
metze
-----------------------------------------------------------------------
Summary of changes:
source3/modules/onefs_open.c | 3 +-
source3/smbd/globals.h | 2 -
source3/smbd/oplock.c | 82 ++++++++++++++++++++++-------------------
source3/smbd/oplock_irix.c | 12 ++++---
source3/smbd/oplock_linux.c | 17 ++++++---
source3/smbd/oplock_onefs.c | 15 +++++---
source3/smbd/process.c | 31 ++++++++--------
source3/smbd/proto.h | 13 +++----
source3/smbd/server.c | 43 +++++++++++-----------
source3/torture/vfstest.c | 2 +-
10 files changed, 119 insertions(+), 101 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/modules/onefs_open.c b/source3/modules/onefs_open.c
index d7b2af3..a77d6f3 100644
--- a/source3/modules/onefs_open.c
+++ b/source3/modules/onefs_open.c
@@ -871,7 +871,8 @@ NTSTATUS onefs_open_file_ntcreate(connection_struct *conn,
*/
if (req) {
SMB_ASSERT(fsp_data);
- oplock_callback_id = onefs_oplock_wait_record(req->mid);
+ oplock_callback_id = onefs_oplock_wait_record(req->sconn,
+ req->mid);
if (oplock_callback_id == 0) {
return NT_STATUS_NO_MEMORY;
}
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index 0e4e9e8..559f8fb 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -114,8 +114,6 @@ extern int32_t level_II_oplocks_open;
extern struct kernel_oplocks *koplocks;
extern int am_parent;
-extern struct event_context *smbd_event_ctx;
-extern struct messaging_context *smbd_msg_ctx;
extern struct memcache *smbd_memcache_ctx;
extern bool exit_firsttime;
struct child_pid;
diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c
index 48e8bb5..a414b72 100644
--- a/source3/smbd/oplock.c
+++ b/source3/smbd/oplock.c
@@ -436,18 +436,18 @@ void process_oplock_async_level2_break_message(struct messaging_context *msg_ctx
struct server_id src,
DATA_BLOB *data)
{
- struct smbd_server_connection *sconn;
struct share_mode_entry msg;
files_struct *fsp;
+ struct smbd_server_connection *sconn =
+ talloc_get_type(private_data,
+ struct smbd_server_connection);
- if (data->data == NULL) {
- DEBUG(0, ("Got NULL buffer\n"));
+ if (sconn == NULL) {
return;
}
- sconn = msg_ctx_to_sconn(msg_ctx);
- if (sconn == NULL) {
- DEBUG(1, ("could not find sconn\n"));
+ if (data->data == NULL) {
+ DEBUG(0, ("Got NULL buffer\n"));
return;
}
@@ -487,19 +487,19 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
struct server_id src,
DATA_BLOB *data)
{
- struct smbd_server_connection *sconn;
struct share_mode_entry msg;
files_struct *fsp;
bool break_to_level2 = False;
+ struct smbd_server_connection *sconn =
+ talloc_get_type(private_data,
+ struct smbd_server_connection);
- if (data->data == NULL) {
- DEBUG(0, ("Got NULL buffer\n"));
+ if (sconn == NULL) {
return;
}
- sconn = msg_ctx_to_sconn(msg_ctx);
- if (sconn == NULL) {
- DEBUG(1, ("could not find sconn\n"));
+ if (data->data == NULL) {
+ DEBUG(0, ("Got NULL buffer\n"));
return;
}
@@ -594,10 +594,16 @@ static void process_kernel_oplock_break(struct messaging_context *msg_ctx,
struct server_id src,
DATA_BLOB *data)
{
- struct smbd_server_connection *sconn;
struct file_id id;
unsigned long file_id;
files_struct *fsp;
+ struct smbd_server_connection *sconn =
+ talloc_get_type(private_data,
+ struct smbd_server_connection);
+
+ if (sconn == NULL) {
+ return;
+ }
if (data->data == NULL) {
DEBUG(0, ("Got NULL buffer\n"));
@@ -609,12 +615,6 @@ static void process_kernel_oplock_break(struct messaging_context *msg_ctx,
return;
}
- sconn = msg_ctx_to_sconn(msg_ctx);
- if (sconn == NULL) {
- DEBUG(1, ("could not find sconn\n"));
- return;
- }
-
/* Pull the data from the message. */
pull_file_id_24((char *)data->data, &id);
file_id = (unsigned long)IVAL(data->data, 24);
@@ -691,7 +691,13 @@ static void process_oplock_break_response(struct messaging_context *msg_ctx,
DATA_BLOB *data)
{
struct share_mode_entry msg;
- struct smbd_server_connection *sconn;
+ struct smbd_server_connection *sconn =
+ talloc_get_type(private_data,
+ struct smbd_server_connection);
+
+ if (sconn == NULL) {
+ return;
+ }
if (data->data == NULL) {
DEBUG(0, ("Got NULL buffer\n"));
@@ -713,10 +719,7 @@ static void process_oplock_break_response(struct messaging_context *msg_ctx,
(unsigned long long)msg.share_file_id,
(unsigned long long)msg.op_mid));
- sconn = msg_ctx_to_sconn(msg_ctx);
- if (sconn != NULL) {
- schedule_deferred_open_message_smb(sconn, msg.op_mid);
- }
+ schedule_deferred_open_message_smb(sconn, msg.op_mid);
}
static void process_open_retry_message(struct messaging_context *msg_ctx,
@@ -726,7 +729,13 @@ static void process_open_retry_message(struct messaging_context *msg_ctx,
DATA_BLOB *data)
{
struct share_mode_entry msg;
- struct smbd_server_connection *sconn;
+ struct smbd_server_connection *sconn =
+ talloc_get_type(private_data,
+ struct smbd_server_connection);
+
+ if (sconn == NULL) {
+ return;
+ }
if (data->data == NULL) {
DEBUG(0, ("Got NULL buffer\n"));
@@ -745,10 +754,7 @@ static void process_open_retry_message(struct messaging_context *msg_ctx,
server_id_str(talloc_tos(), &src), file_id_string_tos(&msg.id),
(unsigned long long)msg.op_mid));
- sconn = msg_ctx_to_sconn(msg_ctx);
- if (sconn != NULL) {
- schedule_deferred_open_message_smb(sconn, msg.op_mid);
- }
+ schedule_deferred_open_message_smb(sconn, msg.op_mid);
}
/****************************************************************************
@@ -930,29 +936,29 @@ void message_to_share_mode_entry(struct share_mode_entry *e, char *msg)
Setup oplocks for this process.
****************************************************************************/
-bool init_oplocks(struct messaging_context *msg_ctx)
+bool init_oplocks(struct smbd_server_connection *sconn)
{
DEBUG(3,("init_oplocks: initializing messages.\n"));
- messaging_register(msg_ctx, NULL, MSG_SMB_BREAK_REQUEST,
+ messaging_register(sconn->msg_ctx, sconn, MSG_SMB_BREAK_REQUEST,
process_oplock_break_message);
- messaging_register(msg_ctx, NULL, MSG_SMB_ASYNC_LEVEL2_BREAK,
+ messaging_register(sconn->msg_ctx, sconn, MSG_SMB_ASYNC_LEVEL2_BREAK,
process_oplock_async_level2_break_message);
- messaging_register(msg_ctx, NULL, MSG_SMB_BREAK_RESPONSE,
+ messaging_register(sconn->msg_ctx, sconn, MSG_SMB_BREAK_RESPONSE,
process_oplock_break_response);
- messaging_register(msg_ctx, NULL, MSG_SMB_KERNEL_BREAK,
+ messaging_register(sconn->msg_ctx, sconn, MSG_SMB_KERNEL_BREAK,
process_kernel_oplock_break);
- messaging_register(msg_ctx, NULL, MSG_SMB_OPEN_RETRY,
+ messaging_register(sconn->msg_ctx, sconn, MSG_SMB_OPEN_RETRY,
process_open_retry_message);
if (lp_kernel_oplocks()) {
#if HAVE_KERNEL_OPLOCKS_IRIX
- koplocks = irix_init_kernel_oplocks(NULL);
+ koplocks = irix_init_kernel_oplocks(sconn);
#elif HAVE_KERNEL_OPLOCKS_LINUX
- koplocks = linux_init_kernel_oplocks(NULL);
+ koplocks = linux_init_kernel_oplocks(sconn);
#elif HAVE_ONEFS
#error Isilon, please check if the NULL context is okay here. Thanks!
- koplocks = onefs_init_kernel_oplocks(NULL);
+ koplocks = onefs_init_kernel_oplocks(sconn);
#endif
}
diff --git a/source3/smbd/oplock_irix.c b/source3/smbd/oplock_irix.c
index ef737ef..0bc964f 100644
--- a/source3/smbd/oplock_irix.c
+++ b/source3/smbd/oplock_irix.c
@@ -27,6 +27,7 @@
struct irix_oplocks_context {
struct kernel_oplocks *ctx;
+ struct smbd_server_connection *sconn;
int write_fd;
int read_fd;
struct fd_event *read_fde;
@@ -184,7 +185,7 @@ static files_struct *irix_oplock_receive_message(struct kernel_oplocks *_ctx)
fileid = file_id_create_dev((SMB_DEV_T)os.os_dev,
(SMB_INO_T)os.os_ino);
- if ((fsp = file_find_di_first(smbd_server_conn, fileid)) == NULL) {
+ if ((fsp = file_find_di_first(ctx->sconn, fileid)) == NULL) {
DEBUG(0,("irix_oplock_receive_message: unable to find open "
"file with dev = %x, inode = %.0f\n",
(unsigned int)os.os_dev, (double)os.os_ino ));
@@ -285,7 +286,7 @@ static void irix_oplocks_read_fde_handler(struct event_context *ev,
files_struct *fsp;
fsp = irix_oplock_receive_message(ctx->ctx);
- break_kernel_oplock(fsp->conn->sconn->msg_ctx, fsp);
+ break_kernel_oplock(ctx->sconn->msg_ctx, fsp);
}
/****************************************************************************
@@ -299,7 +300,7 @@ static const struct kernel_oplocks_ops irix_koplocks = {
.contend_level2_oplocks_end = NULL,
};
-struct kernel_oplocks *irix_init_kernel_oplocks(TALLOC_CTX *mem_ctx)
+struct kernel_oplocks *irix_init_kernel_oplocks(struct smbd_server_connection *sconn)
{
struct kernel_oplocks *_ctx;
struct irix_oplocks_context *ctx;
@@ -308,7 +309,7 @@ struct kernel_oplocks *irix_init_kernel_oplocks(TALLOC_CTX *mem_ctx)
if (!irix_oplocks_available())
return NULL;
- _ctx = talloc_zero(mem_ctx, struct kernel_oplocks);
+ _ctx = talloc_zero(sconn, struct kernel_oplocks);
if (!_ctx) {
return NULL;
}
@@ -321,6 +322,7 @@ struct kernel_oplocks *irix_init_kernel_oplocks(TALLOC_CTX *mem_ctx)
_ctx->ops = &irix_koplocks;
_ctx->private_data = ctx;
ctx->ctx = _ctx;
+ ctx->sconn = sconn;
if(pipe(pfd) != 0) {
talloc_free(_ctx);
@@ -332,7 +334,7 @@ struct kernel_oplocks *irix_init_kernel_oplocks(TALLOC_CTX *mem_ctx)
ctx->read_fd = pfd[0];
ctx->write_fd = pfd[1];
- ctx->read_fde = event_add_fd(server_event_context(),
+ ctx->read_fde = event_add_fd(sconn->ev_ctx,
ctx,
ctx->read_fd,
EVENT_FD_READ,
diff --git a/source3/smbd/oplock_linux.c b/source3/smbd/oplock_linux.c
index a455707..f796e8c 100644
--- a/source3/smbd/oplock_linux.c
+++ b/source3/smbd/oplock_linux.c
@@ -95,16 +95,22 @@ static void linux_oplock_signal_handler(struct tevent_context *ev_ctx,
int signum, int count,
void *_info, void *private_data)
{
+ struct kernel_oplocks *ctx =
+ talloc_get_type_abort(private_data,
+ struct kernel_oplocks);
+ struct smbd_server_connection *sconn =
+ talloc_get_type_abort(ctx->private_data,
+ struct smbd_server_connection);
siginfo_t *info = (siginfo_t *)_info;
int fd = info->si_fd;
files_struct *fsp;
- fsp = file_find_fd(smbd_server_conn, fd);
+ fsp = file_find_fd(sconn, fd);
if (fsp == NULL) {
DEBUG(0,("linux_oplock_signal_handler: failed to find fsp for file fd=%d (file was closed ?)\n", fd ));
return;
}
- break_kernel_oplock(fsp->conn->sconn->msg_ctx, fsp);
+ break_kernel_oplock(sconn->msg_ctx, fsp);
}
/****************************************************************************
@@ -192,7 +198,7 @@ static const struct kernel_oplocks_ops linux_koplocks = {
.contend_level2_oplocks_end = NULL,
};
-struct kernel_oplocks *linux_init_kernel_oplocks(TALLOC_CTX *mem_ctx)
+struct kernel_oplocks *linux_init_kernel_oplocks(struct smbd_server_connection *sconn)
{
struct kernel_oplocks *ctx;
struct tevent_signal *se;
@@ -202,15 +208,16 @@ struct kernel_oplocks *linux_init_kernel_oplocks(TALLOC_CTX *mem_ctx)
return NULL;
}
- ctx = talloc_zero(mem_ctx, struct kernel_oplocks);
+ ctx = talloc_zero(sconn, struct kernel_oplocks);
if (!ctx) {
DEBUG(0,("Linux Kernel oplocks talloc_Zero failed\n"));
return NULL;
}
ctx->ops = &linux_koplocks;
+ ctx->private_data = sconn;
- se = tevent_add_signal(server_event_context(),
+ se = tevent_add_signal(sconn->ev_ctx,
ctx,
RT_SIGNAL_LEASE, SA_SIGINFO,
linux_oplock_signal_handler,
diff --git a/source3/smbd/oplock_onefs.c b/source3/smbd/oplock_onefs.c
index 4717b1f..615747e 100644
--- a/source3/smbd/oplock_onefs.c
+++ b/source3/smbd/oplock_onefs.c
@@ -34,6 +34,7 @@
struct onefs_oplocks_context {
struct kernel_oplocks *ctx;
+ struct smbd_server_connection *sconn;
const struct oplocks_event_ops *onefs_ops;
int onefs_event_fd;
struct fd_event *read_fde;
@@ -46,6 +47,7 @@ enum onefs_callback_state {
struct onefs_callback_record {
struct onefs_callback_record *prev, *next;
+ struct smbd_server_connection *sconn;
uint64_t id;
enum onefs_callback_state state;
union {
@@ -197,7 +199,8 @@ void destroy_onefs_callback_record(uint64_t id)
* 2. OPEN_FILE: Once ifs_createfile completes, the callback record is
* transitioned to this state via onefs_set_oplock_callback.
*/
-uint64_t onefs_oplock_wait_record(uint64_t mid)
+uint64_t onefs_oplock_wait_record(struct smbd_server_connection *sconn,
+ uint64_t mid)
{
struct onefs_callback_record *result;
static uint64_t id_generator = 0;
@@ -215,6 +218,7 @@ uint64_t onefs_oplock_wait_record(uint64_t mid)
id_generator += 1;
}
+ result->sconn = sconn;
result->id = id_generator;
result->state = ONEFS_WAITING_FOR_OPLOCK;
@@ -305,7 +309,7 @@ static void oplock_break_to_none_handler(uint64_t id)
init_share_mode_entry(&sme, cb, FORCE_OPLOCK_BREAK_TO_NONE);
share_mode_entry_to_message(msg, &sme);
- messaging_send_buf(smbd_messaging_context(),
+ messaging_send_buf(cb->sconn->msg_ctx,
sme.pid,
MSG_SMB_ASYNC_LEVEL2_BREAK,
(uint8_t *)msg,
@@ -342,7 +346,7 @@ static void oplock_break_to_level_two_handler(uint64_t id)
init_share_mode_entry(&sme, cb, LEVEL_II_OPLOCK);
share_mode_entry_to_message(msg, &sme);
- messaging_send_buf(smbd_messaging_context(),
+ messaging_send_buf(cb->sconn->msg_ctx,
sme.pid,
MSG_SMB_BREAK_REQUEST,
(uint8_t *)msg,
@@ -663,7 +667,7 @@ static const struct oplocks_event_ops onefs_dispatch_ops = {
.semlock_async_failure = semlock_async_failure_handler,
};
-struct kernel_oplocks *onefs_init_kernel_oplocks(TALLOC_CTX *mem_ctx)
+struct kernel_oplocks *onefs_init_kernel_oplocks(struct smbd_server_connection *sconn)
{
struct kernel_oplocks *_ctx = NULL;
struct onefs_oplocks_context *ctx = NULL;
@@ -688,6 +692,7 @@ struct kernel_oplocks *onefs_init_kernel_oplocks(TALLOC_CTX *mem_ctx)
if (!ctx) {
goto err_out;
}
+ ctx->sconn = sconn;
_ctx->ops = &onefs_koplocks_ops;
_ctx->flags = (KOPLOCKS_LEVEL2_SUPPORTED |
@@ -709,7 +714,7 @@ struct kernel_oplocks *onefs_init_kernel_oplocks(TALLOC_CTX *mem_ctx)
DEBUG(10, ("oplock event_fd = %d\n", ctx->onefs_event_fd));
/* Register the oplock event_fd with samba's event system */
- ctx->read_fde = event_add_fd(server_event_context(),
+ ctx->read_fde = event_add_fd(sconn->ev_ctx,
ctx,
ctx->onefs_event_fd,
EVENT_FD_READ,
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index ad5c096..b3e4d0d 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -878,15 +878,15 @@ static void smbd_sig_term_handler(struct tevent_context *ev,
exit_server_cleanly("termination signal");
}
-void smbd_setup_sig_term_handler(void)
+void smbd_setup_sig_term_handler(struct smbd_server_connection *sconn)
{
struct tevent_signal *se;
- se = tevent_add_signal(server_event_context(),
- server_event_context(),
+ se = tevent_add_signal(sconn->ev_ctx,
+ sconn,
SIGTERM, 0,
smbd_sig_term_handler,
- NULL);
+ sconn);
if (!se) {
exit_server("failed to setup SIGTERM handler");
}
@@ -899,23 +899,24 @@ static void smbd_sig_hup_handler(struct tevent_context *ev,
void *siginfo,
void *private_data)
{
- struct messaging_context *msg_ctx = talloc_get_type_abort(
- private_data, struct messaging_context);
+ struct smbd_server_connection *sconn =
+ talloc_get_type_abort(private_data,
+ struct smbd_server_connection);
+
change_to_root_user();
DEBUG(1,("Reloading services after SIGHUP\n"));
- reload_services(msg_ctx, smbd_server_conn->sock, False);
- if (am_parent) {
- printing_subsystem_update(ev, msg_ctx, true);
- }
+ reload_services(sconn->msg_ctx, sconn->sock, false);
}
-void smbd_setup_sig_hup_handler(struct tevent_context *ev,
- struct messaging_context *msg_ctx)
+void smbd_setup_sig_hup_handler(struct smbd_server_connection *sconn)
{
struct tevent_signal *se;
- se = tevent_add_signal(ev, ev, SIGHUP, 0, smbd_sig_hup_handler,
- msg_ctx);
+ se = tevent_add_signal(sconn->ev_ctx,
+ sconn,
+ SIGHUP, 0,
+ smbd_sig_hup_handler,
+ sconn);
if (!se) {
exit_server("failed to setup SIGHUP handler");
}
@@ -3131,7 +3132,7 @@ void smbd_process(struct tevent_context *ev_ctx,
}
/* Setup oplocks */
- if (!init_oplocks(sconn->msg_ctx))
+ if (!init_oplocks(sconn))
exit_server("Failed to init oplocks");
/* register our message handlers */
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index daaa914..0cc6b66 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -669,22 +669,22 @@ void smbd_contend_level2_oplocks_end(files_struct *fsp,
enum level2_contention_type type);
void share_mode_entry_to_message(char *msg, const struct share_mode_entry *e);
void message_to_share_mode_entry(struct share_mode_entry *e, char *msg);
-bool init_oplocks(struct messaging_context *msg_ctx);
+bool init_oplocks(struct smbd_server_connection *sconn);
/* The following definitions come from smbd/oplock_irix.c */
-struct kernel_oplocks *irix_init_kernel_oplocks(TALLOC_CTX *mem_ctx) ;
+struct kernel_oplocks *irix_init_kernel_oplocks(struct smbd_server_connection *sconn);
/* The following definitions come from smbd/oplock_linux.c */
void linux_set_lease_capability(void);
int linux_set_lease_sighandler(int fd);
int linux_setlease(int fd, int leasetype);
-struct kernel_oplocks *linux_init_kernel_oplocks(TALLOC_CTX *mem_ctx) ;
--
Samba Shared Repository
More information about the samba-cvs
mailing list