[SCM] Samba Shared Repository - branch v4-10-test updated

Karolin Seeger kseeger at samba.org
Wed Mar 6 00:35:07 UTC 2019


The branch, v4-10-test has been updated
       via  9169e9722d6 VERSION: Bump version up to 4.10.0rc5...
       via  e399a0209f4 VERSION: Disable GIT_SNAPSHOT for the 4.10.0rc4 release.
       via  74aa2abf861 WHATSNEW: Add release notes for Samba 4.10.0rc4.
       via  a65f7b71a25 WHATSNEW: Add some detail on the changes to paged results
       via  3fe0c3031e6 fix samba-tool gpo backup syntax in WHATSNEW.txt
       via  19b2885de7c vfs_ceph: remove ceph_fallocate/ceph_ftruncate fallback
       via  3332a895ed1 vfs_ceph: fix strict_allocate_ftruncate()
       via  0a784f28b46 vfs_ceph: add missing fallocate hook
       via  0c034112280 s3: smbd: filenames - ensure we replace the missing '/' if we error in an intermediate POSIX path.
       via  b58c6f1f8b0 s3: torture: Add additional POSIX mkdir tests.
       via  179db55a3bb smbd: unix_convert: Ensure we don't call get_real_filename on POSIX paths.
       via  230c557e2f7 smbd: SMB1-POSIX: Add missing info-level SMB_POSIX_PATH_OPEN for UCF_UNIX_NAME_LOOKUP flag.
       via  f765b515814 s3: smbtorture3: Add POSIX-MKDIR test for posix_mkdir case sensitive bug.
       via  ce4c9c40fab winbindd: set idmap cache entries as the last step in async wb_xids2sids
       via  3b9ef9090a9 winbindd: track whether a result from xid2sid was coming from the cache
       via  3577293313c winbindd: switch send-next/done order
       via  e9ffadb2b21 winbindd: update xid in wb_xids2sids_state->xids with what we got
       via  406a1cdff42 winbindd: convert id to a pointer in wb_xids2sids_dom_done()
       via  f877231507e winbindd: make xids a const argument to wb_xids2sids_send()
       via  07820a3144f winbindd: make a copy of xid's in wb_xids2sids_send()
       via  e0720c16c43 ctdb-cluster-mutex: Separate out command and file handling
       via  c39430b0ae6 ctdb-tests: Add a test for configuring the recovery lock as a command
       via  75fcaea7251 ctdb-tests: Add -R option for local daemons to use recovery lock command
       via  6ac45076549 ctdb-tests: Force test failure if local daemon setup fails
       via  d7fe81405aa ctdb-recoverd: Time out attempt to take recovery lock after 120s
       via  bf774b81051 ctdb-recoverd: Ban node on unknown error when taking recovery lock
       via  5a060f07469 ctdb-recoverd: Make recoverd context available in recovery lock handle
       via  04baa822c40 ctdb-recoverd: Clean up logging on failure to take recovery lock
       via  6ee34859e86 ctdb-recoverd: Free cluster mutex handler on failure to take lock
       via  a4a8351c1f3 ctdb-tests: Add test for ctdb_io.c
       via  8d28f78bfd7 ctdb: buffer write beyond limits
       via  b69bb1f7619 ctdb-config: Change example recovery lock setting to one that fails
       via  caf15a440a2 messages_dgm: Properly handle receiver re-initialization
       via  d3a84988073 torture3: Extend read3 for the "messaging target re-inits" failure
       via  5b7e33f0556 messages_dgm: Use saved errno value
       via  da238723afe man pages: document prefork process model
       via  a2f740691a7 notifyd: Fix SIGBUS on sparc
      from  97fcdfb58a7 CVE-2019-3824 ldb: version 1.5.4

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-10-test


- Log -----------------------------------------------------------------
commit 9169e9722d65209a4fcb22a63823a813e9690f0f
Author: Karolin Seeger <kseeger at samba.org>
Date:   Tue Mar 5 11:21:02 2019 +0100

    VERSION: Bump version up to 4.10.0rc5...
    
    and re-enable GIT_SNAPSHOT.
    
    Signed-off-by: Karolin Seeger <kseeger at samba.org>
    
    Autobuild-User(v4-10-test): Karolin Seeger <kseeger at samba.org>
    Autobuild-Date(v4-10-test): Wed Mar  6 00:34:53 UTC 2019 on sn-devel-144

commit e399a0209f4607ddaaec2ba8f6efd56149495652
Author: Karolin Seeger <kseeger at samba.org>
Date:   Tue Mar 5 11:20:16 2019 +0100

    VERSION: Disable GIT_SNAPSHOT for the 4.10.0rc4 release.
    
    Signed-off-by: Karolin Seeger <kseeger at samba.org>

commit 74aa2abf8614a0a5f6352959d4fc5af61cf1df8e
Author: Karolin Seeger <kseeger at samba.org>
Date:   Tue Mar 5 11:19:43 2019 +0100

    WHATSNEW: Add release notes for Samba 4.10.0rc4.
    
    Signed-off-by: Karolin Seeger <kseeger at samba.org>

commit a65f7b71a2533b393e4d150fc1d0b07576dd95a0
Author: Garming Sam <garming at catalyst.net.nz>
Date:   Thu Feb 28 16:21:57 2019 +1300

    WHATSNEW: Add some detail on the changes to paged results
    
    Signed-off-by: Garming Sam <garming at catalyst.net.nz>

commit 3fe0c3031e6cc4848e069c7ab916ac79d7f2692c
Author: Denis Cardon <dcardon at tranquil.it>
Date:   Fri Feb 15 15:35:46 2019 +0100

    fix samba-tool gpo backup syntax in WHATSNEW.txt
    
    Signed-off-by: Denis Cardon <dcardon at tranquil.it>

