[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Fri Jun 4 12:38:37 MDT 2010


The branch, master has been updated
       via  e0acee4... Change smbd_aio_complete_mid() -> smbd_aio_complete_aio_ex(). Simplifies the code and eliminates find_aio_ex().
      from  15f64af... s3-rpc: Create a file with all functions for a internal named pipe.

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


- Log -----------------------------------------------------------------
commit e0acee4919d1f416c98faa1a0ebc779f3716ab70
Author: Jeremy Allison <jra at samba.org>
Date:   Fri Jun 4 11:30:46 2010 -0700

    Change smbd_aio_complete_mid() -> smbd_aio_complete_aio_ex(). Simplifies
    the code and eliminates find_aio_ex().
    
    Jeremy.

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

Summary of changes:
 source3/include/proto.h        |    2 +-
 source3/include/smb.h          |    3 +++
 source3/modules/vfs_aio_fork.c |    9 ++-------
 source3/smbd/aio.c             |   36 ++++--------------------------------
 4 files changed, 10 insertions(+), 40 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index 884ce3f..41ab440 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5321,7 +5321,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(uint64_t mid);
+void smbd_aio_complete_aio_ex(struct aio_extra *aio_ex);
 
 /* The following definitions come from smbd/blocking.c  */
 
diff --git a/source3/include/smb.h b/source3/include/smb.h
index d20a04e..877588a 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -1963,4 +1963,7 @@ struct deferred_open_record;
 #define CSC_POLICY_PROGRAMS 2
 #define CSC_POLICY_DISABLE 3
 
+/* Used inside aio code. */
+struct aio_extra;
+
 #endif /* _SMB_H */
diff --git a/source3/modules/vfs_aio_fork.c b/source3/modules/vfs_aio_fork.c
index 8fd8936..38a1c21 100644
--- a/source3/modules/vfs_aio_fork.c
+++ b/source3/modules/vfs_aio_fork.c
@@ -382,8 +382,8 @@ static void handle_aio_completion(struct event_context *event_ctx,
 				  struct fd_event *event, uint16 flags,
 				  void *p)
 {
+	struct aio_extra *aio_ex = NULL;
 	struct aio_child *child = (struct aio_child *)p;
-	uint64_t mid;
 
 	DEBUG(10, ("handle_aio_completion called with flags=%d\n", flags));
 
@@ -411,12 +411,7 @@ static void handle_aio_completion(struct event_context *event_ctx,
 		       child->retval.size);
 	}
 
-	/* 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));
-
-	smbd_aio_complete_mid(mid);
+	smbd_aio_complete_aio_ex(aio_ex);
 }
 
 static int aio_child_destructor(struct aio_child *child)
diff --git a/source3/smbd/aio.c b/source3/smbd/aio.c
index 8cc26f1..c7a70b3 100644
--- a/source3/smbd/aio.c
+++ b/source3/smbd/aio.c
@@ -62,7 +62,7 @@ static void smbd_aio_signal_handler(struct tevent_context *ev_ctx,
 	struct aio_extra *aio_ex = (struct aio_extra *)
 				info->si_value.sival_ptr;
 
-	smbd_aio_complete_mid(aio_ex->req->mid);
+	smbd_aio_complete_aio_ex(aio_ex);
 }
 
 
@@ -123,26 +123,6 @@ 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(uint64_t mid)
-{
-	struct aio_extra *p;
-
-	for( p = aio_list_head; p; p = p->next) {
-		if (mid == p->req->mid) {
-			return p;
-		}
-	}
-	return NULL;
-}
-
-/****************************************************************************
- We can have these many aio buffers in flight.
-*****************************************************************************/
-
-/****************************************************************************
  Set up an aio request from a SMBreadX call.
 *****************************************************************************/
 
@@ -577,23 +557,15 @@ static bool handle_aio_completed(struct aio_extra *aio_ex, int *perr)
  Handle any aio completion inline.
 *****************************************************************************/
 
-void smbd_aio_complete_mid(uint64_t mid)
+void smbd_aio_complete_aio_ex(struct aio_extra *aio_ex)
 {
 	files_struct *fsp = NULL;
-	struct aio_extra *aio_ex = find_aio_ex(mid);
 	int ret = 0;
 
 	outstanding_aio_calls--;
 
 	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 %llu.\n",
-			(unsigned long long)mid));
-		return;
-	}
+		(unsigned long long)aio_ex->req->mid));
 
 	fsp = aio_ex->fsp;
 	if (fsp == NULL) {
@@ -601,7 +573,7 @@ void smbd_aio_complete_mid(uint64_t mid)
 		 * ignore. */
 		DEBUG( 3,( "smbd_aio_complete_mid: file closed whilst "
 			"aio outstanding (mid[%llu]).\n",
-			(unsigned long long)mid));
+			(unsigned long long)aio_ex->req->mid));
 		return;
 	}
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list