The branch, master has been updated
       via  27aece7... s3: Actually use the usecs in aio_fork_suspend
       via  1946beb... s3: Fix an uninitialized variable
       via  55512f4... s3: Work better without the aio sighandler
       via  b1717ac... s3: Fix some nonempty blank lines
       via  7ac5828... s3: Remove a direct use of procid_self()
      from  898fd58... s3-rpc_client: Fixed a segfault in 
rpccli_samr_chng_pswd_auth_crap().

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


- Log -----------------------------------------------------------------
commit 27aece72004a84a6e0b2e00987d8a362e307d1d8
Author: Volker Lendecke <[email protected]>
Date:   Sun Jul 18 17:12:30 2010 +0200

    s3: Actually use the usecs in aio_fork_suspend
    
    Jeremy, please check!

commit 1946beb679c7de75b142b30d84b5e4bf12c7e6bd
Author: Volker Lendecke <[email protected]>
Date:   Sun Jul 18 17:12:11 2010 +0200

    s3: Fix an uninitialized variable

commit 55512f479172047ae7f69604c23fffecf66de8c4
Author: Volker Lendecke <[email protected]>
Date:   Sun Jul 18 14:40:43 2010 +0200

    s3: Work better without the aio sighandler
    
    Refuse async I/O if we can't set up the signal handler

commit b1717ac92edbc08e1f4cd2a38dd9f60be8492469
Author: Volker Lendecke <[email protected]>
Date:   Sun Jul 18 13:39:51 2010 +0200

    s3: Fix some nonempty blank lines

commit 7ac58281aeebe4be282ca719ba1da2f821e521a5
Author: Volker Lendecke <[email protected]>
Date:   Sat Jul 17 23:16:26 2010 +0200

    s3: Remove a direct use of procid_self()

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

Summary of changes:
 source3/modules/vfs_aio_fork.c   |    5 +++--
 source3/smbd/aio.c               |   29 ++++++++++++++++++++++-------
 source3/utils/net_dns.c          |   10 ++++------
 source3/winbindd/winbindd_dual.c |    8 +++++---
 4 files changed, 34 insertions(+), 18 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_aio_fork.c b/source3/modules/vfs_aio_fork.c
index b43aad2..02b1394 100644
--- a/source3/modules/vfs_aio_fork.c
+++ b/source3/modules/vfs_aio_fork.c
@@ -765,10 +765,11 @@ static int aio_fork_suspend(struct vfs_handle_struct 
*handle,
        }
 
        if (timeout) {
-               struct timeval tv;
+               struct timeval tv = convert_timespec_to_timeval(*timeout);
                struct tevent_timer *te = tevent_add_timer(ev,
                                                frame,
-                                               
timeval_current_ofs(tv.tv_sec,0),
+                                               timeval_current_ofs(tv.tv_sec,
+                                                                   tv.tv_usec),
                                                aio_fork_suspend_timed_out,
                                                &timed_out);
                if (!te) {
diff --git a/source3/smbd/aio.c b/source3/smbd/aio.c
index a5a0e44..dbce120 100644
--- a/source3/smbd/aio.c
+++ b/source3/smbd/aio.c
@@ -67,11 +67,17 @@ static void smbd_aio_signal_handler(struct tevent_context 
*ev_ctx,
 }
 
 
-static void initialize_async_io_handler(void)
+static bool initialize_async_io_handler(void)
 {
+       static bool tried_signal_setup = false;
+
        if (aio_signal_event) {
-               return;
+               return true;
+       }
+       if (tried_signal_setup) {
+               return false;
        }
+       tried_signal_setup = true;
 
        aio_signal_event = tevent_add_signal(smbd_event_context(),
                                             smbd_event_context(),
@@ -79,7 +85,8 @@ static void initialize_async_io_handler(void)
                                             smbd_aio_signal_handler,
                                             NULL);
        if (!aio_signal_event) {
-               exit_server("Failed to setup RT_SIGNAL_AIO handler");
+               DEBUG(10, ("Failed to setup RT_SIGNAL_AIO handler\n"));
+               return false;
        }
 
        /* tevent supports 100 signal with SA_SIGINFO */
@@ -145,7 +152,9 @@ NTSTATUS schedule_aio_read_and_X(connection_struct *conn,
        int ret;
 
        /* Ensure aio is initialized. */
-       initialize_async_io_handler();
+       if (!initialize_async_io_handler()) {
+               return NT_STATUS_RETRY;
+       }
 
        if (fsp->base_fsp != NULL) {
                /* No AIO on streams yet */
@@ -250,7 +259,9 @@ NTSTATUS schedule_aio_write_and_X(connection_struct *conn,
        int ret;
 
        /* Ensure aio is initialized. */
-       initialize_async_io_handler();
+       if (!initialize_async_io_handler()) {
+               return NT_STATUS_RETRY;
+       }
 
        if (fsp->base_fsp != NULL) {
                /* No AIO on streams yet */
@@ -382,7 +393,9 @@ NTSTATUS schedule_smb2_aio_read(connection_struct *conn,
        int ret;
 
        /* Ensure aio is initialized. */
-       initialize_async_io_handler();
+       if (!initialize_async_io_handler()) {
+               return NT_STATUS_RETRY;
+       }
 
        if (fsp->base_fsp != NULL) {
                /* No AIO on streams yet */
@@ -478,7 +491,9 @@ NTSTATUS schedule_aio_smb2_write(connection_struct *conn,
        int ret;
 
        /* Ensure aio is initialized. */
-       initialize_async_io_handler();
+       if (!initialize_async_io_handler()) {
+               return NT_STATUS_RETRY;
+       }
 
        if (fsp->base_fsp != NULL) {
                /* No AIO on streams yet */
diff --git a/source3/utils/net_dns.c b/source3/utils/net_dns.c
index f4ad6f7..61cb89d 100644
--- a/source3/utils/net_dns.c
+++ b/source3/utils/net_dns.c
@@ -1,4 +1,3 @@
-
 /* 
    Samba Unix/Linux Dynamic DNS Update
    net ads commands
@@ -10,12 +9,12 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  
 */
@@ -55,7 +54,7 @@ DNS_ERROR DoDNSUpdate(char *pszServerName,
        if (!(mem_ctx = talloc_init("DoDNSUpdate"))) {
                return ERROR_DNS_NO_MEMORY;
        }
-               
+
        err = dns_open_connection( pszServerName, DNS_TCP, mem_ctx, &conn );
        if (!ERR_DNS_IS_OK(err)) {
                goto error;
@@ -114,10 +113,9 @@ DNS_ERROR DoDNSUpdate(char *pszServerName,
                                                     keyname, &gss_context, 
                                                     DNS_SRV_WIN2000 );
                }
-               
+
                if (!ERR_DNS_IS_OK(err))
                        goto error;
-               
 
                err = dns_sign_update(req, gss_context, keyname,
                                      "gss.microsoft.com", time(NULL), 3600);
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index ed8eb13..47348b9 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -1129,9 +1129,11 @@ bool winbindd_reinit_after_fork(const char *logfilename)
        struct winbindd_child *cl;
        NTSTATUS status;
 
-       status = reinit_after_fork(winbind_messaging_context(),
-                                  winbind_event_context(),
-                                  procid_self(), true);
+       status = reinit_after_fork(
+               winbind_messaging_context(),
+               winbind_event_context(),
+               messaging_server_id(winbind_messaging_context()),
+               true);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0,("reinit_after_fork() failed\n"));
                return false;


-- 
Samba Shared Repository

Reply via email to