[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