[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Wed Jul 19 09:01:01 UTC 2023


The branch, master has been updated
       via  7c0a1c1e13f s3:winbind: Set/unset the winbind_call_flow callback if log level changes
       via  a1b2f17c6db s3:winbind: Update winbind to tevent 0.15.0 API
       via  5b130e620fa s3:winbind: Add callback winbind_call_flow()
       via  24120728bb2 ldb: call tevent_set_max_debug_level(TEVENT_DEBUG_TRACE) together with ldb_tevent_debug()
       via  0031a102c3d lib/util: call tevent_set_max_debug_level() in samba_tevent_set_debug()
       via  6a80d170bca tevent: version 0.15.0
       via  0ddf8b5645e tevent: add tevent_common_fd_str() helper
       via  2645be60d7a tevent: avoid calling epoll_update_event() again if epoll_check_reopen() already did it
       via  e9d98097346 tevent: let epoll_check_reopen() clear all events before reopening them
       via  3217d5dc1d6 tevent: avoid epoll_check_reopen() overhead unless required
       via  d94b9c81242 tevent: make use of TEVENT_DEBUG() when using TEVENT_DEBUG_TRACE
       via  812313f1c82 tevent: add TEVENT_DEBUG() avoid argument overhead when log is not active...
       via  2c78a4f527e tevent: introduce tevent_set_max_debug_level() (default TEVENT_DEBUG_WARNING)
       via  86140d7c381 tevent: add fd_speed test
       via  d7b29125c01 tevent: Flow: add tevent_thread_call_depth_set_callback()
       via  0c4d6e630f5 tevent: Flow: store cleanup function name in tevent_req
       via  85e43e70b20 tevent: Flow: store cancel function name in tevent_req
       via  5e83691d1ed tevent: Flow: store trigger function name in tevent_queue_entry
       via  deec9994eb8 tevent: Flow: store callback function name in tevent_req
       via  fb3a9cd7329 tevent: Flow: pass function name to tevent_req_create()
       via  1c9e9f46046 tevent: Deprecate some tevent_thread_call_depth_*() functions
       via  e9f38f6e6d8 tevent: Move definition of _DEPRECATED_ to the top of tevent.h
       via  28ddcaf4d8e s3:winbindd: set TEVENT_DEPRECATED as tevent_thread_call_depth_*() api will change soon
       via  c1124ec8e5d tevent: add tevent_dlinklist.h as copy from lib/util/dlinklist.h
       via  e3c77030fee lib/util: dlinklist.h sync with LGPL copy from lib/ldb/include/dlinklist.h
       via  8edb16a3964 ldb: clarify LGPL scope of include/dlinklist.h
       via  18e18006ad0 ldb: remove trailing whitespaces from include/dlinklist.h
       via  a665d44f22c tevent: rely on epoll_create1() for epoll interface
       via  0daa9ebc235 lib:replace: rely on epoll_create1() for epoll interface
       via  b649c7d3c2b tdb: release 1.4.9
       via  791e2817e13 talloc: release 2.4.1
      from  bb6fecd9ac5 netcmd: sites: add sites and subnet list and view commands to manpage

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


- Log -----------------------------------------------------------------
commit 7c0a1c1e13fdd2209d02098e75102f46b7588fd4
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Wed May 3 11:21:11 2023 +0200

    s3:winbind: Set/unset the winbind_call_flow callback if log level changes
    
    Done only for the parent process. Works with 'smbcontrol reload-config'
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
    Autobuild-Date(master): Wed Jul 19 09:00:50 UTC 2023 on atb-devel-224

commit a1b2f17c6db3286cf991ac2ff9f62632ae0660ac
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Tue May 2 21:59:53 2023 +0200

    s3:winbind: Update winbind to tevent 0.15.0 API
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 5b130e620faf0129ae4dbc456788aea693efa11e
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Wed May 3 11:19:45 2023 +0200

    s3:winbind: Add callback winbind_call_flow()
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 24120728bb26ae814292e2e8c06eaa4707bb18b6
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 31 16:25:40 2023 +0100

    ldb: call tevent_set_max_debug_level(TEVENT_DEBUG_TRACE) together with ldb_tevent_debug()
    
    This means ldb_tevent_debug() is only called for TEVENT_DEBUG_TRACE.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 0031a102c3d7b21a4fe51198db9362251970a83d
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 31 16:25:40 2023 +0100

    lib/util: call tevent_set_max_debug_level() in samba_tevent_set_debug()
    
    This means samba_tevent_debug() is only called when needed.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 6a80d170bca0c938f78ab12e37481b52792a9d83
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 18 15:41:37 2023 +0100

    tevent: version 0.15.0
    
    - remove py2 ifdefs
    - python: Safely clear structure members
    - the tevent_thread_call_depth API is updated
      in order to allow better tracing.
    - add tevent_set_max_debug_level() only and don't
      pass TEVENT_DEBUG_TRACE to tevent_debug() callbacks by default.
    - Spelling fixes
    - Make use of epoll_create1() for epoll backend
    - Optimize overhead in the epoll backend
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 0ddf8b5645e4f944aa9db209ed0813e94623736a
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Nov 11 22:25:34 2022 +0100

    tevent: add tevent_common_fd_str() helper
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 2645be60d7a0d57d9e688b3a04fae3bb1f3f14d7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 11 08:21:47 2023 +0100

    tevent: avoid calling epoll_update_event() again if epoll_check_reopen() already did it
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit e9d980973468a6d03cbe31e603440c475a22e3d7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 11 08:21:47 2023 +0100

    tevent: let epoll_check_reopen() clear all events before reopening them
    
    This is clearer for multiplexed fdes as it means both sides are
    already cleared before we call epoll_update_event() again.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 3217d5dc1d631d19392576436eb006e52c816a1f
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Apr 20 12:59:33 2023 +0000

    tevent: avoid epoll_check_reopen() overhead unless required
    
    The preparation, function call and cleanup for epoll_check_reopen()
    is quite some overhead and not needed most of the time!
    
    So check the pid in the caller avoids most of it.
    
    Review with: git show -w
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit d94b9c8124225afd37deae32bf403c19ade1d109
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Nov 11 22:25:34 2022 +0100

    tevent: make use of TEVENT_DEBUG() when using TEVENT_DEBUG_TRACE
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 812313f1c82d3679bf5f5e22bb2b0268e9bbb152
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Nov 11 15:05:53 2022 +0100

    tevent: add TEVENT_DEBUG() avoid argument overhead when log is not active...
    
    It can be very costly to calculate the arguments passed to
    tevent_debug(), just to drop the message within tevent_debug()
    or the callback function.
    
    So we add a way to avoid the overhead, it will be used in the
    next commits.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 2c78a4f527eecba89973bfdb5a6d354d31e847d5
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Nov 11 15:05:53 2022 +0100

    tevent: introduce tevent_set_max_debug_level() (default TEVENT_DEBUG_WARNING)
    
    Allow an application to decide which log levels it wants to get
    in the callback function passed to tevent_set_debug().
    
    By default TEVENT_DEBUG_WARNING is the maximal reported level
    and TEVENT_DEBUG_TRACE message no longer reach the callback function
    by default.
    
    It seems Samba is the only consumer of tevent_set_debug(), so it
    should not be a huge problem, as Samba only reports TEVENT_DEBUG_TRACE
    message with log level 50 anyway. And future Samba versions will
    call tevent_set_max_debug_level() if needed.
    
    Note the change to tevent-0.14.1.sigs will be reverted
    with the release of tevent 0.15.0.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 86140d7c38166bcf2f4becc618e3c993081e3ba1
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Jan 27 12:12:45 2023 +0100

    tevent: add fd_speed test
    
    This is similar to the "context" test, but without signal handlers.
    
    It also creates a constant load instead of being time limited,
    which makes it useful to analyse using callgrind and other tools.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit d7b29125c01dd2a152d83ab0dd9418bbc989fa87
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Tue May 2 21:57:16 2023 +0200

    tevent: Flow: add tevent_thread_call_depth_set_callback()
    
    Note the tevent-0.14.1.sigs changes will be reverted in
    the 'tevent 0.15.0' commit.
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 0c4d6e630f5dac681e49f776ca99e3eff13be6b7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue May 23 06:39:06 2023 +0200

    tevent: Flow: store cleanup function name in tevent_req
    
    Note the tevent-0.14.1.sigs changes will be reverted in
    the 'tevent 0.15.0' commit.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Pavel Filipenský <pfilipensky at samba.org>

commit 85e43e70b200d25e0b4afc0f9611ddae014af5cc
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue May 23 06:38:27 2023 +0200

    tevent: Flow: store cancel function name in tevent_req
    
    Note the tevent-0.14.1.sigs changes will be reverted in
    the 'tevent 0.15.0' commit.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Pavel Filipenský <pfilipensky at samba.org>

commit 5e83691d1edb97805c1a270f4807aa0a8700d166
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Mon May 15 12:57:09 2023 +0200

    tevent: Flow: store trigger function name in tevent_queue_entry
    
    Note the tevent-0.14.1.sigs changes will be reverted in
    the 'tevent 0.15.0' commit.
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit deec9994eb873ad42932645361dd3eedcc351a09
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Mon Apr 24 15:04:06 2023 +0200

    tevent: Flow: store callback function name in tevent_req
    
    Note the tevent-0.14.1.sigs changes will be reverted in
    the 'tevent 0.15.0' commit.
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit fb3a9cd7329a3b1952846ef5433f59b66b017b2d
Author: Pavel Filipenský <pfilipen at redhat.com>
Date:   Sat Jun 18 10:57:11 2022 +0200

    tevent: Flow: pass function name to tevent_req_create()
    
    Note the tevent-0.14.1.sigs changes will be reverted in
    the 'tevent 0.15.0' commit.
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 1c9e9f46046069a98fd58e4d3af6868b0cc45308
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Fri Apr 28 20:45:20 2023 +0200

    tevent: Deprecate some tevent_thread_call_depth_*() functions
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit e9f38f6e6d858d3efe8610a29723f50b0c72a173
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Fri Apr 28 20:13:29 2023 +0200

    tevent: Move definition of _DEPRECATED_ to the top of tevent.h
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 28ddcaf4d8ebb7a4e3498518580ff71662d3cee0
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri May 19 11:16:49 2023 +0200

    s3:winbindd: set TEVENT_DEPRECATED as tevent_thread_call_depth_*() api will change soon
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Pavel Filipenský <pfilipensky at samba.org>

commit c1124ec8e5d2fb38b9011b72118bb981904a011d
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Apr 24 12:39:17 2023 +0200

    tevent: add tevent_dlinklist.h as copy from lib/util/dlinklist.h
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit e3c77030fee120b9b73d971d39eca142920f6b49
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Apr 20 14:35:25 2023 +0000

    lib/util: dlinklist.h sync with LGPL copy from lib/ldb/include/dlinklist.h
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 8edb16a3964e3a699897e2b4c84c5fad1f58b015
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jan 30 16:10:07 2023 +0100

    ldb: clarify LGPL scope of include/dlinklist.h
    
    Removing the explicit notice about ldb in order to
    have the same content in all copies of dlinklist.h
    in the next commits.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 18e18006ad03e6dc1212b167e948836721b435c3
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jan 30 16:10:07 2023 +0100

    ldb: remove trailing whitespaces from include/dlinklist.h
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit a665d44f22c1fea4fd9104e4e3e45ee9b6cd68cd
Author: Dmitry Antipov <dantipov at cloudlinux.com>
Date:   Fri Apr 7 14:47:15 2023 +0300

    tevent: rely on epoll_create1() for epoll interface
    
    Prefer epoll_create1(2) over epoll_create(2) and
    always require the former to use epoll(7) interface,
    thus saving extra fcntl(2) call to set FD_CLOEXEC.
    
    Signed-off-by: Dmitry Antipov <dantipov at cloudlinux.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 0daa9ebc2354d65a9d77a6a7d1616ef357056fd2
Author: Dmitry Antipov <dantipov at cloudlinux.com>
Date:   Fri Apr 7 14:42:10 2023 +0300

    lib:replace: rely on epoll_create1() for epoll interface
    
    Prefer epoll_create1(2) over epoll_create(2) and
    always require the former to use epoll(7) interface.
    
    Signed-off-by: Dmitry Antipov <dantipov at cloudlinux.com>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit b649c7d3c2b1e13e900c80ff7a20959a70b1c528
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 18 11:39:38 2023 +0200

    tdb: release 1.4.9
    
    * Remove remaining, but broken python2 support
    * Spelling fixes
    * python: Safely clear structure members
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 791e2817e13182344447590313f7e372a27c1d48
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 18 11:39:38 2023 +0200

    talloc: release 2.4.1
    
    * Remove remaining, but broken python2 support
    * Spelling fixes
    * Remove unneeded va_copy()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

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

Summary of changes:
 lib/ldb/common/ldb.c                               |   2 +
 lib/ldb/include/dlinklist.h                        |   9 +-
 lib/replace/wscript                                |   4 +-
 ...oc-util-2.3.0.sigs => pytalloc-util-2.4.1.sigs} |   0
 .../ABI/{talloc-2.3.5.sigs => talloc-2.4.1.sigs}   |   0
 lib/talloc/wscript                                 |   2 +-
 lib/tdb/ABI/{tdb-1.3.17.sigs => tdb-1.4.9.sigs}    |   0
 lib/tdb/wscript                                    |   2 +-
 .../ABI/{tevent-0.14.0.sigs => tevent-0.15.0.sigs} |  10 ++
 lib/tevent/testsuite.c                             | 114 +++++++++++++
 lib/tevent/tevent.c                                |   5 +-
 lib/tevent/tevent.h                                | 177 ++++++++++++++++----
 lib/tevent/tevent_debug.c                          |  73 ++++++--
 .../dlinklist.h => tevent/tevent_dlinklist.h}      |   9 +-
 lib/tevent/tevent_epoll.c                          |  96 ++++++-----
 lib/tevent/tevent_fd.c                             |  16 ++
 lib/tevent/tevent_immediate.c                      |   6 +-
 lib/tevent/tevent_internal.h                       |  42 ++++-
 lib/tevent/tevent_queue.c                          |  68 +++++++-
 lib/tevent/tevent_req.c                            |  86 ++++++++--
 lib/tevent/tevent_threads.c                        |   2 +-
 lib/tevent/tevent_timed.c                          |   8 +-
 lib/tevent/tevent_util.h                           | 185 ++-------------------
 lib/tevent/tevent_wrapper.c                        |   2 +-
 lib/tevent/wscript                                 |   6 +-
 lib/util/dlinklist.h                               |  29 ++--
 lib/util/tevent_debug.c                            |  11 ++
 source3/winbindd/winbindd.c                        |   7 +-
 source3/winbindd/winbindd_dual.c                   |  10 +-
 source3/winbindd/winbindd_misc.c                   |  36 ++++
 source3/winbindd/winbindd_proto.h                  |   6 +
 31 files changed, 701 insertions(+), 322 deletions(-)
 copy lib/talloc/ABI/{pytalloc-util-2.3.0.sigs => pytalloc-util-2.4.1.sigs} (100%)
 copy lib/talloc/ABI/{talloc-2.3.5.sigs => talloc-2.4.1.sigs} (100%)
 copy lib/tdb/ABI/{tdb-1.3.17.sigs => tdb-1.4.9.sigs} (100%)
 copy lib/tevent/ABI/{tevent-0.14.0.sigs => tevent-0.15.0.sigs} (91%)
 copy lib/{ldb/include/dlinklist.h => tevent/tevent_dlinklist.h} (96%)


