The branch, master has been updated via ab96359 script/autobuild: delay start of small projects by 60 to 600 seconds via c30e6b5 script/autobuild: don't use 'make -j 4' for bin/smbtorture4 via fba51c8 script/autobuild: don't use make -j for small projects via cd26039 s3:smbd: fix the build with the --with-profiling-data option via 0d1f3c1 s3:include: add START/END_PROFILE_STAMP() via b70164b wafsamba/irixcc: next try to inject '-c99' the the build via a94bed3 Revert "wafsamba/irixcc: add '-c99' option to cc" from db9180c idmap-hash: Attempt to fix Coverity ID 709116 Overflowed array index write
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit ab96359bfefa08eddfb688137ca07c1efcbb494f Author: Stefan Metzmacher <me...@samba.org> Date: Wed Jun 20 11:03:48 2012 +0200 script/autobuild: delay start of small projects by 60 to 600 seconds This should reduce the startup load. metze Autobuild-User(master): Stefan Metzmacher <me...@samba.org> Autobuild-Date(master): Wed Jun 20 14:56:51 CEST 2012 on sn-devel-104 commit c30e6b5973b78c04b9131a2adf1eb5dda2222c2f Author: Stefan Metzmacher <me...@samba.org> Date: Wed Jun 20 11:14:04 2012 +0200 script/autobuild: don't use 'make -j 4' for bin/smbtorture4 The '4' has no effect there, which results in NUM_JOBS == NUM_CORES. metze commit fba51c82f35dae1a406d291614a0920cecef6e8c Author: Stefan Metzmacher <me...@samba.org> Date: Wed Jun 20 10:36:23 2012 +0200 script/autobuild: don't use make -j for small projects The top level and source3 builds take much longer than the standalone projects, so there's no need to use 'make -j'. metze commit cd260391fae7888de0e6e1be64eebb50f399525b Author: Stefan Metzmacher <me...@samba.org> Date: Wed Jun 20 08:53:10 2012 +0200 s3:smbd: fix the build with the --with-profiling-data option metze commit 0d1f3c13630610447e629c9fbe86c6545b063cff Author: Stefan Metzmacher <me...@samba.org> Date: Wed Jun 20 08:44:30 2012 +0200 s3:include: add START/END_PROFILE_STAMP() This is needed when the profiling spans multiple functions. metze commit b70164bc31854990a97c8010526a1a07e72a11d7 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Jun 20 08:45:42 2012 +0200 wafsamba/irixcc: next try to inject '-c99' the the build metze commit a94bed317881395b68cb06a8c637095ca6c98cd3 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Jun 20 00:14:58 2012 +0200 Revert "wafsamba/irixcc: add '-c99' option to cc" This reverts commit 59daf91f397c2ebef283ab9e6ecaabbe9dc58fc5. Doesn't seem to work :-( metze ----------------------------------------------------------------------- Summary of changes: buildtools/wafsamba/irixcc.py | 8 +++--- script/autobuild.py | 56 ++++++++++++++++++++++++++-------------- script/random-sleep.sh | 21 +++++++++++++++ source3/include/smbprofile.h | 30 +++++++++++++++++----- source3/smbd/globals.h | 2 + source3/smbd/process.c | 10 +++++-- 6 files changed, 93 insertions(+), 34 deletions(-) create mode 100755 script/random-sleep.sh Changeset truncated at 500 lines: diff --git a/buildtools/wafsamba/irixcc.py b/buildtools/wafsamba/irixcc.py index f29f9a0..f3cb451 100644 --- a/buildtools/wafsamba/irixcc.py +++ b/buildtools/wafsamba/irixcc.py @@ -17,18 +17,18 @@ def find_irixcc(conf): cc = None if v['CC']: cc = v['CC'] elif 'CC' in conf.environ: cc = conf.environ['CC'] - if not cc: - cc = conf.find_program('cc', var='CC') - cc += ' -c99' + if not cc: cc = conf.find_program('cc', var='CC') if not cc: conf.fatal('irixcc was not found') cc = conf.cmd_to_list(cc) try: - if Utils.cmd_output(cc + ['-version']) != '': + if Utils.cmd_output(cc + ['-c99'] + ['-version']) != '': conf.fatal('irixcc %r was not found' % cc) except ValueError: conf.fatal('irixcc -v could not be executed') + conf.env.append_unique('CCFLAGS', '-c99') + v['CC'] = cc v['CC_NAME'] = 'irix' diff --git a/script/autobuild.py b/script/autobuild.py index fcdfdb7..8bdb281 100755 --- a/script/autobuild.py +++ b/script/autobuild.py @@ -40,7 +40,7 @@ tasks = { # we split 'make -j 4', 'make bin/smbtorture4' and 'make -j 4 everything' # because it makes it much easier to find errors. ("make", "make -j 4", "text/plain"), # don't use too many processes - ("make bin/smbtorture4", "make -j 4 bin/smbtorture4", "text/plain"), + ("make bin/smbtorture4", "make bin/smbtorture4", "text/plain"), ("make everything", "make -j 4 everything", "text/plain"), ("install", "make install", "text/plain"), ("test", "TDB_NO_FSYNC=1 make test FAIL_IMMEDIATELY=1", "text/plain"), @@ -55,28 +55,32 @@ tasks = { ("check-clean-tree", "script/clean-source-tree.sh", "text/plain"), ("clean", "make clean", "text/plain") ], - "samba4-libs" : [ ("talloc-configure", "cd lib/talloc && PYTHONPATH=${PYTHON_PREFIX}/site-packages:$PYTHONPATH PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${PREFIX_DIR}/lib/pkgconfig ./configure --bundled-libraries=NONE --abi-check --enable-debug -C ${PREFIX}", "text/plain"), - ("talloc-make", "cd lib/talloc && make -j", "text/plain"), + "samba4-libs" : [ + ("random-sleep", "script/random-sleep.sh 60 600", "text/plain"), + ("talloc-configure", "cd lib/talloc && PYTHONPATH=${PYTHON_PREFIX}/site-packages:$PYTHONPATH PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${PREFIX_DIR}/lib/pkgconfig ./configure --bundled-libraries=NONE --abi-check --enable-debug -C ${PREFIX}", "text/plain"), + ("talloc-make", "cd lib/talloc && make", "text/plain"), ("talloc-install", "cd lib/talloc && make install", "text/plain"), ("tdb-configure", "cd lib/tdb && PYTHONPATH=${PYTHON_PREFIX}/site-packages:$PYTHONPATH PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${PREFIX_DIR}/lib/pkgconfig ./configure --bundled-libraries=NONE --abi-check --enable-debug -C ${PREFIX}", "text/plain"), - ("tdb-make", "cd lib/tdb && make -j", "text/plain"), + ("tdb-make", "cd lib/tdb && make", "text/plain"), ("tdb-install", "cd lib/tdb && make install", "text/plain"), ("tevent-configure", "cd lib/tevent && PYTHONPATH=${PYTHON_PREFIX}/site-packages:$PYTHONPATH PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${PREFIX_DIR}/lib/pkgconfig ./configure --bundled-libraries=NONE --abi-check --enable-debug -C ${PREFIX}", "text/plain"), - ("tevent-make", "cd lib/tevent && make -j", "text/plain"), + ("tevent-make", "cd lib/tevent && make", "text/plain"), ("tevent-install", "cd lib/tevent && make install", "text/plain"), ("ldb-configure", "cd lib/ldb && PYTHONPATH=${PYTHON_PREFIX}/site-packages:$PYTHONPATH PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${PREFIX_DIR}/lib/pkgconfig ./configure --bundled-libraries=NONE --abi-check --enable-debug -C ${PREFIX}", "text/plain"), - ("ldb-make", "cd lib/ldb && make -j", "text/plain"), + ("ldb-make", "cd lib/ldb && make", "text/plain"), ("ldb-install", "cd lib/ldb && make install", "text/plain"), ("configure", "PYTHONPATH=${PYTHON_PREFIX}/site-packages:$PYTHONPATH PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${PREFIX_DIR}/lib/pkgconfig ./configure --bundled-libraries=!talloc,!tdb,!pytdb,!ldb,!pyldb,!tevent,!pytevent --abi-check --enable-debug -C ${PREFIX}", "text/plain"), - ("make", "make -j", "text/plain"), + ("make", "make", "text/plain"), ("install", "make install", "text/plain")], - "ldb" : [ ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), - ("make", "make -j", "text/plain"), + "ldb" : [ + ("random-sleep", "script/random-sleep.sh 60 600", "text/plain"), + ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), + ("make", "make", "text/plain"), ("install", "make install", "text/plain"), ("test", "TDB_NO_FSYNC=1 make test", "text/plain"), ("check-clean-tree", "../../script/clean-source-tree.sh", "text/plain"), @@ -84,47 +88,59 @@ tasks = { ("clean", "make clean", "text/plain") ], # We don't use TDB_NO_FSYNC=1 here, because we want to test the transaction code - "tdb" : [ ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), - ("make", "make -j", "text/plain"), + "tdb" : [ + ("random-sleep", "script/random-sleep.sh 60 600", "text/plain"), + ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), + ("make", "make", "text/plain"), ("install", "make install", "text/plain"), ("test", "make test", "text/plain"), ("check-clean-tree", "../../script/clean-source-tree.sh", "text/plain"), ("distcheck", "make distcheck", "text/plain"), ("clean", "make clean", "text/plain") ], - "ntdb" : [ ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), - ("make", "make -j", "text/plain"), + "ntdb" : [ + ("random-sleep", "script/random-sleep.sh 60 600", "text/plain"), + ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), + ("make", "make", "text/plain"), ("install", "make install", "text/plain"), ("test", "make test", "text/plain"), ("check-clean-tree", "../../script/clean-source-tree.sh", "text/plain"), ("distcheck", "make distcheck", "text/plain"), ("clean", "make clean", "text/plain") ], - "talloc" : [ ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), - ("make", "make -j", "text/plain"), + "talloc" : [ + ("random-sleep", "script/random-sleep.sh 60 600", "text/plain"), + ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), + ("make", "make", "text/plain"), ("install", "make install", "text/plain"), ("test", "make test", "text/plain"), ("check-clean-tree", "../../script/clean-source-tree.sh", "text/plain"), ("distcheck", "make distcheck", "text/plain"), ("clean", "make clean", "text/plain") ], - "replace" : [ ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), - ("make", "make -j", "text/plain"), + "replace" : [ + ("random-sleep", "script/random-sleep.sh 60 600", "text/plain"), + ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), + ("make", "make", "text/plain"), ("install", "make install", "text/plain"), ("test", "make test", "text/plain"), ("check-clean-tree", "../../script/clean-source-tree.sh", "text/plain"), ("distcheck", "make distcheck", "text/plain"), ("clean", "make clean", "text/plain") ], - "tevent" : [ ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), - ("make", "make -j", "text/plain"), + "tevent" : [ + ("random-sleep", "script/random-sleep.sh 60 600", "text/plain"), + ("configure", "./configure --enable-developer -C ${PREFIX}", "text/plain"), + ("make", "make", "text/plain"), ("install", "make install", "text/plain"), ("test", "make test", "text/plain"), ("check-clean-tree", "../../script/clean-source-tree.sh", "text/plain"), ("distcheck", "make distcheck", "text/plain"), ("clean", "make clean", "text/plain") ], - "pidl" : [ ("configure", "perl Makefile.PL PREFIX=${PREFIX_DIR}", "text/plain"), + "pidl" : [ + ("random-sleep", "script/random-sleep.sh 60 600", "text/plain"), + ("configure", "perl Makefile.PL PREFIX=${PREFIX_DIR}", "text/plain"), ("touch", "touch *.yp", "text/plain"), ("make", "make", "text/plain"), ("test", "make test", "text/plain"), diff --git a/script/random-sleep.sh b/script/random-sleep.sh new file mode 100755 index 0000000..70b0c03 --- /dev/null +++ b/script/random-sleep.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# + +if [ $# -lt 2 ]; then + echo "$0: <low> <high>" + exit 1; +fi + +l=$1 +h=$2 + +s=$(expr $h - $l) + +r=$(head --bytes=2 /dev/urandom | od -l | head -n 1 | sed -e 's/^[^ ]* *//') + +v=$(expr $r % $s) +d=$(expr $l + $v) + +echo "$0: sleep $d ... start" +#sleep $d +echo "$0: sleep $d ... end" diff --git a/source3/include/smbprofile.h b/source3/include/smbprofile.h index 4f5b600..6e136a0 100644 --- a/source3/include/smbprofile.h +++ b/source3/include/smbprofile.h @@ -935,12 +935,19 @@ static inline uint64_t profile_timestamp(void) ADD_PROFILE_COUNT(x,n); \ } +#define START_PROFILE_RAW(x, _stamp, _count) \ + _stamp = 0; \ + if (do_profile_flag) { \ + _stamp = do_profile_times ? profile_timestamp() : 0;\ + INC_PROFILE_COUNT(_count); \ + } + +#define START_PROFILE_STAMP(x, _stamp) \ + START_PROFILE_RAW(x, _stamp, x##_count) + #define START_PROFILE(x) \ uint64_t __profstamp_##x = 0; \ - if (do_profile_flag) { \ - __profstamp_##x = do_profile_times ? profile_timestamp() : 0;\ - INC_PROFILE_COUNT(x##_count); \ - } + START_PROFILE_RAW(x, __profstamp_##x, x##_count) #define START_PROFILE_BYTES(x,n) \ uint64_t __profstamp_##x = 0; \ @@ -950,19 +957,28 @@ static inline uint64_t profile_timestamp(void) ADD_PROFILE_COUNT(x##_bytes, n); \ } -#define END_PROFILE(x) \ +#define END_PROFILE_RAW(x, _stamp, _time) \ if (do_profile_times) { \ - ADD_PROFILE_COUNT(x##_time, \ - profile_timestamp() - __profstamp_##x); \ + ADD_PROFILE_COUNT(_time, \ + profile_timestamp() - _stamp); \ } + +#define END_PROFILE_STAMP(x, _stamp) \ + END_PROFILE_RAW(x, _stamp, x##_time) + +#define END_PROFILE(x) \ + END_PROFILE_RAW(x, __profstamp_##x, x##_time) + #else /* WITH_PROFILE */ #define DO_PROFILE_INC(x) #define DO_PROFILE_DEC(x) #define DO_PROFILE_DEC_INC(x,y) #define DO_PROFILE_ADD(x,n) +#define START_PROFILE_STAMP(x, _stamp) #define START_PROFILE(x) #define START_PROFILE_BYTES(x,n) +#define END_PROFILE_STAMP(x, _stamp) #define END_PROFILE(x) #endif /* WITH_PROFILE */ diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 8113b8e..0164cb6 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -352,6 +352,8 @@ struct smbXsrv_connection { } smb2; struct msg_state *msg_state; + + uint64_t smbd_idle_profstamp; }; NTSTATUS smbXsrv_connection_init_tables(struct smbXsrv_connection *conn, diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 9e1abb2..465f429 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -3166,12 +3166,16 @@ NTSTATUS smbXsrv_connection_init_tables(struct smbXsrv_connection *conn, static void smbd_tevent_trace_callback(enum tevent_trace_point point, void *private_data) { + struct smbXsrv_connection *conn = + talloc_get_type_abort(private_data, + struct smbXsrv_connection); + switch (point) { case TEVENT_TRACE_BEFORE_WAIT: - START_PROFILE(smbd_idle); + START_PROFILE_STAMP(smbd_idle, conn->smbd_idle_profstamp); break; case TEVENT_TRACE_AFTER_WAIT: - END_PROFILE(smbd_idle); + END_PROFILE_STAMP(smbd_idle, conn->smbd_idle_profstamp); break; } } @@ -3513,7 +3517,7 @@ void smbd_process(struct tevent_context *ev_ctx, TALLOC_FREE(frame); - tevent_set_trace_callback(ev_ctx, smbd_tevent_trace_callback, NULL); + tevent_set_trace_callback(ev_ctx, smbd_tevent_trace_callback, conn); while (True) { frame = talloc_stackframe_pool(8192); -- Samba Shared Repository