commit 19b2885de7c0ea8ea720603238a40f1f15e895e0
Author: David Disseldorp <ddiss at samba.org>
Date:   Wed Feb 27 11:52:42 2019 +0100

    vfs_ceph: remove ceph_fallocate/ceph_ftruncate fallback
    
    Both libcephfs functions are supported and capable of extending files,
    so fallback can be dropped.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13807
    
    Signed-off-by: David Disseldorp <ddiss at samba.org>
    Reviewed-by: Guenther Deschner <gd at samba.org>
    (cherry picked from commit 155f1289ba7a4802fbb99fbc9ea90d8bc6cff0c9)

commit 3332a895ed1f1f831ed723cec101b25039364f0c
Author: David Disseldorp <ddiss at samba.org>
Date:   Tue Feb 26 16:07:27 2019 +0100

    vfs_ceph: fix strict_allocate_ftruncate()
    
    The vfs_ceph "strict allocate = yes" ftruncate wrapper may attempt
    *local* filesystem ftruncate(). Fix this.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13807
    
    Signed-off-by: David Disseldorp <ddiss at samba.org>
    Reviewed-by: Guenther Deschner <gd at samba.org>
    (cherry picked from commit 70329c36ed91dd0e50ff66f9b0a85c62ac8a621e)

commit 0a784f28b466e31c62156a37f5b39c933a06aa2c
Author: David Disseldorp <ddiss at samba.org>
Date:   Tue Feb 26 21:26:27 2019 +0100

    vfs_ceph: add missing fallocate hook
    
    SMB_VFS_FALLOCATE() calls atop a vfs_ceph share currently fall through
    to vfs_default, which results in a local filesystem I/O attempt using a
    libcephfs file-descriptor. Add the missing fallocate hook to vfs_ceph.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13807
    
    Signed-off-by: David Disseldorp <ddiss at samba.org>
    Reviewed-by: Guenther Deschner <gd at samba.org>
    (cherry picked from commit 5a7e7280813559fb70a9fc8e4238cb6015ee3b53)

commit 0c034112280af8d309ba68bcae2473ebae0fa1ef
Author: Jeremy Allison <jra at samba.org>
Date:   Sun Feb 24 08:15:23 2019 -0800

    s3: smbd: filenames - ensure we replace the missing '/' if we error in an intermediate POSIX path.
    
    Previous regression test ensures we still return the correct
    error code for POSIX pathname operations.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13803
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    
    Autobuild-User(master): Volker Lendecke <vl at samba.org>
    Autobuild-Date(master): Mon Feb 25 09:33:27 CET 2019 on sn-devel-144
    
    (cherry picked from commit 3f1a13a94a753c5cb3b9f2cf795df5adb0f74205)

commit b58c6f1f8b06847a0e5997ccbf31d1458828afaa
Author: Jeremy Allison <jra at samba.org>
Date:   Sun Feb 24 08:03:32 2019 -0800

    s3: torture: Add additional POSIX mkdir tests.
    
    Ensure that if POSIX_foo exists as a file
    we return the correct error code NT_STATUS_OBJECT_PATH_NOT_FOUND
    if we try and traverse it as a directory.
    
    Also ensure creation/deletion of POSIX_foo/foo fails
    for directories and files with NT_STATUS_OBJECT_PATH_NOT_FOUND
    if the directory POSIX_foo/ doesn't exist.
    
    knownfail is back :-).
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13803
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit 632d0db8c42d50f5eecd002d9573f739cd945960)

commit 179db55a3bb601e400d932955087da0dc6acee17
Author: Jeremy Allison <jra at samba.org>
Date:   Sat Feb 23 12:24:31 2019 -0800

    smbd: unix_convert: Ensure we don't call get_real_filename on POSIX paths.
    
    For posix_pathnames don't blunder into the name_has_wildcard OR
    get_real_filename() codepaths as they may be doing case insensitive lookups.
    So when creating a new POSIX directory 'Foo' they might
    match on name 'foo'.
    
    Remove POSIX-MKDIR from knownfail.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13803
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    
    Autobuild-User(master): Volker Lendecke <vl at samba.org>
    Autobuild-Date(master): Sun Feb 24 14:04:14 CET 2019 on sn-devel-144
    
    (cherry picked from commit 12da33e2bbce657f25abe9bc4cb936ca4615b30f)

commit 230c557e2f741136d418fa227d2dddd26d243b9a
Author: Jeremy Allison <jra at samba.org>
Date:   Sat Feb 23 12:26:01 2019 -0800

    smbd: SMB1-POSIX: Add missing info-level SMB_POSIX_PATH_OPEN for UCF_UNIX_NAME_LOOKUP flag.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13803
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit 980db8debde68f9edce13fc01bc45a904379cffd)

commit f765b515814b6b9884e8e563ac4a61c9d34a39b3
Author: Jeremy Allison <jra at samba.org>
Date:   Sat Feb 23 17:52:34 2019 -0800

    s3: smbtorture3: Add POSIX-MKDIR test for posix_mkdir case sensitive bug.
    
    Test does:
    
    mkdir POSIX_foo
    mkdir POSIX_Foo
    mkdir POSIX_foo/Foo
    mkdir POSIX_foo/foo
    mkdir POSIX_Foo/Foo
    mkdir POSIX_Foo/foo
    
    Which should pass a SMB1 POSIX extensions server
    as posix mkdir should always be case sensitive
    no matter what the share is set to.
    
    Mark as knownfail for now.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13803
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit f0decb31fff24ceb57d23bebbfb87aa0e5103947)