Changeset truncated at 500 lines:

diff --git a/lib/ldb/common/ldb.c b/lib/ldb/common/ldb.c
index 6145bc7e500..fe7c4d18f5c 100644
--- a/lib/ldb/common/ldb.c
+++ b/lib/ldb/common/ldb.c
@@ -117,6 +117,7 @@ struct ldb_context *ldb_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev_ctx)
 			return NULL;
 		}
 		tevent_set_debug(ev_ctx, ldb_tevent_debug, ldb);
+		tevent_set_max_debug_level(ev_ctx, TEVENT_DEBUG_TRACE);
 		tevent_loop_allow_nesting(ev_ctx);
 	}
 
@@ -745,6 +746,7 @@ struct ldb_handle *ldb_handle_new(TALLOC_CTX *mem_ctx, struct ldb_context *ldb)
 			return NULL;
 		}
 		tevent_set_debug(h->event_context, ldb_tevent_debug, ldb);
+		tevent_set_max_debug_level(h->event_context, TEVENT_DEBUG_TRACE);
 		tevent_loop_allow_nesting(h->event_context);
 	}
 
diff --git a/lib/ldb/include/dlinklist.h b/lib/ldb/include/dlinklist.h
index 822a8266e04..a775e8dcdc1 100644
--- a/lib/ldb/include/dlinklist.h
+++ b/lib/ldb/include/dlinklist.h
@@ -1,13 +1,12 @@
-/* 
+/*
    Unix SMB/CIFS implementation.
    some simple double linked list macros
 
    Copyright (C) Andrew Tridgell 1998-2010
 
-     ** NOTE! The following LGPL license applies to the ldb
-     ** library. This does NOT imply that all of Samba is released
-     ** under the LGPL
-   
+     ** NOTE! The following LGPL license applies to this file (*dlinklist.h).
+     ** This does NOT imply that all of Samba is released under the LGPL
+
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
diff --git a/lib/replace/wscript b/lib/replace/wscript
index 199e636aa02..37d77593900 100644
--- a/lib/replace/wscript
+++ b/lib/replace/wscript
@@ -487,7 +487,7 @@ def configure(conf):
     conf.CHECK_FUNCS('gai_strerror get_current_dir_name')
     conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs mmap setgroups syscall setsid')
     conf.CHECK_FUNCS('getgrent_r getgrgid_r getgrnam_r getgrouplist getpagesize')
-    conf.CHECK_FUNCS('getpwent_r getpwnam_r getpwuid_r epoll_create')
+    conf.CHECK_FUNCS('getpwent_r getpwnam_r getpwuid_r epoll_create1')
     conf.CHECK_FUNCS('getprogname')
     if not conf.CHECK_FUNCS('copy_file_range'):
         conf.CHECK_CODE('''
@@ -710,7 +710,7 @@ syscall(SYS_copy_file_range,0,NULL,0,NULL,0,0);
     conf.CHECK_DECLS('getgrent_r getpwent_r', reverse=True, headers='pwd.h grp.h')
     conf.CHECK_DECLS('pread pwrite setenv setresgid setresuid', reverse=True)
 
-    if conf.CONFIG_SET('HAVE_EPOLL_CREATE') and conf.CONFIG_SET('HAVE_SYS_EPOLL_H'):
+    if conf.CONFIG_SET('HAVE_EPOLL_CREATE1') and conf.CONFIG_SET('HAVE_SYS_EPOLL_H'):
         conf.DEFINE('HAVE_EPOLL', 1)
 
     if conf.CHECK_FUNCS('eventfd', headers='sys/eventfd.h'):
diff --git a/lib/talloc/ABI/pytalloc-util-2.3.0.sigs b/lib/talloc/ABI/pytalloc-util-2.4.1.sigs
similarity index 100%
copy from lib/talloc/ABI/pytalloc-util-2.3.0.sigs
copy to lib/talloc/ABI/pytalloc-util-2.4.1.sigs
diff --git a/lib/talloc/ABI/talloc-2.3.5.sigs b/lib/talloc/ABI/talloc-2.4.1.sigs
similarity index 100%
copy from lib/talloc/ABI/talloc-2.3.5.sigs
copy to lib/talloc/ABI/talloc-2.4.1.sigs
diff --git a/lib/talloc/wscript b/lib/talloc/wscript
index 503295eeceb..075f1ec4417 100644
--- a/lib/talloc/wscript
+++ b/lib/talloc/wscript
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'talloc'
-VERSION = '2.4.0'
+VERSION = '2.4.1'
 
 import os
 import sys
diff --git a/lib/tdb/ABI/tdb-1.3.17.sigs b/lib/tdb/ABI/tdb-1.4.9.sigs
similarity index 100%
copy from lib/tdb/ABI/tdb-1.3.17.sigs
copy to lib/tdb/ABI/tdb-1.4.9.sigs
diff --git a/lib/tdb/wscript b/lib/tdb/wscript
index 9c9bf77f115..5e6a928d5bc 100644
--- a/lib/tdb/wscript
+++ b/lib/tdb/wscript
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'tdb'
-VERSION = '1.4.8'
+VERSION = '1.4.9'
 
 import sys, os
 
diff --git a/lib/tevent/ABI/tevent-0.14.0.sigs b/lib/tevent/ABI/tevent-0.15.0.sigs
similarity index 91%
copy from lib/tevent/ABI/tevent-0.14.0.sigs
copy to lib/tevent/ABI/tevent-0.15.0.sigs
index f2a11902a80..f7eba5775df 100644
--- a/lib/tevent/ABI/tevent-0.14.0.sigs
+++ b/lib/tevent/ABI/tevent-0.15.0.sigs
@@ -1,3 +1,4 @@
+__tevent_req_create: struct tevent_req *(TALLOC_CTX *, void *, size_t, const char *, const char *, const char *)
 _tevent_add_fd: struct tevent_fd *(struct tevent_context *, TALLOC_CTX *, int, uint16_t, tevent_fd_handler_t, void *, const char *, const char *)
 _tevent_add_signal: struct tevent_signal *(struct tevent_context *, TALLOC_CTX *, int, int, tevent_signal_handler_t, void *, const char *, const char *)
 _tevent_add_timer: struct tevent_timer *(struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *)
@@ -8,6 +9,9 @@ _tevent_create_immediate: struct tevent_immediate *(TALLOC_CTX *, const char *)
 _tevent_loop_once: int (struct tevent_context *, const char *)
 _tevent_loop_until: int (struct tevent_context *, bool (*)(void *), void *, const char *)
 _tevent_loop_wait: int (struct tevent_context *, const char *)
+_tevent_queue_add: bool (struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, const char *, void *)
+_tevent_queue_add_entry: struct tevent_queue_entry *(struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, const char *, void *)
+_tevent_queue_add_optimize_empty: struct tevent_queue_entry *(struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, const char *, void *)
 _tevent_queue_create: struct tevent_queue *(TALLOC_CTX *, const char *, const char *)
 _tevent_req_callback_data: void *(struct tevent_req *)
 _tevent_req_cancel: bool (struct tevent_req *, const char *)
@@ -18,7 +22,11 @@ _tevent_req_error: bool (struct tevent_req *, uint64_t, const char *)
 _tevent_req_nomem: bool (const void *, struct tevent_req *, const char *)
 _tevent_req_notify_callback: void (struct tevent_req *, const char *)
 _tevent_req_oom: void (struct tevent_req *, const char *)
+_tevent_req_set_callback: void (struct tevent_req *, tevent_req_fn, const char *, void *)
+_tevent_req_set_cancel_fn: void (struct tevent_req *, tevent_req_cancel_fn, const char *)
+_tevent_req_set_cleanup_fn: void (struct tevent_req *, tevent_req_cleanup_fn, const char *)
 _tevent_schedule_immediate: void (struct tevent_immediate *, struct tevent_context *, tevent_immediate_handler_t, void *, const char *, const char *)
+_tevent_thread_call_depth_reset_from_req: void (struct tevent_req *, const char *)
 _tevent_threaded_schedule_immediate: void (struct tevent_threaded_context *, struct tevent_immediate *, tevent_immediate_handler_t, void *, const char *, const char *)
 tevent_abort: void (struct tevent_context *, const char *)
 tevent_backend_list: const char **(TALLOC_CTX *)
@@ -120,6 +128,7 @@ tevent_set_abort_fn: void (void (*)(const char *))
 tevent_set_debug: int (struct tevent_context *, void (*)(void *, enum tevent_debug_level, const char *, va_list), void *)
 tevent_set_debug_stderr: int (struct tevent_context *)
 tevent_set_default_backend: void (const char *)
+tevent_set_max_debug_level: enum tevent_debug_level (struct tevent_context *, enum tevent_debug_level)
 tevent_set_trace_callback: void (struct tevent_context *, tevent_trace_callback_t, void *)
 tevent_set_trace_fd_callback: void (struct tevent_context *, tevent_trace_fd_callback_t, void *)
 tevent_set_trace_immediate_callback: void (struct tevent_context *, tevent_trace_immediate_callback_t, void *)
@@ -132,6 +141,7 @@ tevent_signal_support: bool (struct tevent_context *)
 tevent_thread_call_depth_activate: void (size_t *)
 tevent_thread_call_depth_deactivate: void (void)
 tevent_thread_call_depth_reset_from_req: void (struct tevent_req *)
+tevent_thread_call_depth_set_callback: void (tevent_call_depth_callback_t, void *)
 tevent_thread_call_depth_start: void (struct tevent_req *)
 tevent_thread_proxy_create: struct tevent_thread_proxy *(struct tevent_context *)
 tevent_thread_proxy_schedule: void (struct tevent_thread_proxy *, struct tevent_immediate **, tevent_immediate_handler_t, void *)
diff --git a/lib/tevent/testsuite.c b/lib/tevent/testsuite.c
index e7583e64059..c5f7ef32146 100644
--- a/lib/tevent/testsuite.c
+++ b/lib/tevent/testsuite.c
@@ -261,6 +261,112 @@ static bool test_event_context(struct torture_context *test,
 	return true;
 }
 
+static void fde_handler_do_read(struct tevent_context *ev_ctx, struct tevent_fd *f,
+			uint16_t flags, void *private_data)
+{
+	int *fd = (int *)private_data;
+	char c = 0;
+
+	do_read(fd[0], &c, 1);
+	fde_count++;
+}
+
+static void fde_handler_do_write(struct tevent_context *ev_ctx, struct tevent_fd *f,
+			uint16_t flags, void *private_data)
+{
+	int *fd = (int *)private_data;
+	char c = 0;
+
+	do_write(fd[1], &c, 1);
+}
+
+static void fde_handler_ignore(struct tevent_context *ev_ctx, struct tevent_fd *f,
+			uint16_t flags, void *private_data)
+{
+}
+
+static bool test_fd_speedX(struct torture_context *test,
+			   const void *test_data,
+			   size_t additional_fdes)
+{
+	struct tevent_context *ev_ctx = NULL;
+	int fd[2] = { -1, -1 };
+	const char *backend = (const char *)test_data;
+	struct tevent_fd *fde_read = NULL;
+	struct tevent_fd *fde_write = NULL;
+	int finished=0;
+	struct timeval t;
+	size_t i;
+	int ret;
+
+	ev_ctx = test_tevent_context_init_byname(test, backend);
+	if (ev_ctx == NULL) {
+		torture_comment(test, "event backend '%s' not supported\n", backend);
+		return true;
+	}
+
+	torture_comment(test, "backend '%s' - test_fd_speed%zu\n",
+			backend, 1 + additional_fdes);
+
+	/* reset globals */
+	fde_count = 0;
+
+	/* create a pipe */
+	ret = pipe(fd);
+	torture_assert_int_equal(test, ret, 0, "pipe failed");
+
+	fde_read = tevent_add_fd(ev_ctx, ev_ctx, fd[0], TEVENT_FD_READ,
+				 fde_handler_do_read, fd);
+
+	fde_write = tevent_add_fd(ev_ctx, ev_ctx, fd[1], TEVENT_FD_WRITE,
+				  fde_handler_do_write, fd);
+
+	for (i = 0; i < additional_fdes; i++) {
+		tevent_add_fd(ev_ctx, ev_ctx, fd[0], TEVENT_FD_WRITE,
+			      fde_handler_ignore, fd);
+		tevent_add_fd(ev_ctx, ev_ctx, fd[1], TEVENT_FD_READ,
+			      fde_handler_ignore, fd);
+	}
+
+	tevent_fd_set_auto_close(fde_read);
+	tevent_fd_set_auto_close(fde_write);
+
+	tevent_add_timer(ev_ctx, ev_ctx, timeval_current_ofs(600,0),
+			 finished_handler, &finished);
+
+	t = timeval_current();
+	while (!finished && fde_count < 1000000) {
+		errno = 0;
+		if (tevent_loop_once(ev_ctx) == -1) {
+			TALLOC_FREE(ev_ctx);
+			torture_fail(test, talloc_asprintf(test, "Failed event loop %s\n", strerror(errno)));
+			return false;
+		}
+	}
+
+	talloc_free(fde_read);
+	talloc_free(fde_write);
+
+	torture_comment(test, "Got %.2f pipe events\n", (double)fde_count);
+	torture_comment(test, "Got %.2f pipe events/sec\n", fde_count/timeval_elapsed(&t));
+
+	talloc_free(ev_ctx);
+
+	return true;
+}
+
+static bool test_fd_speed1(struct torture_context *test,
+			   const void *test_data)
+{
+	return test_fd_speedX(test, test_data, 0);
+}
+
+static bool test_fd_speed2(struct torture_context *test,
+			   const void *test_data)
+{
+	return test_fd_speedX(test, test_data, 1);
+}
+
 struct test_event_fd1_state {
 	struct torture_context *tctx;
 	const char *backend;
@@ -1865,6 +1971,14 @@ struct torture_suite *torture_local_event(TALLOC_CTX *mem_ctx)
 					       "context",
 					       test_event_context,
 					       (const void *)list[i]);
