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ý <pfilipen...@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ý <pfilipen...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>
    
    Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org>
    Autobuild-Date(master): Wed Jul 19 09:00:50 UTC 2023 on atb-devel-224

commit a1b2f17c6db3286cf991ac2ff9f62632ae0660ac
Author: Pavel Filipenský <pfilipen...@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ý <pfilipen...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

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

    s3:winbind: Add callback winbind_call_flow()
    
    Signed-off-by: Pavel Filipenský <pfilipen...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 24120728bb26ae814292e2e8c06eaa4707bb18b6
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 0031a102c3d7b21a4fe51198db9362251970a83d
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 6a80d170bca0c938f78ab12e37481b52792a9d83
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

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

    tevent: add tevent_common_fd_str() helper
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 2645be60d7a0d57d9e688b3a04fae3bb1f3f14d7
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit e9d980973468a6d03cbe31e603440c475a22e3d7
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 3217d5dc1d631d19392576436eb006e52c816a1f
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit d94b9c8124225afd37deae32bf403c19ade1d109
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 812313f1c82d3679bf5f5e22bb2b0268e9bbb152
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 2c78a4f527eecba89973bfdb5a6d354d31e847d5
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 86140d7c38166bcf2f4becc618e3c993081e3ba1
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit d7b29125c01dd2a152d83ab0dd9418bbc989fa87
Author: Pavel Filipenský <pfilipen...@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ý <pfilipen...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 0c4d6e630f5dac681e49f776ca99e3eff13be6b7
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Pavel Filipenský <pfilipen...@samba.org>

commit 85e43e70b200d25e0b4afc0f9611ddae014af5cc
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Pavel Filipenský <pfilipen...@samba.org>

commit 5e83691d1edb97805c1a270f4807aa0a8700d166
Author: Pavel Filipenský <pfilipen...@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ý <pfilipen...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit deec9994eb873ad42932645361dd3eedcc351a09
Author: Pavel Filipenský <pfilipen...@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ý <pfilipen...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit fb3a9cd7329a3b1952846ef5433f59b66b017b2d
Author: Pavel Filipenský <pfili...@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ý <pfilipen...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

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

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

commit e9f38f6e6d858d3efe8610a29723f50b0c72a173
Author: Pavel Filipenský <pfilipen...@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ý <pfilipen...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 28ddcaf4d8ebb7a4e3498518580ff71662d3cee0
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Pavel Filipenský <pfilipen...@samba.org>

commit c1124ec8e5d2fb38b9011b72118bb981904a011d
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit e3c77030fee120b9b73d971d39eca142920f6b49
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 8edb16a3964e3a699897e2b4c84c5fad1f58b015
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

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

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

commit a665d44f22c1fea4fd9104e4e3e45ee9b6cd68cd
Author: Dmitry Antipov <danti...@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 <danti...@cloudlinux.com>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 0daa9ebc2354d65a9d77a6a7d1616ef357056fd2
Author: Dmitry Antipov <danti...@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 <danti...@cloudlinux.com>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit b649c7d3c2b1e13e900c80ff7a20959a70b1c528
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Andreas Schneider <a...@samba.org>

commit 791e2817e13182344447590313f7e372a27c1d48
Author: Stefan Metzmacher <me...@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 <me...@samba.org>
    Reviewed-by: Andreas Schneider <a...@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


Reply via email to