commit ce4c9c40fabd5094fa5c28939897e34bc720b4f8
Author: Ralph Boehme <slow at samba.org>
Date:   Thu Feb 21 16:55:09 2019 +0100

    winbindd: set idmap cache entries as the last step in async wb_xids2sids
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13802
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    
    Autobuild-User(master): Volker Lendecke <vl at samba.org>
    Autobuild-Date(master): Sat Feb 23 09:23:22 CET 2019 on sn-devel-144
    
    (cherry picked from commit 9b9565c3e69b92c298c7168e516387bb249c9e36)

commit 3b9ef9090a9577a8d081d20532213ca28d29815c
Author: Ralph Boehme <slow at samba.org>
Date:   Fri Feb 22 11:00:00 2019 +0100

    winbindd: track whether a result from xid2sid was coming from the cache
    
    This is needed in preparation of moving the step to update the idmap
    cache from the per-idmap-domain callback wb_xids2sids_dom_done() to the
    top-level callback wb_xids2sids_done().
    
    Currently the sequence of action is:
    
    * check cache, if not found:
      * ask backends
      * cache result from backend
    * return results
    
    Iow, if we got something from the cache, we don't write the cache.
    
    The next commit defers updating the cache to the top-level callback, so
    the sequence becomes
    
    * check cache, if not found:
      * ask backends
    * cache results
    * return results
    
    This has two problems:
    
    * it needlessly writes to the cache what we just got from it
    
    * it possibly overwrites the ID_TYPE_BOTH for a SID-to-xid mapping in
      the following case:
    
      - existing ID_TYPE_BOTH mapping in the cache, eg:
    
        IDMAP/SID2XID/S-1-5-21-2180672342-2513613279-2566592647-512 -> Value: 3000000:B
    
      - someone calls wb_xids2sids_send() with xid.id=3000000,xid.type=ID_TYPE_GID
    
      - cache lookup with idmap_cache_find_gid2sid() succeeds
    
      - when caching results we'd call idmap_cache_set_sid2unixid() with the
        callers xid.type=ID_TYPE_GID, so idmap_cache_set_sid2unixid() will
        overwrite the SID-to-xid mapping with ID_TYPE_GID
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13802
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit 62f54229fced20102e11ad1da02faef45c2a7c2e)

commit 3577293313ccfbbc85226e1e1f8eeb208d9f9623
Author: Ralph Boehme <slow at samba.org>
Date:   Thu Feb 21 16:52:21 2019 +0100

    winbindd: switch send-next/done order
    
    In preparation of adding more logic to the done step. No change in
    behaviour.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13802
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit 8e9c2a1f6ceb06d695a6572701b96a3e3821ac42)

commit e9ffadb2b21c18bbd33c184947288d824d48dec1
Author: Ralph Boehme <slow at samba.org>
Date:   Thu Feb 21 18:40:20 2019 +0100

    winbindd: update xid in wb_xids2sids_state->xids with what we got
    
    In preparation of priming the idmap cache in the top-level
    wb_xids2sids_done(), not in the per-idmap-domain callback
    wb_xids2sids_dom_done().
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13802
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit 7f23ef7b2cf7bd6e8dc087aa15137292b421a689)

commit 406a1cdff424c407d7e7a33f32941184dadf62dd
Author: Ralph Boehme <slow at samba.org>
Date:   Thu Feb 21 18:39:46 2019 +0100

    winbindd: convert id to a pointer in wb_xids2sids_dom_done()
    
    No change in behaviour.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13802
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit f8bf4fc608639695651f75c52b31f95e796a5a26)

commit f877231507eae5e68def7fa4948d2b2792c14a0d
Author: Ralph Boehme <slow at samba.org>
Date:   Fri Feb 22 16:29:07 2019 +0100

    winbindd: make xids a const argument to wb_xids2sids_send()
    
    The previous commit made an internal copy of xids, this commit makes it
    more obvious that we must not mess with the xids argument but treat it as
    an in-parameter and don't write to it.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13802
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit 5d277ea7ea258676b9ea5081a451a5874af115f6)

commit 07820a3144f24253f9ddb64f40d76a3e80e6535d
Author: Ralph Boehme <slow at samba.org>
Date:   Thu Feb 21 18:34:51 2019 +0100

    winbindd: make a copy of xid's in wb_xids2sids_send()
    
    This is in preparation of setting the result of the mapping in the top-
    level callback wb_xids2sids_done(), not in the per-idmap-domain callback
    wb_xids2sids_dom_done().
    
    When caching the mapping we need the id-type from the backend, so we
    need a way to pass up that information from wb_xids2sids_dom_done() up
    to wb_xids2sids_done()
    
    The xids array copy gets passed from wb_xids2sids_send() to
    wb_xids2sids_dom_send(), so wb_xids2sids_dom_done() can then directly
    update the top-level copy.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13802
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit f5a8bc2f945be45cdade5f70d4f975bae8337f67)

commit e0720c16c430693b6eb444131560ff6661a65aba
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Jan 21 12:16:43 2019 +1100

    ctdb-cluster-mutex: Separate out command and file handling
    
    This code is difficult to read and there really is no common code
    between the 2 cases.  For example, there is no need to split a
    filename into words.  Separating each of the 2 cases into its own
    function makes the logic much easier to understand.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13800
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    
    Autobuild-User(master): Amitay Isaacs <amitay at samba.org>
    Autobuild-Date(master): Mon Feb 25 03:40:16 CET 2019 on sn-devel-144
    
    (cherry picked from commit c93430fe8fe530a55b9a04cf6cc660c3d420e333)

commit c39430b0ae6218dd987410b045fed65e18f39709
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Jan 21 12:15:33 2019 +1100

    ctdb-tests: Add a test for configuring the recovery lock as a command
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13800
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    (cherry picked from commit ebc082122fb34ffb8cbcafde9ad39bcc241d33ed)

commit 75fcaea7251ea02bc8cd575e9ec6787e45fe72cd
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Jan 21 12:13:29 2019 +1100

    ctdb-tests: Add -R option for local daemons to use recovery lock command
    
    Under the covers, a command is always used.  However, there is no way
    of testing of the code path where a command is explicitly configured.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13800
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    (cherry picked from commit e74f5243fcb7594939769c16f3c79ab167dd1227)