+		torture_suite_add_simple_tcase_const(backend_suite,
+					       "fd_speed1",
+					       test_fd_speed1,
+					       (const void *)list[i]);
+		torture_suite_add_simple_tcase_const(backend_suite,
+					       "fd_speed2",
+					       test_fd_speed2,
+					       (const void *)list[i]);
 		torture_suite_add_simple_tcase_const(backend_suite,
 					       "fd1",
 					       test_event_fd1,
diff --git a/lib/tevent/tevent.c b/lib/tevent/tevent.c
index 4142da78f60..63ef4dbd7ba 100644
--- a/lib/tevent/tevent.c
+++ b/lib/tevent/tevent.c
@@ -824,7 +824,10 @@ int _tevent_loop_once(struct tevent_context *ev, const char *location)
 	tevent_trace_point_callback(ev, TEVENT_TRACE_AFTER_LOOP_ONCE);
 
 	/* New event (and request) will always start with call depth 0. */
-	tevent_thread_call_depth_set(0);
+	tevent_thread_call_depth_notify(TEVENT_CALL_FLOW_REQ_RESET,
+					NULL,
+					0,
+					__func__);
 
 	if (ev->nesting.level > 0) {
 		if (ev->nesting.hook_fn) {
diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h
index ba564bc0195..fec8c2a1744 100644
--- a/lib/tevent/tevent.h
+++ b/lib/tevent/tevent.h
@@ -39,6 +39,15 @@
 #define __has_attribute(x) 0
 #endif
 
+#ifdef TEVENT_DEPRECATED
+#ifndef _DEPRECATED_
+#if __has_attribute(deprecated) || (__GNUC__ >= 3)
+#define _DEPRECATED_ __attribute__ ((deprecated))
+#else
+#define _DEPRECATED_
+#endif
+#endif
+#endif
 
 struct tevent_context;
 struct tevent_ops;
@@ -615,6 +624,18 @@ typedef void (*tevent_debug_fn)(void *context,
 /**
  * Set destination for tevent debug messages
  *
+ * As of version 0.15.0 the invocation of
+ * the debug function for indiviual messages
+ * is limited by the current max_debug_level,
+ * which means TEVENT_DEBUG_TRACE messages
+ * are not passed by default:
+ *
+ * - tevent_set_debug() with debug == NULL implies
+ *   tevent_set_max_debug_level(ev, TEVENT_DEBUG_FATAL).
+ *
+ * - tevent_set_debug() with debug != NULL implies
+ *   tevent_set_max_debug_level(ev, TEVENT_DEBUG_WARNING).
+ *
  * @param[in] ev        Event context to debug
  * @param[in] debug     Function to handle output printing
  * @param[in] context   The context to pass to the debug function.
@@ -622,11 +643,29 @@ typedef void (*tevent_debug_fn)(void *context,
  * @return Always returns 0 as of version 0.9.8
  *
  * @note Default is to emit no debug messages
+ *
+ * @see tevent_set_max_debug_level()
  */
 int tevent_set_debug(struct tevent_context *ev,
 		     tevent_debug_fn debug,
 		     void *context);
 
+/**
+ * Set maximum debug level for tevent debug messages
+ *
+ * @param[in] ev         Event context to debug
+ * @param[in] max_level  Function to handle output printing
+ *
+ * @return The former max level is returned.
+ *
+ * @see tevent_set_debug()
+ *
+ * @note Available as of tevent 0.15.0
+ */
+enum tevent_debug_level
+tevent_set_max_debug_level(struct tevent_context *ev,
+			   enum tevent_debug_level max_level);
+
 /**
  * Designate stderr for debug message output
  *
@@ -1010,6 +1049,13 @@ typedef void (*tevent_req_fn)(struct tevent_req *subreq);
  *                      callback.
  */
 void tevent_req_set_callback(struct tevent_req *req, tevent_req_fn fn, void *pvt);
+void _tevent_req_set_callback(struct tevent_req *req,
+			      tevent_req_fn fn,
+			      const char *fn_name,
+			      void *pvt);
+
+#define tevent_req_set_callback(req, fn, pvt) \
+	_tevent_req_set_callback(req, fn, #fn, pvt)
 
 #ifdef DOXYGEN
 /**
@@ -1166,6 +1212,11 @@ typedef bool (*tevent_req_cancel_fn)(struct tevent_req *req);
  * @param[in]  fn       A pointer to the cancel function.
  */
 void tevent_req_set_cancel_fn(struct tevent_req *req, tevent_req_cancel_fn fn);
+void _tevent_req_set_cancel_fn(struct tevent_req *req,
+			       tevent_req_cancel_fn fn,
+			       const char *fn_name);
+#define tevent_req_set_cancel_fn(req, fn) \
+	_tevent_req_set_cancel_fn(req, fn, #fn)
 
 #ifdef DOXYGEN
 /**
@@ -1227,6 +1278,11 @@ typedef void (*tevent_req_cleanup_fn)(struct tevent_req *req,
  * @param[in]  fn       A pointer to the cancel function.
  */
 void tevent_req_set_cleanup_fn(struct tevent_req *req, tevent_req_cleanup_fn fn);
+void _tevent_req_set_cleanup_fn(struct tevent_req *req,
+				tevent_req_cleanup_fn fn,
+				const char *fn_name);
+#define tevent_req_set_cleanup_fn(req, fn) \
+	_tevent_req_set_cleanup_fn(req, fn, #fn)
 
 #ifdef DOXYGEN
 /**
@@ -1262,9 +1318,20 @@ struct tevent_req *_tevent_req_create(TALLOC_CTX *mem_ctx,
 				      const char *type,
 				      const char *location);
 
+struct tevent_req *__tevent_req_create(TALLOC_CTX *mem_ctx,
+				       void *pstate,
+				       size_t state_size,
+				       const char *type,
+				       const char *func,
+				       const char *location);
+
 #define tevent_req_create(_mem_ctx, _pstate, _type) \
-	_tevent_req_create((_mem_ctx), (_pstate), sizeof(_type), \
-			   #_type, __location__)
+	__tevent_req_create((_mem_ctx),             \
+			    (_pstate),              \
+			    sizeof(_type),          \
+			    #_type,                 \
+			    __func__,               \
+			    __location__)
 #endif
 
 /**
@@ -2029,10 +2096,9 @@ pid_t tevent_cached_getpid(void);
  *
  * Part 1: activation/deactivation
  *
- * tevent_thread_call_depth_activate(), tevent_thread_call_depth_deactivate()
- *
- * Activating registers external size_t variable that will be maintained with
- * the current call depth.
+ * void tevent_thread_call_depth_set_callback(f, private_data)
+ * Register a callback that can track 'call depth' and 'request flow'
+ * NULL as a function callback means deactivation.
  *
  * Part 2: Mark the request (and its subrequests) to be tracked
  *
@@ -2060,34 +2126,62 @@ pid_t tevent_cached_getpid(void);
  * @{
  */
 
+enum tevent_thread_call_depth_cmd {
+	TEVENT_CALL_FLOW_REQ_RESET,
+	TEVENT_CALL_FLOW_REQ_CREATE,
+	TEVENT_CALL_FLOW_REQ_CANCEL,
+	TEVENT_CALL_FLOW_REQ_CLEANUP,
+	TEVENT_CALL_FLOW_REQ_NOTIFY_CB,
+	TEVENT_CALL_FLOW_REQ_QUEUE_ENTER,
+	TEVENT_CALL_FLOW_REQ_QUEUE_TRIGGER,
+	TEVENT_CALL_FLOW_REQ_QUEUE_LEAVE,
+};
+
+typedef void (*tevent_call_depth_callback_t)(
+	void *private_data,
+	enum tevent_thread_call_depth_cmd cmd,
+	struct tevent_req *req,
+	size_t depth,
+	const char *fname);
+
+struct tevent_thread_call_depth_state {
+	tevent_call_depth_callback_t cb;
+	void *cb_private;
+};
+
+extern __thread struct tevent_thread_call_depth_state
+	tevent_thread_call_depth_state_g;
+
 /**
- * Activate call depth tracking and register external variable that will
- * be updated to the call depth of currently processed tevent request.
+ * Register callback function for request/subrequest call depth / flow tracking.
  *
- * @param[in]  ptr   Address of external variable
+ * @param[in]  f  External call depth and flow handling function
  */
-void tevent_thread_call_depth_activate(size_t *ptr);
+void tevent_thread_call_depth_set_callback(tevent_call_depth_callback_t f,
+					   void *private_data);
 
-/**
- * Deactivate call depth tracking. Can be used in the child process,
- * after fork.
- */
-void tevent_thread_call_depth_deactivate(void);
+#ifdef TEVENT_DEPRECATED
 
-/**
- * This request will have call depth set to 1, its subrequest will get 2 and so
- * on. All other requests will have call depth 0.
- */
-void tevent_thread_call_depth_start(struct tevent_req *req);
+void tevent_thread_call_depth_activate(size_t *ptr) _DEPRECATED_;
+void tevent_thread_call_depth_deactivate(void) _DEPRECATED_;


-- 
Samba Shared Repository



More information about the samba-cvs mailing list