The branch, v4-9-test has been updated via 8b523259855 ctdb-common: Fix memory leak in run_proc via 54199785376 ctdb-common: Fix memory leak via 76c7302105c ctdb-recoverd: Fix memory leak via f81a971cc29 vfs_ceph: fix cephwrap_flistxattr() debug message via e1522725b0f s3:smbspool: Fix regression printing with Kerberos credentials via e3dd029dfad s3: SMB1: Don't allow recvfile on stream fsp's. via 1e9e531a585 s3:smbd: don't use recvfile on streams via f8eb314bcda s3:utils: If share is NULL in smbcacls, don't print it via c98a190ff88 s3:utils: If share is NULL in smbcquotas, don't print it via ca9e386a59e s3:winbindd: Do not free db_path in idmap_tdb2 before we printed it via 925871f5808 ctdb:common: Do not print NULL if we don't get a sockpath via f00cb3c1824 s4:torture: Do not free full_name before we printed it via 637b3b1a3da lib:torture: Fix string comparison macros where we directly pass NULL via 1f14d55f45e s4:torture: Do not print NULL strings we just checked before via 9fda18d7707 s4:ntvfs: Do not free eadb before we printed an error via 541a98bc843 s3:rpc_server: Do not free the tdbname before we printed it via 2ec15697375 s4:auth: Fix debug statement in gensec_gssapi via 1c2c081f439 ctdb-daemon: Never use 0 as a client ID via 24d70220b28 ctdb-tests: Fix logic error in simple ctdb reloadips test via 9f679ba14d5 ctdb-tests: Make ctdb reloadips tests more reliable via 0ffba5145c8 ctdb-tests: Capture output in $out on failure as well via 1eb5d2e4fc2 ctdb-tests: Don't clean up test var directory in autotest target via 15e5d62b3d9 ctdb-tests: Fix usage message via 814471f46e8 ctdb-tests: Wait to allow database attach/detach to take effect via 3f104bd0db2 ctdb-tests: Avoid bulk output in $out, prefer $outfile via b594f5161dd ctdb-tests: Make try_command_on_node less error-prone via 7c97bc83284 ctdb-tests: Change sanity_check_output() to internally use $out via 30b5d837d5d ctdb-tests: Extend test to cover ctdb rddumpmemory via 08e229df43e ctdb-tools: Fix ctdb dumpmemory to avoid printing trailing NUL via 7db0d1a7646 smbd: implement SMB_FILE_NORMALIZED_NAME_INFORMATION handling via ffb6fb90f69 s4:torture/smb2: add smb2.getinfo.normalized test via d2c87ba602b s4:libcli/raw: add RAW_FILEINFO_NORMALIZED_NAME_INFORMATION support via e8a1f4c233b smbd: allow case insensitive opens of named streams via b23a436e0cc s4:torture/smb2: add smb2.stream.names3 test via 9f4cc1ff94e s3: modules: ceph: use current working directory instead of share path via 9348090b5e2 s3:debug: enable logging for early startup failures via adc1277e392 s3:debug: adjust indention via dea9042b2e2 s3:debug: use struct initializer via 2e2b539d83a debug: add a call to debug_parse_levels() to reopen_logs() via cd5fbcc9d4d debug: add an empty line via e7b1794cefa winbind: Fix overlapping id ranges via ac678f27dff selftest: Add trusted domain tests for idmap_ad via c1b0fb91caf selftest: Pass trusted domain information to idmap_ad test via 4cf06197d2a selftest: Add idmap configuration for trusted domain for idmap_ad via f807c76db1e selftest: Make trusted domain information available for idmap_ad environment via dcbffbb3084 selftest: Use fl2008r2dc for ad_member_idmap_ad via 0861417bf9d selftest: Add gid-to-sid lookup to idmap_ad test via d4d41f0d20d lib util debug: Increase format buffer to 4KiB via bba9f065003 pytests/dns: use 2.6 compatible syntax from 03a91bf0a15 winbind: Use domain name from lsa query for sid_to_name cache entry
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-9-test - Log ----------------------------------------------------------------- commit 8b523259855edcc9350cbb1ee62b4a2156fab539 Author: Amitay Isaacs <ami...@gmail.com> Date: Mon May 13 17:07:59 2019 +1000 ctdb-common: Fix memory leak in run_proc BUG: https://bugzilla.samba.org/show_bug.cgi?id=13943 Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> Autobuild-User(master): Amitay Isaacs <ami...@samba.org> Autobuild-Date(master): Tue May 14 08:59:03 UTC 2019 on sn-devel-184 (cherry picked from commit b1f4c86eea022999d5439e4a6ef3494fe41479b6) Autobuild-User(v4-9-test): Karolin Seeger <ksee...@samba.org> Autobuild-Date(v4-9-test): Fri May 17 10:56:19 UTC 2019 on sn-devel-144 commit 5419978537665cbe2233f57f3f289d3843935318 Author: Martin Schwenke <mar...@meltin.net> Date: Sat May 11 17:33:57 2019 +1000 ctdb-common: Fix memory leak BUG: https://bugzilla.samba.org/show_bug.cgi?id=13943 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit 30bc6e2529cdd444d4ec7902844c3a6fb0858090) commit 76c7302105c6f016d5c63315a685746396a789f4 Author: Martin Schwenke <mar...@meltin.net> Date: Sat May 11 14:24:24 2019 +1000 ctdb-recoverd: Fix memory leak state is always freed before exiting this function, so allocate fde off it instead of long-lived ctdb context. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13943 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit 6a2941e2a9fd6ab2d5b8dbac042b61a7b1b0b914) commit f81a971cc299a235cd2698c035f3ca10b24735e1 Author: David Disseldorp <dd...@samba.org> Date: Fri May 10 13:18:49 2019 +0200 vfs_ceph: fix cephwrap_flistxattr() debug message The @list buffer may be uninitialised prior to ceph_flistxattr() invocation, so only log the address. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13940 Signed-off-by: David Disseldorp <dd...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> Autobuild-User(master): David Disseldorp <dd...@samba.org> Autobuild-Date(master): Fri May 10 12:59:05 UTC 2019 on sn-devel-184 (cherry picked from commit 21dc6f8e8d82f84e4afda355a48fbbd39c7fe800) commit e1522725b0f7d61c05561e192b077f81fcd95bb0 Author: Andreas Schneider <a...@samba.org> Date: Thu May 9 16:18:51 2019 +0200 s3:smbspool: Fix regression printing with Kerberos credentials This is a regression which has been introduced with Samba 4.8. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13939 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit fd4b1f4f16aee3e3c9a2cb449655edfed171963a) commit e3dd029dfad5549360e9e931e1d40945a6e5a680 Author: Jeremy Allison <j...@samba.org> Date: Thu May 9 12:53:11 2019 -0700 s3: SMB1: Don't allow recvfile on stream fsp's. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13938 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri May 10 01:14:02 UTC 2019 on sn-devel-184 (cherry picked from commit 667db8e8c7836c750085729f5062807669cbb204) commit 1e9e531a585d25727e2fbb1f88615f31d8bb627b Author: Ralph Boehme <s...@samba.org> Date: Thu Apr 25 10:57:58 2019 +0200 s3:smbd: don't use recvfile on streams Bug: https://bugzilla.samba.org/show_bug.cgi?id=13938 Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Ralph Böhme <s...@samba.org> Autobuild-Date(master): Thu May 9 20:43:53 UTC 2019 on sn-devel-184 (cherry picked from commit 219bc189472acff24410009ee16a409e0aaf8eef) commit f8eb314bcda9a9847e86869021acb7337a7d3d1e Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 17:12:12 2019 +0200 s3:utils: If share is NULL in smbcacls, don't print it Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 2b957bde5a2f0f670ee0c8acde6edae1f4aaf253) commit c98a190ff8881681de30a7be022afdbb5e854792 Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 17:11:13 2019 +0200 s3:utils: If share is NULL in smbcquotas, don't print it Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 3653dc7013518d90e6deb08a1f21d7472dc86675) commit ca9e386a59e3ef9f066a45e69255853a2019a565 Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 17:05:58 2019 +0200 s3:winbindd: Do not free db_path in idmap_tdb2 before we printed it Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit e333425e0ff6be5691b74a920610b508e7d26892) commit 925871f58086ddcc68b386eacdfd99d8b42e9c53 Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 17:03:54 2019 +0200 ctdb:common: Do not print NULL if we don't get a sockpath sock_socket_start_recv() might not fill sockpath if we return early. Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 830cb7e67568de5f3ce359cb6af3be8ab545c824) commit f00cb3c18241277574e10c49e4e707076c3e2af5 Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 16:58:07 2019 +0200 s4:torture: Do not free full_name before we printed it Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 46f036d3231bc99cf37c7cabf82757d3c28c5cff) commit 637b3b1a3da00c0cadeea6bd7deb63c29a1d87c8 Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 16:54:30 2019 +0200 lib:torture: Fix string comparison macros where we directly pass NULL See e.g. lib/util/tests/strlist.c +177 Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit a8f773e326d6bdfc1c9eb87a74c00108f6620c56) commit 1f14d55f45eee6deacc4091ffe4d5a9b57e28bef Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 16:51:20 2019 +0200 s4:torture: Do not print NULL strings we just checked before Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit be72dfbc8edc53ed191dc01668a53cafb5cd785d) commit 9fda18d77079d44231111c50b9412866f7da6571 Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 16:32:45 2019 +0200 s4:ntvfs: Do not free eadb before we printed an error Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 6da032df5450ef72f8608a19b3b5cc6e9185cd6e) commit 541a98bc843f4232c585b2dbc185d22cd0f81fe0 Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 16:31:10 2019 +0200 s3:rpc_server: Do not free the tdbname before we printed it Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 790d7e34cbe4e190d6acdd24696efe53944cd4a6) commit 2ec15697375c5efa1fcb05f6962751eac2fbd533 Author: Andreas Schneider <a...@samba.org> Date: Wed May 8 16:27:57 2019 +0200 s4:auth: Fix debug statement in gensec_gssapi The 'role' is set to null, we should first set it to the correct value before printing anything. Found by GCC 9. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13937 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit bd29f3fcc023d00afde8e9cc2f9db22dcae49877) commit 1c2c081f439fa7c9b9c5c67978efecf081229a9b Author: Martin Schwenke <mar...@meltin.net> Date: Mon May 6 15:22:49 2019 +1000 ctdb-daemon: Never use 0 as a client ID ctdb_control_db_attach() and ctdb_control_db_detach() assume that any control with client ID 0 comes from another daemon and treat it specially. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13930 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit 8663e0a64fbdb9ea16babbfe87d6f5d7a7b72bbd) commit 24d70220b28f6ee7d629a6900af37ae25ecca296 Author: Martin Schwenke <mar...@meltin.net> Date: Tue May 7 15:42:49 2019 +1000 ctdb-tests: Fix logic error in simple ctdb reloadips test There is a chance that restoring IP addresses to the test node will result in different IP addresses being assigned to that node. Removing a single IP address may then fail (or be a no-op) if it is done after the restore. So, swap the single IP address removal to happen first, then restore, then remove all IP addresses. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit dc89db8ca6aadd4a9f7e8a85843c53709d04587c) commit 9f679ba14d51efd6fff60720a3e343738b0b8578 Author: Martin Schwenke <mar...@meltin.net> Date: Tue May 7 15:29:19 2019 +1000 ctdb-tests: Make ctdb reloadips tests more reliable ctdb reloadips will fail if it can't disable takover runs. The most likely reason for this is that there is already a takeover run in progress. We can't predict when this will happen, so retry if this occurs. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit 8be4ee1a28d5c037955832b6f827d40f28f02796) commit 0ffba5145c8baafd176ca5e38d08b433f064aecb Author: Martin Schwenke <mar...@meltin.net> Date: Mon May 13 17:40:15 2019 +1000 ctdb-tests: Capture output in $out on failure as well BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit cf00db40355b49443263187f9d97934f91287e51) commit 1eb5d2e4fc2895ea2a6ad081407dd624bc97ec36 Author: Martin Schwenke <mar...@meltin.net> Date: Wed May 1 15:17:14 2019 +1000 ctdb-tests: Don't clean up test var directory in autotest target If the directory is always cleaned up then it is not possible to look at daemon logs to debug test failures. This target is only really used by autobuild.py, which (optionally) cleans up the parent directory anyway. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> Autobuild-User(master): Amitay Isaacs <ami...@samba.org> Autobuild-Date(master): Tue May 7 06:56:01 UTC 2019 on sn-devel-184 (cherry picked from commit 5a9e338330fe136908a3a17a5df81c054c5cc5b0) commit 15e5d62b3d94a0eef0a91ade9f7fb05e3e692b33 Author: Martin Schwenke <mar...@meltin.net> Date: Wed May 1 15:10:28 2019 +1000 ctdb-tests: Fix usage message Since commit 0e9ead8f28fced3ebfa888786a1dc5bb59e734a3 daemons have been shut down after each test, so this option no longer has anything to do with killing daemons. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit a2ab6485e027ebb13871c7d83b7626ac5c9b98c0) commit 814471f46e83f826aece75aecdba6ca01f137409 Author: Martin Schwenke <mar...@meltin.net> Date: Sat Apr 27 14:54:09 2019 +1000 ctdb-tests: Wait to allow database attach/detach to take effect Sometimes the detach test fails: Check detaching single test database detach_test1.tdb BAD: database detach_test1.tdb is still attached Number of databases:4 dbid:0x5ae995ee name:detach_test4.tdb path:tests/var/simple/node.0/db/volatile/detach_test4.tdb.0 dbid:0xd84cc13c name:detach_test3.tdb path:tests/var/simple/node.0/db/volatile/detach_test3.tdb.0 dbid:0x8e8e8cef name:detach_test2.tdb path:tests/var/simple/node.0/db/volatile/detach_test2.tdb.0 dbid:0xc62491f4 name:detach_test1.tdb path:tests/var/simple/node.0/db/volatile/detach_test1.tdb.0 Number of databases:3 dbid:0x5ae995ee name:detach_test4.tdb path:tests/var/simple/node.1/db/volatile/detach_test4.tdb.1 dbid:0xd84cc13c name:detach_test3.tdb path:tests/var/simple/node.1/db/volatile/detach_test3.tdb.1 dbid:0x8e8e8cef name:detach_test2.tdb path:tests/var/simple/node.1/db/volatile/detach_test2.tdb.1 Number of databases:4 dbid:0x5ae995ee name:detach_test4.tdb path:tests/var/simple/node.2/db/volatile/detach_test4.tdb.2 dbid:0xd84cc13c name:detach_test3.tdb path:tests/var/simple/node.2/db/volatile/detach_test3.tdb.2 dbid:0x8e8e8cef name:detach_test2.tdb path:tests/var/simple/node.2/db/volatile/detach_test2.tdb.2 dbid:0xc62491f4 name:detach_test1.tdb path:tests/var/simple/node.2/db/volatile/detach_test1.tdb.2 *** TEST COMPLETED (RC=1) AT 2019-04-27 03:35:40, CLEANING UP... When issued from a client, the detach control re-broadcasts itself asynchronously to all nodes and then returns success. The controls to some nodes to do the actual detach may still be in flight when success is returned to the client. Therefore, the test should wait for a few seconds to allow the asynchronous controls to complete. The same is true for the attach control, so workaround the problem in the attach test too. An alternative is to make the attach and detach controls synchronous by avoiding the broadcast and waiting for the results of the individual controls sent to the nodes. However, a simple implementation would involve adding new nested event loops. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit 3cb53a7a05409925024d6a67bcfaeb962d896e0b) commit 3f104bd0db28eb7aaf1b1f4b9eaf7edce2337185 Author: Martin Schwenke <mar...@meltin.net> Date: Thu Apr 11 20:55:20 2019 +1000 ctdb-tests: Avoid bulk output in $out, prefer $outfile BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit 066cc5b0c561464ed08890d9aa1a1a55b545e9cc) commit b594f5161dd8845d19f7d12a300751bd4d040eba Author: Martin Schwenke <mar...@meltin.net> Date: Thu Mar 28 14:26:52 2019 +1100 ctdb-tests: Make try_command_on_node less error-prone This sometimes fails, apparently due to a cat process in onnode getting EAGAIN. The conclusion is that tests that process large amounts of output should not depend on a sub-shell delivering that output into a shell variable. Change try_command_on_node() to leave all of the output in file $outfile and just put the first 1KB into $out. $outfile is removed after each test completes. Change the implementation of sanity_check_output() to use $outfile instead of $out. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit 9d02452a24625df5f62fd6d45a16effe2fa45fbe) commit 7c97bc83284e09ac028a0a7ce04b039b97eae0c7 Author: Martin Schwenke <mar...@meltin.net> Date: Tue Apr 30 12:09:26 2019 +1000 ctdb-tests: Change sanity_check_output() to internally use $out All callers are currently passed $out. Global variable $out is used in many other places so use it here to simplify the interface and make future changes simpler. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit 7c3819d1ac264acf998f426e0cef7f6211e0ddee) commit 30b5d837d5dc863275cc685e1f4f80d866be7bdf Author: Martin Schwenke <mar...@meltin.net> Date: Thu Apr 11 16:58:10 2019 +1000 ctdb-tests: Extend test to cover ctdb rddumpmemory BUG: https://bugzilla.samba.org/show_bug.cgi?id=13923 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit 8108b3134c017c22d245fc5b2207a88d44ab0dd2) commit 08e229df43ed62991ea966e42e966afcacb4cb55 Author: Martin Schwenke <mar...@meltin.net> Date: Thu Apr 11 16:56:32 2019 +1000 ctdb-tools: Fix ctdb dumpmemory to avoid printing trailing NUL Fix ctdb rddumpmemory too. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13923 Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Amitay Isaacs <ami...@gmail.com> (cherry picked from commit f78d9388fb459dc83fafb4da6e683e3137ad40e1) commit 7db0d1a7646d6662df0e44cabad90d021e300305 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Apr 25 14:57:33 2019 +0200 smbd: implement SMB_FILE_NORMALIZED_NAME_INFORMATION handling Windows 10 (1803 and higher) support and use SMB_FILE_NORMALIZED_NAME_INFORMATION calls over the network. As a fallback (in case the server don't support it) the client traverses all path components, which is very expensive. Implementing SMB_FILE_NORMALIZED_NAME_INFORMATION is very cheap for us as the open already went through unix_convert() and we have the information the client is asking for. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13919 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Wed May 1 18:33:00 UTC 2019 on sn-devel-184 (cherry picked from commit b20fd15e04ce9292f90a7f70f4184e43034b4b9d) commit ffb6fb90f69d612ffa981c206d6470e4b2e8237a Author: Stefan Metzmacher <me...@samba.org> Date: Thu Apr 25 14:57:02 2019 +0200 s4:torture/smb2: add smb2.getinfo.normalized test BUG: https://bugzilla.samba.org/show_bug.cgi?id=13919 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 8a5828de2bdd95223e5f30996d0490fef53742dd) commit d2c87ba602b033171f62a2bdbecb19131298881b Author: Stefan Metzmacher <me...@samba.org> Date: Thu Apr 25 12:12:34 2019 +0200 s4:libcli/raw: add RAW_FILEINFO_NORMALIZED_NAME_INFORMATION support This is supported over the wire in SMB 3.1.1 on starting with Windows 10 1803. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13919 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 0c602319194bda6b2a0efdd7c186078583f79264) commit e8a1f4c233b7ad7fd5a86d9c58e5ccfdcd65ea9a Author: Stefan Metzmacher <me...@samba.org> Date: Thu Apr 25 17:30:43 2019 +0200 smbd: allow case insensitive opens of named streams BUG: https://bugzilla.samba.org/show_bug.cgi?id=13919 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 2a69c0915586fb9fb2148239965d06bf9f93c803) commit b23a436e0cc23cee45518041909a8d55157bfb7a Author: Stefan Metzmacher <me...@samba.org> Date: Mon Apr 29 14:53:13 2019 +0200 s4:torture/smb2: add smb2.stream.names3 test BUG: https://bugzilla.samba.org/show_bug.cgi?id=13919 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit b5c4fdbf99caa3a9e7c6446cfbc4f1b23b84b3c8) commit 9f4cc1ff94e0f44906f3b6f3e6c67c0d501bd44f Author: Robert Sander <r.san...@heinlein-support.de> Date: Thu May 2 11:20:44 2019 -0700 s3: modules: ceph: use current working directory instead of share path BUG: https://bugzilla.samba.org/show_bug.cgi?id=13918 Signed-off-by: Robert Sander <r.san...@heinlein-support.de> Reviewed-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Böhme <s...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Thu May 2 19:34:11 UTC 2019 on sn-devel-184 (cherry picked from commit 966fc0dc604299a87e40e7170d80911475317db5) commit 9348090b5e248d469c974df57d42f0cf71988cc8 Author: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Date: Mon Mar 25 15:17:07 2019 +0100 s3:debug: enable logging for early startup failures Commit c89a33a07a 'debug: Use backends instead of explicitly logging to syslog or file' introduced a regression where early startup failures (e.g. unable to connect to CTDB) are no longer logged because the debug subsystem is not yet fully initialized. Enable logging again with reasonable defaults when reopen_logs() is called and the parameter file is not yet parsed. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13904 Signed-off-by: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Reviewed-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Christof Schmitt <c...@samba.org> Autobuild-User(master): Christof Schmitt <c...@samba.org> Autobuild-Date(master): Thu Apr 18 22:21:15 UTC 2019 on sn-devel-144 (cherry picked from commit 9b30fcda64080592d20de64b384fd6d3d0775cbf) commit adc1277e3923496e7fa87a24204007bae1ad3dbb Author: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Date: Thu Apr 11 13:11:34 2019 +0200 s3:debug: adjust indention BUG: https://bugzilla.samba.org/show_bug.cgi?id=13904 Signed-off-by: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Reviewed-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Christof Schmitt <c...@samba.org> (cherry picked from commit a45675879ddcb43ab274d28496eedd6833466ae4) commit dea9042b2e2712756907da597f6cdd4c5c1a949d Author: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Date: Thu Apr 11 13:01:16 2019 +0200 s3:debug: use struct initializer BUG: https://bugzilla.samba.org/show_bug.cgi?id=13904 Signed-off-by: Ralph Wuerthner <ralph.wuerth...@de.ibm.com> Reviewed-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Christof Schmitt <c...@samba.org> (cherry picked from commit b9e1b4ad0033c211710da285c30d603ccb8b8d40) commit 2e2b539d83a1a8b1d31282db1a42a88f89bb2977 Author: Ralph Boehme <s...@samba.org> Date: Wed Dec 12 12:43:47 2018 +0100 debug: add a call to debug_parse_levels() to reopen_logs() This allows correct refresh of the "log level" setting when reloading config. Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 4341f24069f991dc7119093e418aac392e0a1b50) commit cd5fbcc9d4de2bfc79b04a49cf2297469bc094fa Author: Ralph Boehme <s...@samba.org> Date: Wed Dec 12 08:48:35 2018 +0100 debug: add an empty line Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 2bc7e254a62cfc6a60ecff425fc71173c6d21a10) commit e7b1794cefad88c7cac076ebbcc33f2cc9379096 Author: Volker Lendecke <v...@samba.org> Date: Fri Apr 12 16:56:45 2019 +0200 winbind: Fix overlapping id ranges BUG: https://bugzilla.samba.org/show_bug.cgi?id=13903 Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Wed Apr 24 02:25:56 UTC 2019 on sn-devel-184 (cherry picked from commit 3020050bdf9df077ec9a0e962a689557187174ac) commit ac678f27dffb4dc424e6588b03ec80385f7501f3 Author: Christof Schmitt <c...@samba.org> Date: Mon Apr 22 16:41:42 2019 -0700 selftest: Add trusted domain tests for idmap_ad BUG: https://bugzilla.samba.org/show_bug.cgi?id=13903 Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 2577f43a133f8b8eb997b9529a38e21c77b5da22) commit c1b0fb91caf112590f205f368a3f3b3ead15341d Author: Christof Schmitt <c...@samba.org> Date: Mon Apr 22 16:38:11 2019 -0700 selftest: Pass trusted domain information to idmap_ad test BUG: https://bugzilla.samba.org/show_bug.cgi?id=13903 Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit ac0f8656eed39a4527a5336cf93aa1508666f79b) commit 4cf06197d2aa66f0765a7fc3b57220d3154f5816 Author: Christof Schmitt <c...@samba.org> Date: Mon Apr 22 16:07:02 2019 -0700 selftest: Add idmap configuration for trusted domain for idmap_ad BUG: https://bugzilla.samba.org/show_bug.cgi?id=13903 Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 65e1d783cb17904cd117d896569e7cbe79a3131b) commit f807c76db1e5f4977feb006be414fc19bd25e700 Author: Christof Schmitt <c...@samba.org> Date: Thu Apr 18 13:04:09 2019 -0700 selftest: Make trusted domain information available for idmap_ad environment BUG: https://bugzilla.samba.org/show_bug.cgi?id=13903 Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 281fb81ab1c72831c752be44fd1bfdcfd10bd798) commit dcbffbb308467e2ba3082943aa0e1db097f0fa72 Author: Christof Schmitt <c...@samba.org> Date: Wed Apr 17 16:12:27 2019 -0700 selftest: Use fl2008r2dc for ad_member_idmap_ad fl2008r2dc already has a trusted domain. That will be used to use idmap_ad for querying idmap attributes from the trusted domain. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13903 Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit 8266bd1f45d1b5b2a61d84006ab8e8e1ed0e52a9) commit 0861417bf9d6bf499286d7042b7e306d156dda01 Author: Christof Schmitt <c...@samba.org> Date: Mon Apr 22 16:15:20 2019 -0700 selftest: Add gid-to-sid lookup to idmap_ad test BUG: https://bugzilla.samba.org/show_bug.cgi?id=13903 Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> (cherry picked from commit d7b5ad5e6159c224f70bea782bbdc46059e67978) commit d4d41f0d20d4a0a44b86b339c3e9def9b6050ca3 Author: Gary Lockyer <g...@catalyst.net.nz> Date: Thu Apr 18 10:23:22 2019 +1200 lib util debug: Increase format buffer to 4KiB Increase the debug line buffer to 4KiB, the existing size of 1KiB is too small for dsdbChange JSON audit messages. These messages were then split across multipe lines causing issues in log ingestion tools expecting single line messages. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13902 Signed-off-by: Gary Lockyer <g...@catalyst.net.nz> Reviewed-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Autobuild-User(master): Gary Lockyer <g...@samba.org> Autobuild-Date(master): Mon May 6 01:18:22 UTC 2019 on sn-devel-184 (cherry picked from commit ad3af7cdffb98b7998857db609548fc96f60c669) commit bba9f065003b0688836688a5a40dfc587c6f72fc Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Fri Apr 5 09:25:15 2019 +1300 pytests/dns: use 2.6 compatible syntax BUG: https://bugzilla.samba.org/show_bug.cgi?id=13886 Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> ----------------------------------------------------------------------- Summary of changes: ctdb/common/event_script.c | 3 +- ctdb/common/run_proc.c | 7 +- ctdb/common/sock_daemon.c | 2 +- ctdb/server/ctdb_daemon.c | 48 +++- ctdb/server/ctdb_recoverd.c | 2 +- ctdb/tests/complex/11_ctdb_delip_removes_ip.sh | 10 +- ctdb/tests/complex/18_ctdb_reloadips.sh | 43 ++- ctdb/tests/complex/32_cifs_tickle.sh | 8 - ctdb/tests/complex/36_smb_reset_server.sh | 12 +- ctdb/tests/complex/37_nfs_reset_server.sh | 4 +- ctdb/tests/complex/60_rogueip_releaseip.sh | 2 +- ctdb/tests/complex/scripts/local.bash | 5 +- ctdb/tests/run_tests.sh | 2 +- ctdb/tests/scripts/integration.bash | 71 +++-- ctdb/tests/simple/02_ctdb_listvars.sh | 3 +- ctdb/tests/simple/03_ctdb_getvar.sh | 3 +- ctdb/tests/simple/05_ctdb_listnodes.sh | 5 +- ctdb/tests/simple/08_ctdb_isnotrecmaster.sh | 10 +- ctdb/tests/simple/09_ctdb_ping.sh | 6 +- ctdb/tests/simple/11_ctdb_ip.sh | 27 +- ctdb/tests/simple/12_ctdb_getdebug.sh | 3 +- ctdb/tests/simple/14_ctdb_statistics.sh | 2 +- ctdb/tests/simple/15_ctdb_statisticsreset.sh | 21 +- ctdb/tests/simple/18_ctdb_reloadips.sh | 70 +++-- ctdb/tests/simple/19_ip_takeover_noop.sh | 4 +- ctdb/tests/simple/20_delip_iface_gc.sh | 10 +- ctdb/tests/simple/21_ctdb_attach.sh | 49 ++-- ctdb/tests/simple/23_ctdb_moveip.sh | 25 +- ctdb/tests/simple/24_ctdb_getdbmap.sh | 10 +- ctdb/tests/simple/25_dumpmemory.sh | 9 +- ..._ctdb_config_check_error_on_unreachable_ctdb.sh | 6 +- ctdb/tests/simple/27_ctdb_detach.sh | 71 +++-- ctdb/tests/simple/35_ctdb_getreclock.sh | 2 +- ctdb/tests/simple/51_message_ring.sh | 14 +- ctdb/tests/simple/52_fetch_ring.sh | 14 +- ctdb/tests/simple/53_transaction_loop.sh | 4 +- ctdb/tests/simple/54_transaction_loop_recovery.sh | 4 +- ctdb/tests/simple/55_ctdb_ptrans.sh | 12 +- .../simple/56_replicated_transaction_recovery.sh | 4 +- ctdb/tests/simple/58_ctdb_restoredb.sh | 8 +- ctdb/tests/simple/69_recovery_resurrect_deleted.sh | 10 +- ctdb/tests/simple/70_recoverpdbbyseqnum.sh | 4 +- ctdb/tests/simple/71_ctdb_wipedb.sh | 4 +- ctdb/tests/simple/72_update_record_persistent.sh | 4 +- ctdb/tests/simple/75_readonly_records_basic.sh | 24 +- ctdb/tests/simple/77_ctdb_db_recovery.sh | 6 +- ctdb/tests/simple/79_volatile_db_traverse.sh | 4 +- ctdb/tests/simple/80_ctdb_traverse.sh | 2 +- ctdb/tests/simple/81_tunnel_ring.sh | 14 +- ctdb/tests/simple/90_debug_hung_script.sh | 6 +- ctdb/tools/ctdb.c | 10 +- ctdb/wscript | 2 +- lib/torture/torture.h | 8 +- lib/util/debug.c | 2 +- lib/util/debug_s3.c | 46 ++- nsswitch/tests/test_idmap_ad.sh | 137 ++++++++- python/samba/tests/dns.py | 2 +- selftest/target/Samba3.pm | 11 +- source3/client/smbspool.c | 2 +- source3/modules/vfs_ceph.c | 9 +- source3/rpc_server/eventlog/srv_eventlog_nt.c | 4 +- source3/selftest/tests.py | 2 +- source3/smbd/filename.c | 72 ++++- source3/smbd/reply.c | 4 + source3/smbd/smb2_getinfo.c | 9 + source3/smbd/smb2_server.c | 3 + source3/smbd/trans2.c | 57 ++++ source3/utils/smbcacls.c | 4 +- source3/utils/smbcquotas.c | 4 +- source3/winbindd/idmap_tdb2.c | 4 +- source3/winbindd/wb_xids2sids.c | 12 +- source4/auth/gensec/gensec_gssapi.c | 9 +- source4/libcli/raw/interfaces.h | 16 +- source4/libcli/raw/rawfileinfo.c | 11 + source4/libcli/raw/trans2.h | 1 + source4/ntvfs/ntvfs_generic.c | 2 + source4/ntvfs/posix/pvfs_qfileinfo.c | 2 + source4/ntvfs/posix/vfs_posix.c | 2 +- source4/torture/gentest.c | 4 + source4/torture/rpc/drsuapi_cracknames.c | 8 +- source4/torture/smb2/getinfo.c | 311 +++++++++++++++++++++ source4/torture/smb2/streams.c | 115 ++++++++ source4/torture/vfs/fruit.c | 2 +- 83 files changed, 1229 insertions(+), 351 deletions(-) Changeset truncated at 500 lines: diff --git a/ctdb/common/event_script.c b/ctdb/common/event_script.c index 8978d1452c0..8bdfdd0b5ca 100644 --- a/ctdb/common/event_script.c +++ b/ctdb/common/event_script.c @@ -117,7 +117,8 @@ int event_script_get_list(TALLOC_CTX *mem_ctx, } *out = script_list; - return 0; + ret = 0; + goto done; nomem: ret = ENOMEM; diff --git a/ctdb/common/run_proc.c b/ctdb/common/run_proc.c index 037b6d9651d..0c3c1de72fe 100644 --- a/ctdb/common/run_proc.c +++ b/ctdb/common/run_proc.c @@ -302,13 +302,15 @@ again: proc->fd = -1; } + DLIST_REMOVE(run_ctx->plist, proc); + /* Active run_proc request */ if (proc->req != NULL) { run_proc_done(proc->req); + } else { + talloc_free(proc); } - DLIST_REMOVE(run_ctx->plist, proc); - goto again; } @@ -426,6 +428,7 @@ static void run_proc_done(struct tevent_req *req) if (state->proc->output != NULL) { state->output = talloc_steal(state, state->proc->output); } + talloc_steal(state, state->proc); tevent_req_done(req); } diff --git a/ctdb/common/sock_daemon.c b/ctdb/common/sock_daemon.c index e5e16f8af12..6298653f4ec 100644 --- a/ctdb/common/sock_daemon.c +++ b/ctdb/common/sock_daemon.c @@ -893,7 +893,7 @@ static void sock_daemon_run_socket_fail(struct tevent_req *subreq) subreq, struct tevent_req); struct sock_daemon_run_state *state = tevent_req_data( req, struct sock_daemon_run_state); - const char *sockpath = NULL; + const char *sockpath = "INVALID"; int ret = 0; bool status; diff --git a/ctdb/server/ctdb_daemon.c b/ctdb/server/ctdb_daemon.c index 8247859f9b5..ca98be6a100 100644 --- a/ctdb/server/ctdb_daemon.c +++ b/ctdb/server/ctdb_daemon.c @@ -928,6 +928,44 @@ static int ctdb_clientpid_destructor(struct ctdb_client_pid_list *client_pid) return 0; } +static int get_new_client_id(struct reqid_context *idr, + struct ctdb_client *client, + uint32_t *out) +{ + uint32_t client_id; + + client_id = reqid_new(idr, client); + /* + * Some places in the code (e.g. ctdb_control_db_attach(), + * ctdb_control_db_detach()) assign a special meaning to + * client_id 0. The assumption is that if client_id is 0 then + * the control has come from another daemon. Therefore, we + * should never return client_id == 0. + */ + if (client_id == 0) { + /* + * Don't leak ID 0. This is safe because the ID keeps + * increasing. A test will be added to ensure that + * this doesn't change. + */ + reqid_remove(idr, 0); + + client_id = reqid_new(idr, client); + } + + if (client_id == REQID_INVALID) { + return EINVAL; + } + + if (client_id == 0) { + /* Every other ID must have been used and we can't use 0 */ + reqid_remove(idr, 0); + return EINVAL; + } + + *out = client_id; + return 0; +} static void ctdb_accept_client(struct tevent_context *ev, struct tevent_fd *fde, uint16_t flags, @@ -971,7 +1009,15 @@ static void ctdb_accept_client(struct tevent_context *ev, client->ctdb = ctdb; client->fd = fd; - client->client_id = reqid_new(ctdb->idr, client); + + ret = get_new_client_id(ctdb->idr, client, &client->client_id); + if (ret != 0) { + DBG_ERR("Unable to get client ID (%d)\n", ret); + close(fd); + talloc_free(client); + return; + } + client->pid = peer_pid; client_pid = talloc(client, struct ctdb_client_pid_list); diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index 469fd21b463..88ef3b1c5a0 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -1135,7 +1135,7 @@ static int helper_run(struct ctdb_recoverd *rec, TALLOC_CTX *mem_ctx, state->done = false; - fde = tevent_add_fd(rec->ctdb->ev, rec->ctdb, state->fd[0], + fde = tevent_add_fd(rec->ctdb->ev, state, state->fd[0], TEVENT_FD_READ, helper_handler, state); if (fde == NULL) { goto fail; diff --git a/ctdb/tests/complex/11_ctdb_delip_removes_ip.sh b/ctdb/tests/complex/11_ctdb_delip_removes_ip.sh index d6a3b3c04ff..a41be09eab1 100755 --- a/ctdb/tests/complex/11_ctdb_delip_removes_ip.sh +++ b/ctdb/tests/complex/11_ctdb_delip_removes_ip.sh @@ -25,8 +25,8 @@ ctdb_restart_when_done select_test_node_and_ips get_test_ip_mask_and_iface -echo "Checking that node ${test_node} hosts ${test_ip} on interface ${iface}..." -try_command_on_node $test_node "ip addr show dev $iface | grep -E 'inet6?[[:space:]]*${test_ip}/'" +echo "Checking that node ${test_node} hosts ${test_ip}..." +try_command_on_node $test_node "ip addr show to ${test_ip} | grep -q ." echo "Attempting to remove ${test_ip} from node ${test_node}." try_command_on_node $test_node $CTDB delip $test_ip @@ -36,10 +36,10 @@ wait_until_ips_are_on_node '!' $test_node $test_ip timeout=60 increment=5 count=0 -echo "Waiting for ${test_ip} to disappear from ${iface}..." +echo "Waiting for ${test_ip} to disappear from node ${test_node}..." while : ; do - try_command_on_node -v $test_node "ip addr show dev $iface" - if echo "$out" | grep -E 'inet6?[[:space:]]*${test_ip}/'; then + try_command_on_node -v $test_node "ip addr show to ${test_node}" + if -n "$out" ; then echo "Still there..." if [ $(($count * $increment)) -ge $timeout ] ; then echo "BAD: Timed out waiting..." diff --git a/ctdb/tests/complex/18_ctdb_reloadips.sh b/ctdb/tests/complex/18_ctdb_reloadips.sh index e0632f30564..d6efc6bf631 100755 --- a/ctdb/tests/complex/18_ctdb_reloadips.sh +++ b/ctdb/tests/complex/18_ctdb_reloadips.sh @@ -51,12 +51,12 @@ select_test_node_and_ips echo "Getting public IP information from CTDB..." try_command_on_node any "$CTDB ip -X -v all" -ctdb_ip_info=$(echo "$out" | awk -F'|' 'NR > 1 { print $2, $3, $5 }') +ctdb_ip_info=$(awk -F'|' 'NR > 1 { print $2, $3, $5 }' "$outfile") echo "Getting IP information from interfaces..." try_command_on_node all "ip addr show" -ip_addr_info=$(echo "$out" | \ - awk '$1 == "inet" { ip = $2; sub(/\/.*/, "", ip); print ip }') +ip_addr_info=$(awk '$1 == "inet" { ip = $2; sub(/\/.*/, "", ip); print ip }' \ + "$outfile") prefix="" for b in $(seq 0 255) ; do @@ -171,7 +171,7 @@ check_ips () try_command_on_node $test_node "ip addr show dev ${iface}" local ip_addrs_file=$(mktemp) - echo "$out" | \ + cat "$outfile" | \ sed -n -e "s@.*inet * \(${prefix//./\.}\.[0-9]*\)/.*@\1@p" | \ sort >"$ip_addrs_file" @@ -187,6 +187,33 @@ check_ips () fi } +# ctdb reloadips will fail if it can't disable takover runs. The most +# likely reason for this is that there is already a takeover run in +# progress. We can't predict when this will happen, so retry if this +# occurs. +do_ctdb_reloadips () +{ + local retry_max=10 + local retry_count=0 + while : ; do + if try_command_on_node "$test_node" "$CTDB reloadips" ; then + return 0 + fi + + if [ "$out" != "Failed to disable takeover runs" ] ; then + return 1 + fi + + if [ $retry_count -ge $retry_max ] ; then + return 1 + fi + + retry_count=$((retry_count + 1)) + echo "Retrying..." + sleep_for 1 + done +} + #################### new_ip_max=100 @@ -196,7 +223,7 @@ new_ip_max=100 add_ips_to_original_config \ $test_node "$addresses" "$iface" "$prefix" 1 $new_ip_max -try_command_on_node $test_node "$CTDB reloadips" +do_ctdb_reloadips check_ips $test_node "$iface" "$prefix" 1 $new_ip_max @@ -210,7 +237,7 @@ echo "Using 'ctdb reloadips' to remove the 1st address just added..." add_ips_to_original_config \ $test_node "$addresses" "$iface" "$prefix" 2 $new_ip_max -try_command_on_node $test_node "$CTDB reloadips" +do_ctdb_reloadips check_ips $test_node "$iface" "$prefix" 2 $new_ip_max @@ -225,7 +252,7 @@ echo "Updating to include only about 1/2 of the new IPs..." add_ips_to_original_config \ $test_node "$addresses" "$iface" "$prefix" $start $new_ip_max -try_command_on_node $test_node "$CTDB reloadips" +do_ctdb_reloadips check_ips $test_node "$iface" "$prefix" $start $new_ip_max @@ -237,6 +264,6 @@ try_command_on_node any $CTDB sync echo "Restoring original IP configuration..." restore_public_addresses -try_command_on_node $test_node "$CTDB reloadips" +do_ctdb_reloadips check_ips $test_node "$iface" "$prefix" 0 diff --git a/ctdb/tests/complex/32_cifs_tickle.sh b/ctdb/tests/complex/32_cifs_tickle.sh index 366824501da..ac00d449293 100755 --- a/ctdb/tests/complex/32_cifs_tickle.sh +++ b/ctdb/tests/complex/32_cifs_tickle.sh @@ -64,14 +64,6 @@ echo "Source socket is $src_socket" # we sometimes beat the registration. echo "Checking if CIFS connection is tracked by CTDB on test node..." wait_until 10 check_tickles $test_node $test_ip $test_port $src_socket -echo "$out" - -if [ "${out/SRC: ${src_socket} /}" != "$out" ] ; then - echo "GOOD: CIFS connection tracked OK by CTDB." -else - echo "BAD: Socket not tracked by CTDB." - testfailures=1 -fi # This is almost immediate. However, it is sent between nodes # asynchonously, so it is worth checking... diff --git a/ctdb/tests/complex/36_smb_reset_server.sh b/ctdb/tests/complex/36_smb_reset_server.sh index beff1a22014..c55cb9f251e 100755 --- a/ctdb/tests/complex/36_smb_reset_server.sh +++ b/ctdb/tests/complex/36_smb_reset_server.sh @@ -62,16 +62,8 @@ echo "Source socket is $src_socket" # This should happen as soon as connection is up... but unless we wait # we sometimes beat the registration. -echo "Checking if CIFS connection is tracked by CTDB on test node..." +echo "Waiting until SMB connection is tracked by CTDB on test node..." wait_until 10 check_tickles $test_node $test_ip $test_port $src_socket -echo "$out" - -if [ "${out/SRC: ${src_socket} /}" != "$out" ] ; then - echo "GOOD: CIFS connection tracked OK by CTDB." -else - echo "BAD: Socket not tracked by CTDB." - exit 1 -fi # It would be nice if ss consistently used local/peer instead of src/dst ss_filter="src ${test_ip}:${test_port} dst ${src_socket}" @@ -83,7 +75,7 @@ if [ -z "$out" ] ; then exit 1 fi echo "GOOD: ss lists the socket:" -echo "$out" +cat "$outfile" echo "Disabling node $test_node" try_command_on_node 1 $CTDB disable -n $test_node diff --git a/ctdb/tests/complex/37_nfs_reset_server.sh b/ctdb/tests/complex/37_nfs_reset_server.sh index 07bd034d6c7..e38d4510d49 100755 --- a/ctdb/tests/complex/37_nfs_reset_server.sh +++ b/ctdb/tests/complex/37_nfs_reset_server.sh @@ -63,7 +63,7 @@ echo "Source socket is $src_socket" echo "Wait until NFS connection is tracked by CTDB on test node ..." wait_until $((monitor_interval * 2)) \ check_tickles $test_node $test_ip $test_port $src_socket -echo "$out" +cat "$outfile" # It would be nice if ss consistently used local/peer instead of src/dst ss_filter="src ${test_ip}:${test_port} dst ${src_socket}" @@ -75,7 +75,7 @@ if [ -z "$out" ] ; then exit 1 fi echo "GOOD: ss lists the socket:" -echo "$out" +cat "$outfile" echo "Disabling node $test_node" try_command_on_node 1 $CTDB disable -n $test_node diff --git a/ctdb/tests/complex/60_rogueip_releaseip.sh b/ctdb/tests/complex/60_rogueip_releaseip.sh index 0daf289c83a..7e2f89a1e3b 100755 --- a/ctdb/tests/complex/60_rogueip_releaseip.sh +++ b/ctdb/tests/complex/60_rogueip_releaseip.sh @@ -34,7 +34,7 @@ for i in $all_pnns ; do continue fi try_command_on_node $i "$CTDB ip" - n=$(awk -v ip="$test_ip" '$1 == ip { print }' <<<"$out") + n=$(awk -v ip="$test_ip" '$1 == ip { print }' "$outfile") if [ -n "$n" ] ; then other_node="$i" break diff --git a/ctdb/tests/complex/scripts/local.bash b/ctdb/tests/complex/scripts/local.bash index 7787de8f111..787f597edcc 100644 --- a/ctdb/tests/complex/scripts/local.bash +++ b/ctdb/tests/complex/scripts/local.bash @@ -67,7 +67,7 @@ check_tickles () local src_socket="$4" try_command_on_node $node ctdb gettickles $test_ip $test_port # SRC: 10.0.2.45:49091 DST: 10.0.2.143:445 - [ "${out/SRC: ${src_socket} /}" != "$out" ] + grep -Fq "SRC: ${src_socket} " "$outfile" } check_tickles_all () @@ -79,8 +79,7 @@ check_tickles_all () try_command_on_node all ctdb gettickles $test_ip $test_port # SRC: 10.0.2.45:49091 DST: 10.0.2.143:445 - local t="${src_socket//./\\.}" - local count=$(grep -E -c "SRC: ${t} " <<<"$out" || true) + local count=$(grep -Fc "SRC: ${src_socket} " "$outfile" || true) [ $count -eq $numnodes ] } diff --git a/ctdb/tests/run_tests.sh b/ctdb/tests/run_tests.sh index 8eead527b33..3c7e794d251 100755 --- a/ctdb/tests/run_tests.sh +++ b/ctdb/tests/run_tests.sh @@ -7,7 +7,7 @@ Usage: $0 [OPTIONS] [TESTS] Options: -A Use "cat -A" to print test output (only some tests) -c Run integration tests on a cluster - -C Clean up - kill daemons and remove TEST_VAR_DIR when done + -C Remove TEST_VAR_DIR when done -d Print descriptions of tests instead of filenames (dodgy!) -D Show diff between failed/expected test output (some tests only) -e Exit on the first test failure diff --git a/ctdb/tests/scripts/integration.bash b/ctdb/tests/scripts/integration.bash index 3750c442eba..e0aa312192b 100644 --- a/ctdb/tests/scripts/integration.bash +++ b/ctdb/tests/scripts/integration.bash @@ -77,7 +77,20 @@ ctdb_test_init () ######################################## -# Sets: $out +# Sets: $out, $outfile +# * The first 1KB of output is put into $out +# * Tests should use $outfile for handling large output +# * $outfile is removed after each test +out="" +outfile="${TEST_VAR_DIR}/try_command_on_node.out" + +outfile_cleanup () +{ + rm -f "$outfile" +} + +ctdb_test_exit_hook_add outfile_cleanup + try_command_on_node () { local nodespec="$1" ; shift @@ -96,16 +109,19 @@ try_command_on_node () local cmd="$*" - out=$(onnode -q $onnode_opts "$nodespec" "$cmd" 2>&1) || { + local status=0 + onnode -q $onnode_opts "$nodespec" "$cmd" >"$outfile" 2>&1 || status=$? + out=$(dd if="$outfile" bs=1k count=1 2>/dev/null) + if [ $status -ne 0 ] ; then echo "Failed to execute \"$cmd\" on node(s) \"$nodespec\"" - echo "$out" + cat "$outfile" return 1 - } + fi if $verbose ; then echo "Output of \"$cmd\":" - echo "$out" + cat "$outfile" fi } @@ -113,11 +129,10 @@ sanity_check_output () { local min_lines="$1" local regexp="$2" # Should be anchored as necessary. - local output="$3" local ret=0 - local num_lines=$(echo "$output" | wc -l) + local num_lines=$(wc -l <"$outfile") echo "There are $num_lines lines of output" if [ $num_lines -lt $min_lines ] ; then echo "BAD: that's less than the required number (${min_lines})" @@ -126,7 +141,7 @@ sanity_check_output () local status=0 local unexpected # local doesn't pass through status of command on RHS. - unexpected=$(echo "$output" | egrep -v "$regexp") || status=$? + unexpected=$(grep -Ev "$regexp" "$outfile") || status=$? # Note that this is reversed. if [ $status -eq 0 ] ; then @@ -140,30 +155,7 @@ sanity_check_output () return $ret } -sanity_check_ips () -{ - local ips="$1" # list of "ip node" lines - - echo "Sanity checking IPs..." - - local x ipp prev - prev="" - while read x ipp ; do - [ "$ipp" = "-1" ] && break - if [ -n "$prev" -a "$ipp" != "$prev" ] ; then - echo "OK" - return 0 - fi - prev="$ipp" - done <<<"$ips" - - echo "BAD: a node was -1 or IPs are only assigned to one node:" - echo "$ips" - echo "Are you running an old version of CTDB?" - return 1 -} - -# This returns a list of "ip node" lines in $out +# This returns a list of "ip node" lines in $outfile all_ips_on_node() { local node="$1" @@ -184,9 +176,9 @@ _select_test_node_and_ips () test_node="$pnn" fi if [ "$pnn" = "$test_node" ] ; then - test_node_ips="${test_node_ips}${test_node_ips:+ }${ip}" + test_node_ips="${test_node_ips}${test_node_ips:+ }${ip}" fi - done <<<"$out" # bashism to avoid problem setting variable in pipeline. + done <"$outfile" echo "Selected node ${test_node} with IPs: ${test_node_ips}." test_ip="${test_node_ips%% *}" -- Samba Shared Repository