commit 6ac4507654960829469f6dbd11cd729a9521a7e0
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Jan 21 12:13:08 2019 +1100

    ctdb-tests: Force test failure if local daemon setup fails
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13800
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    (cherry picked from commit ce09d9c3e4c72ebec7a21686ae913398a5c9020f)

commit d7fe81405aa82cc7c623629b3419387671370725
Author: Martin Schwenke <martin at meltin.net>
Date:   Fri Feb 22 15:09:33 2019 +1100

    ctdb-recoverd: Time out attempt to take recovery lock after 120s
    
    Currently this will wait forever.  It really needs a timeout in case
    the cluster filesystem (or other lock mechanism) is completely wedged.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13800
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    (cherry picked from commit 13a1a4808935290dceb219daccd7aac3fda4e184)

commit bf774b81051bfe1f3e58c3b5d5c074415a9abf51
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Jan 10 14:01:57 2019 +1100

    ctdb-recoverd: Ban node on unknown error when taking recovery lock
    
    We really shouldn't see unknown errors.  They probably represent a
    misconfigured recovery lock or similar.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13800
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    (cherry picked from commit 45a77d65b2e39b4af94da4ab99575f4ee08a7ebd)

commit 5a060f07469ce477a43723d4d7d004b0cfb5cd31
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Jan 10 13:24:34 2019 +1100

    ctdb-recoverd: Make recoverd context available in recovery lock handle
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13800
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    (cherry picked from commit c0fb62ed3954fc6e8667480aba92003fc270f257)

commit 04baa822c4034772573e6b7e0a1079aa43ef1ced
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Jan 21 16:36:13 2019 +1100

    ctdb-recoverd: Clean up logging on failure to take recovery lock
    
    Add an explicit case for a timeout and clean up the other messages.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13800
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    (cherry picked from commit 7e4aae6943291c3144c8a3ff97537e8d4c7dc7c9)

commit 6ee34859e86ddc5870be9b9034b1e5a3901a2e4b
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Jan 21 16:28:28 2019 +1100

    ctdb-recoverd: Free cluster mutex handler on failure to take lock
    
    If nested events occur while the file descriptor handler is still
    active then chaos can ensue.  For example, if a node is banned and the
    lock is explicitly cancelled (e.g. due to election loss) then
    double-talloc-free()s abound.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13800
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    (cherry picked from commit 621658cbed5d91d7096fc208bac2ff93a1880e7d)

commit a4a8351c1f3fdbf43a1b55d611472a62b393fdcb
Author: Christof Schmitt <cs at samba.org>
Date:   Tue Feb 19 13:59:05 2019 -0700

    ctdb-tests: Add test for ctdb_io.c
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13791
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>
    
    Autobuild-User(master): Martin Schwenke <martins at samba.org>
    Autobuild-Date(master): Fri Feb 22 03:51:37 CET 2019 on sn-devel-144
    
    (cherry picked from commit 92a90524373a0348c1912d5019254dd18c07e207)

commit 8d28f78bfd73245471d90a1e779844997965c43c
Author: Swen Schillig <swen at linux.ibm.com>
Date:   Fri Feb 15 14:34:05 2019 +0100

    ctdb: buffer write beyond limits
    
    In order to calculate the number of bytes correctly which
    are to be read into the buffer, the buffer.offset must be taken
    into account.
    
    This patch fixes a regression introduced by 382705f495dd.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13791
    
    Signed-off-by: Swen Schillig <swen at linux.ibm.com>
    Reviewed-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>
    (cherry picked from commit fa8e69ac9538980c441b7fbefe0979027ecc8eac)

commit b69bb1f7619b84fb4f6bd50cfa56fdcc39c30c26
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Jan 10 14:15:18 2019 +1100

    ctdb-config: Change example recovery lock setting to one that fails
    
    ctdbd will start without a recovery lock configured.  It will log a
    message saying that this is not optimal.  However, a careless user may
    overlook both this message and the importance of setting a recovery
    lock.  If the existing example configuration is uncommented then the
    directory containing it will be created (by 01.reclock.script) and the
    failure (i.e. multiple nodes able to take the lock) will be confusing.
    
    Instead, change the example setting to one that will result in banned
    nodes, encouraging users to consciously configure (or deconfigure) the
    recovery lock.  Tweak the corresponding comment.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13790
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    (cherry picked from commit 82e7f38214896c2c200132bc6dde3348cfac16cc)

commit caf15a440a2b2800ebb6c00802def5886d7cd386
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Feb 7 16:15:46 2019 +0100

    messages_dgm: Properly handle receiver re-initialization
    
    This only properly covers the small-message nonblocking case. Covering
    the large-message and the blocking case is a much larger effort assuming
    we want to re-send the failed message if parts of the message has gone
    through properly. Don't do that for now.
    
    This was found by sanba_dnsupdate constantly recreating its irpc handle to
    winbindd in the RODC case.
    
    The messaging_dgm code cached connected datagram sockets based on the
    destination pid for 1 second. Which means the IRPC responses from
    winbindd are never delivered to samba_dnsupdate,
    which will then hit a timeout.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13786
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 2543bba0364d8054e9ad316f5611621841bc061d)

commit d3a849880730e70ebf35b8afaee4627df14692f2
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Feb 7 17:48:34 2019 +0100

    torture3: Extend read3 for the "messaging target re-inits" failure
    
    Do ping_pong a hundred times, re-initializing the msg_ctx every time.
    
    https://bugzilla.samba.org/show_bug.cgi?id=13786
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit 8d8f62c4b9dea381ce9f5833bc794553ae358173)

