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 <j...@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