commit 5b7e33f0556a4c8514309a4e2cd0cf852aa59fe9
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Feb 7 15:57:06 2019 +0100

    messages_dgm: Use saved errno value
    
    In this case this is just a cleanup, the value has just been set by
    messaging_dgm_sendmsg. But as that already saves errno into a local
    variable, use that.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13786
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    (cherry picked from commit c27afc098398274abaed6dc9bef2019091c1b635)

commit da238723afee34581f9bb45daba5f3cfe5ef0edb
Author: Gary Lockyer <gary at catalyst.net.nz>
Date:   Tue Jan 29 11:34:31 2019 +1300

    man pages: document prefork process model
    
    Document the process model options -M
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13765
    
    Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
    Signed-off-by: Tim Beale <timbeale at catalyst.net.nz>
    Reviewed-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    
    Autobuild-User(master): Tim Beale <timbeale at samba.org>
    Autobuild-Date(master): Thu Jan 31 04:25:14 CET 2019 on sn-devel-144
    
    (cherry picked from commit 4ecdcc4b462d03bec3ec36ba1b90f45d9977be8b)

commit a2f740691a77d0d7a141d8bd1ab25d75e946b811
Author: Jiří Šašek <jiri.sasek at oracle.com>
Date:   Thu Dec 6 14:10:53 2018 +0100

    notifyd: Fix SIGBUS on sparc
    
    Problem is the structure "struct notify_instance" can lay in message buffer on
    address not dividable by 8 but this structure begins by uint_64 (secs in
    time-stamp). Structure should be re-packed to standalone buffer before the use.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=13704
    Signed-off-by: jiri.sasek at oracle.com
    Reviewed-by: Volker Lendecke <vl at samba.org>

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

Summary of changes:
 VERSION                                            |   2 +-
 WHATSNEW.txt                                       |  70 ++++++-
 ctdb/common/ctdb_io.c                              |  13 +-
 ctdb/config/ctdb.conf                              |  13 +-
 ctdb/server/ctdb_cluster_mutex.c                   | 113 +++++++-----
 ctdb/server/ctdb_recoverd.c                        |  36 +++-
 .../cunit/{pkt_read_001.sh => ctdb_io_test_001.sh} |   3 +-
 ctdb/tests/local_daemons.sh                        |  12 +-
 ..._eventscripts.sh => 01_ctdb_reclock_command.sh} |   6 +-
 ctdb/tests/simple/scripts/local_daemons.bash       |   6 +
 ctdb/tests/src/ctdb_io_test.c                      | 196 ++++++++++++++++++++
 ctdb/wscript                                       |   6 +
 docs-xml/manpages/samba.8.xml                      |  35 +++-
 docs-xml/smbdotconf/base/preforkchildren.xml       |   4 +-
 selftest/skip                                      |   1 +
 source3/lib/messages_dgm.c                         |  18 +-
 source3/modules/vfs_ceph.c                         | 112 +++---------
 source3/selftest/tests.py                          |   2 +-
 source3/smbd/filename.c                            |  43 +++++
 source3/smbd/notifyd/notifyd.c                     |  11 +-
 source3/smbd/trans2.c                              |   1 +
 source3/torture/test_messaging_read.c              |  44 +++--
 source3/torture/torture.c                          | 202 +++++++++++++++++++++
 source3/winbindd/wb_xids2sids.c                    |  74 +++++---
 source3/winbindd/winbindd_proto.h                  |   2 +-
 25 files changed, 823 insertions(+), 202 deletions(-)
 copy ctdb/tests/cunit/{pkt_read_001.sh => ctdb_io_test_001.sh} (51%)
 copy ctdb/tests/simple/{28_zero_eventscripts.sh => 01_ctdb_reclock_command.sh} (67%)
 create mode 100644 ctdb/tests/src/ctdb_io_test.c


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index 106dddf3149..4cfcef23944 100644
--- a/VERSION
+++ b/VERSION
@@ -87,7 +87,7 @@ SAMBA_VERSION_PRE_RELEASE=
 # e.g. SAMBA_VERSION_RC_RELEASE=1                      #
 #  ->  "3.0.0rc1"                                      #
 ########################################################
-SAMBA_VERSION_RC_RELEASE=4
+SAMBA_VERSION_RC_RELEASE=5
 
 ########################################################
 # To mark SVN snapshots this should be set to 'yes'    #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 2d535610583..875d168e749 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,7 +1,7 @@
 Release Announcements
 =====================
 
-This is the third release candidate of Samba 4.10.  This is *not*
+This is the fourth release candidate of Samba 4.10.  This is *not*
 intended for production environments and is designed for testing
 purposes only.  Please report any defects via the Samba bug reporting
 system at https://bugzilla.samba.org/.
@@ -19,7 +19,7 @@ NEW FEATURES/CHANGES
 GPO Improvements
 ----------------
 
-A new 'samba-tool gpo export' command has been added that can export a
+A new 'samba-tool gpo backup' command has been added that can export a
 set of Group Policy Objects from a domain in a generalised XML format.
 
 A corresponding 'samba-tool gpo restore' command has been added to
@@ -63,6 +63,24 @@ information about how the users are spread across groups in your domain.
 The 'samba-tool group list --verbose' command has also been updated to include
 the number of users in each group.
 
+Paged results LDAP control
+--------------------------
+
+The behaviour of the paged results control (1.2.840.113556.1.4.319, RFC2696)
+has been changed to more closely match Windows servers, to improve memory
+usage. Paged results may be used internally (or is requested by the user) by
+LDAP libraries or tools that deal with large result sizes, for example, when
+listing all the objects in the database.
+
+Previously, results were returned as a snapshot of the database but now,
+some changes made to the set of results while paging may be reflected in the
+responses. If strict inter-record consistency is required in answers (which is
+not possible on Windows with large result sets), consider avoiding the paged
+results control or alternatively, it might be possible to enforce restrictions
+using the LDAP filter expression.
+
+For further details see https://wiki.samba.org/index.php/Paged_Results
+
 Prefork process restart
 -----------------------
 
@@ -220,10 +238,56 @@ smb.conf changes
                               "smbd:async dosmode"
   smbd max async dosmode      Name changed, old name was
                               "smbd:max async dosmode"
-  smbd getinfo ask sharemode  New: similar to "smbd search ask  yes
+  smbd getinfo ask sharemode  New: similar to "smbd search ask yes
                               sharemode" but for SMB getinfo
 
 
+CHANGES SINCE 4.10.0rc3
+=======================
+
+o  Jeremy Allison <jra at samba.org>
+   * BUG 13803: SMB1 POSIX mkdir does case insensitive name lookup.
+
+o  Ralph Boehme <slow at samba.org>
+   * BUG 13802: Fix idmap xid2sid cache issue.
+
+o  David Disseldorp <ddiss at samba.org>
+   * BUG 13807: vfs_ceph strict_allocate_ftruncate calls (local FS) ftruncate
+     and fallocate.
+
+o  Volker Lendecke <vl at samba.org>
+   * BUG 13786: messages_dgm: Properly handle receiver re-initialization.
+
+o  Gary Lockyer <gary at catalyst.net.nz>
+   * BUG 13765: man pages: Document prefork process model.
+   * BUG 13773: CVE-2019-3824 ldb: wildcard_match end of data check.
+
+o  Stefan Metzmacher <metze at samba.org>
+   * tdb: Fix compatibility of wscript with older python.
+   * tevent: version 0.9.39
+   * BUG 13773: CVE-2019-3824 ldb: version 1.5.4
+
+o  David Mulder <dmulder at suse.com>
+   * Search for location of waf script.
+
+o  Noel Power <noel.power at suse.com>
+   * BUG 13777: buildtools/wafsamba: Avoid decode when using python2.
+
+o  Jiří Šašek <jiri.sasek at oracle.com>
+   * BUG 13704: notifyd: Fix SIGBUS on sparc.
+
+o  Swen Schillig <swen at linux.ibm.com>
+   * BUG 13791: ctdb: Buffer write beyond limits.
+
+o  Lukas Slebodnik <lslebodn at fedoraproject.org>
+   * BUG 13773: CVE-2019-3824 ldb: Out of bound read in ldb_wildcard_compare.
+
+o  Martin Schwenke <martin at meltin.net>
+   * BUG 13790: ctdb-config: Change example recovery lock setting to one that
+     fails.
+   * BUG 13800: Fix recovery lock bug.
+
+
 CHANGES SINCE 4.10.0rc2
 =======================
 
diff --git a/ctdb/common/ctdb_io.c b/ctdb/common/ctdb_io.c
index d86540762ea..c16eb7f67b7 100644
--- a/ctdb/common/ctdb_io.c
+++ b/ctdb/common/ctdb_io.c
@@ -164,6 +164,7 @@ static void queue_io_read(struct ctdb_queue *queue)
 {
 	int num_ready = 0;
 	uint32_t pkt_size = 0;
+	uint32_t start_offset;
 	ssize_t nread;
 	uint8_t *data;
 
@@ -226,7 +227,17 @@ buffer_shift:
 	}
 
 data_read:
-	num_ready = MIN(num_ready, queue->buffer.size - queue->buffer.length);
+	start_offset = queue->buffer.length + queue->buffer.offset;
+	if (start_offset < queue->buffer.length) {
+		DBG_ERR("Buffer overflow\n");
+		goto failed;
+	}
+	if (start_offset > queue->buffer.size) {
+		DBG_ERR("Buffer overflow\n");
+		goto failed;
+	}
+
+	num_ready = MIN(num_ready, queue->buffer.size - start_offset);
 
 	if (num_ready > 0) {
 		nread = sys_read(queue->fd,
diff --git a/ctdb/config/ctdb.conf b/ctdb/config/ctdb.conf
index a9e6f693405..5440600a435 100644
--- a/ctdb/config/ctdb.conf
+++ b/ctdb/config/ctdb.conf
@@ -11,7 +11,12 @@
 	# log level = NOTICE
 
 [cluster]
-	# Shared recovery lock file to avoid split brain.  No default.
-	# Do NOT run CTDB without a recovery lock file unless you know exactly
-	# what you are doing.
-	# recovery lock = /shared/recovery.lock
+	# Shared recovery lock file to avoid split brain.  Daemon
+	# default is no recovery lock.  Do NOT run CTDB without a
+	# recovery lock file unless you know exactly what you are
+	# doing.
+	#
+	# Please see the RECOVERY LOCK section in ctdb(7) for more
+	# details.
+	#
+	# recovery lock = !/bin/false RECOVERY LOCK NOT CONFIGURED
diff --git a/ctdb/server/ctdb_cluster_mutex.c b/ctdb/server/ctdb_cluster_mutex.c
index 330d5fd1d90..2e3cb8112ad 100644
--- a/ctdb/server/ctdb_cluster_mutex.c
+++ b/ctdb/server/ctdb_cluster_mutex.c
@@ -118,72 +118,101 @@ static void cluster_mutex_handler(struct tevent_context *ev,
 
 static char cluster_mutex_helper[PATH_MAX+1] = "";
 
-static bool cluster_mutex_helper_args(TALLOC_CTX *mem_ctx,
-				      const char *argstring, char ***argv)
+static bool cluster_mutex_helper_args_file(TALLOC_CTX *mem_ctx,
+					   const char *argstring,
+					   char ***argv)
 {
-	int nargs, i, ret, n;
-	bool is_command = false;
+	bool ok;
 	char **args = NULL;
-	char *strv = NULL;
-	char *t = NULL;
 
-	if (argstring != NULL && argstring[0] == '!') {
-		/* This is actually a full command */
-		is_command = true;
-		t = discard_const(&argstring[1]);
-	} else {
-		is_command = false;
-		t = discard_const(argstring);
+	ok = ctdb_set_helper("cluster mutex helper",
+			     cluster_mutex_helper,
+			     sizeof(cluster_mutex_helper),
+			     "CTDB_CLUSTER_MUTEX_HELPER",
+			     CTDB_HELPER_BINDIR,
+			     "ctdb_mutex_fcntl_helper");
+	if (! ok) {
+		DBG_ERR("ctdb exiting with error: "
+			"Unable to set cluster mutex helper\n");
+		exit(1);
 	}
 
-	ret = strv_split(mem_ctx, &strv, t, " \t");
-	if (ret != 0) {
-		DEBUG(DEBUG_ERR,
-		      ("Unable to parse mutex helper string \"%s\" (%s)\n",
-		       argstring, strerror(ret)));
+
+	/* Array includes default helper, file and NULL */
+	args = talloc_array(mem_ctx, char *, 3);
+	if (args == NULL) {
+		DBG_ERR("Memory allocation error\n");
 		return false;
 	}
-	n = strv_count(strv);
 
-	args = talloc_array(mem_ctx, char *, n + (is_command ? 1 : 2));
+	args[0] = cluster_mutex_helper;
 
-	if (args == NULL) {
-		DEBUG(DEBUG_ERR,(__location__ " out of memory\n"));
+	args[1] = talloc_strdup(args, argstring);
+	if (args[1] == NULL) {
+		DBG_ERR("Memory allocation error\n");
 		return false;
 	}
 
-	nargs = 0;
-
-	if (! is_command) {
-		if (!ctdb_set_helper("cluster mutex helper",
-				     cluster_mutex_helper,
-				     sizeof(cluster_mutex_helper),
-				     "CTDB_CLUSTER_MUTEX_HELPER",
-				     CTDB_HELPER_BINDIR,
-				     "ctdb_mutex_fcntl_helper")) {
-			DEBUG(DEBUG_ERR,("ctdb exiting with error: %s\n",
-					 __location__
-					 " Unable to set cluster mutex helper\n"));
-			exit(1);
-		}
+	args[2] = NULL;
+
+	*argv = args;
+	return true;
+}
 
-		args[nargs++] = cluster_mutex_helper;
+static bool cluster_mutex_helper_args_cmd(TALLOC_CTX *mem_ctx,
+					  const char *argstring,
+					  char ***argv)
+{
+	int i, ret, n;
+	char **args = NULL;
+	char *strv = NULL;
+	char *t = NULL;
+
+	ret = strv_split(mem_ctx, &strv, argstring, " \t");
+	if (ret != 0) {
+		D_ERR("Unable to parse mutex helper command \"%s\" (%s)\n",
+		      argstring,
+		      strerror(ret));
+		return false;
 	}
+	n = strv_count(strv);
+
+	/* Extra slot for NULL */
+	args = talloc_array(mem_ctx, char *, n + 1);
+	if (args == NULL) {
+		DBG_ERR("Memory allocation error\n");
+		return false;
+	}
+
+	talloc_steal(args, strv);
 
 	t = NULL;
-	for (i = 0; i < n; i++) {
-		/* Don't copy, just keep cmd_args around */
+	for (i = 0 ; i < n; i++) {
 		t = strv_next(strv, t);
-		args[nargs++] = t;
+		args[i] = t;
 	}
 
-	/* Make sure last argument is NULL */
-	args[nargs] = NULL;
+	args[n] = NULL;
 
 	*argv = args;
 	return true;
 }
 
+static bool cluster_mutex_helper_args(TALLOC_CTX *mem_ctx,
+				      const char *argstring,
+				      char ***argv)
+{
+	bool ok;
+
+	if (argstring != NULL && argstring[0] == '!') {
+		ok = cluster_mutex_helper_args_cmd(mem_ctx, &argstring[1], argv);
+	} else {
+		ok = cluster_mutex_helper_args_file(mem_ctx, argstring, argv);
+	}
+
+	return ok;
+}
+
 struct ctdb_cluster_mutex_handle *
 ctdb_cluster_mutex(TALLOC_CTX *mem_ctx,
 		   struct ctdb_context *ctdb,
diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c
index 578127a4514..9b3559b2a92 100644
--- a/ctdb/server/ctdb_recoverd.c
+++ b/ctdb/server/ctdb_recoverd.c
@@ -888,6 +888,7 @@ struct ctdb_recovery_lock_handle {
 	bool locked;
 	double latency;
 	struct ctdb_cluster_mutex_handle *h;
+	struct ctdb_recoverd *rec;
 };
 
 static void take_reclock_handler(char status,
@@ -897,22 +898,45 @@ static void take_reclock_handler(char status,
 	struct ctdb_recovery_lock_handle *s =
 		(struct ctdb_recovery_lock_handle *) private_data;
 
+	s->locked = (status == '0') ;
+
+	/*
+	 * If unsuccessful then ensure the process has exited and that
+	 * the file descriptor event handler has been cancelled
+	 */
+	if (! s->locked) {
+		TALLOC_FREE(s->h);
+	}
+
 	switch (status) {
 	case '0':
 		s->latency = latency;
 		break;
 
 	case '1':
-		DEBUG(DEBUG_ERR,
-		      ("Unable to take recovery lock - contention\n"));
+		D_ERR("Unable to take recovery lock - contention\n");
+		break;
+
+	case '2':
+		D_ERR("Unable to take recovery lock - timeout\n");
 		break;
 
 	default:
-		DEBUG(DEBUG_ERR, ("ERROR: when taking recovery lock\n"));
+		D_ERR("Unable to take recover lock - unknown error\n");
+
+		{
+			struct ctdb_recoverd *rec = s->rec;
+			struct ctdb_context *ctdb = rec->ctdb;
+			uint32_t pnn = ctdb_get_pnn(ctdb);
+
+			D_ERR("Banning this node\n");
+			ctdb_ban_node(rec,
+				      pnn,
+				      ctdb->tunable.recovery_ban_period);
+		}
 	}
 
 	s->done = true;
-	s->locked = (status == '0') ;
 }
 
 static void force_election(struct ctdb_recoverd *rec,
@@ -942,10 +966,12 @@ static bool ctdb_recovery_lock(struct ctdb_recoverd *rec)
 		return false;
 	};
 
+	s->rec = rec;
+
 	h = ctdb_cluster_mutex(s,
 			       ctdb,
 			       ctdb->recovery_lock,
-			       0,
+			       120,
 			       take_reclock_handler,
 			       s,
 			       lost_reclock_handler,
diff --git a/ctdb/tests/cunit/pkt_read_001.sh b/ctdb/tests/cunit/ctdb_io_test_001.sh
similarity index 51%
copy from ctdb/tests/cunit/pkt_read_001.sh
copy to ctdb/tests/cunit/ctdb_io_test_001.sh
index c951f39bdee..15842ea8e17 100755
--- a/ctdb/tests/cunit/pkt_read_001.sh
+++ b/ctdb/tests/cunit/ctdb_io_test_001.sh
@@ -4,4 +4,5 @@
 
 ok_null
 
-unit_test pkt_read_test
+unit_test ctdb_io_test 1
+unit_test ctdb_io_test 2
diff --git a/ctdb/tests/local_daemons.sh b/ctdb/tests/local_daemons.sh
index 9329a60643c..07cf1e9b135 100755
--- a/ctdb/tests/local_daemons.sh
+++ b/ctdb/tests/local_daemons.sh
@@ -132,6 +132,7 @@ Options:
   -N <file>     Nodes file (default: automatically generated)
   -n <num>      Number of nodes (default: 3)
   -P <file>     Public addresses file (default: automatically generated)
+  -R            Use a command for the recovery lock (default: use a file)
   -S <library>  Socket wrapper shared library to preload (default: none)
   -6            Generate IPv6 IPs for nodes, public addresses (default: IPv4)
 EOF
@@ -145,17 +146,19 @@ local_daemons_setup ()
 	_nodes_file=""
 	_num_nodes=3
 	_public_addresses_file=""
+	_recovery_lock_use_command=false
 	_socket_wrapper=""
 	_use_ipv6=false
 
 	set -e
 
-	while getopts "FN:n:P:S:6h?" _opt ; do
+	while getopts "FN:n:P:RS:6h?" _opt ; do
 		case "$_opt" in
 		F) _disable_failover=true ;;
 		N) _nodes_file="$OPTARG" ;;
 		n) _num_nodes="$OPTARG" ;;
 		P) _public_addresses_file="$OPTARG" ;;
+		R) _recovery_lock_use_command=true ;;
 		S) _socket_wrapper="$OPTARG" ;;
 		6) _use_ipv6=true ;;
 		\?|h) local_daemons_setup_usage ;;
@@ -188,6 +191,11 @@ local_daemons_setup ()
 				       $_use_ipv6 >"$_public_addresses_all"
 	fi
 
+	_recovery_lock="${directory}/rec.lock"
+	if $_recovery_lock_use_command ; then
+		_recovery_lock="! ${CTDB_CLUSTER_MUTEX_HELPER} ${_recovery_lock}"
+	fi
+
 	if [ -n "$_socket_wrapper" ] ; then
 		setup_socket_wrapper "$_socket_wrapper"
 	fi
@@ -221,7 +229,7 @@ local_daemons_setup ()
 	log level = INFO
 
 [cluster]
-	recovery lock = ${directory}/rec.lock
+	recovery lock = ${_recovery_lock}
 	node address = ${_node_ip}
 
 [database]
diff --git a/ctdb/tests/simple/28_zero_eventscripts.sh b/ctdb/tests/simple/01_ctdb_reclock_command.sh
similarity index 67%
copy from ctdb/tests/simple/28_zero_eventscripts.sh
copy to ctdb/tests/simple/01_ctdb_reclock_command.sh
index 75e5e047a73..34f82e981a1 100755
--- a/ctdb/tests/simple/28_zero_eventscripts.sh
+++ b/ctdb/tests/simple/01_ctdb_reclock_command.sh
@@ -3,7 +3,8 @@
 test_info()
 {
     cat <<EOF
-Check that CTDB operated correctly if there are 0 event scripts
+Check that CTDB operates correctly if the recovery lock is configured
+as a command.
 
 This test only does anything with local daemons.  On a real cluster it
 has no way of updating configuration.
@@ -19,7 +20,8 @@ if [ -z "$TEST_LOCAL_DAEMONS" ] ; then
 	exit 0
 fi
 
-ctdb_test_init --no-event_scripts
+echo "Starting CTDB with recovery lock command configured..."
+ctdb_test_init --reclock-use-command
 
 cluster_is_healthy
 
diff --git a/ctdb/tests/simple/scripts/local_daemons.bash b/ctdb/tests/simple/scripts/local_daemons.bash
index cf6671757b3..5da900288b2 100644
--- a/ctdb/tests/simple/scripts/local_daemons.bash
+++ b/ctdb/tests/simple/scripts/local_daemons.bash
@@ -22,10 +22,12 @@ setup_ctdb ()
 	local public_addresses=""
 	local no_event_scripts=false
 	local disable_failover=""
+	local reclock_use_command=""
 	case "$1" in
 	--no-public-addresses) public_addresses="/dev/null" ;;


-- 
Samba Shared Repository



More information about the samba-cvs mailing list