The branch, v4-13-test has been updated
       via  585c49f21f7 vfs_glusterfs: print exact cmdline for disabling 
write-behind translator
       via  587fa331f62 manpages/vfs_glusterfs: Mention silent skipping of 
write-behind translator
       via  2ea7b5c43e8 selftest: Remove samba3.blackbox.smbclient_tar from 
flapping tests
       via  8cec2732890 clitar: Use do_list()'s recursion in clitar.c
       via  2954051aa6d s3/script/tests: Ensure all remote test files are 
removed
       via  5f1772d94a3 s3/script/tests: call smbclient deltree to remove 
remote files
       via  257ce5ed541 s3/script/tests: Make smb_client 'die' behaviour 
configurable
       via  a0ab7adfd78 s3/script/tests: Remove make_path (for remote dir)
       via  c19198e8732 selftest: make samba3.blackbox.smbclient_tar runnable 
(even manually)
       via  53a91d6cdc0 s3/script/tests: Fix samba3.blackbox.smbclient_tarmode 
cleanup
       via  896d93091ab s3/script: Use smbclient deltree to clean up 
smbclient_tarmode subdir
       via  5908aebf364 s3/script/tests: Use tarmode share for 
samba3.blackbox.smbclient_tar*
       via  5143b487532 s3/script/test: Use different testdir for 
samba3.blackbox.smbclient_tarmode
       via  7fb13330380 selftest: Add a new tarmode shares
       via  d67c3ea864b s3/script/tests: Fix 'Unrecognized option(s) passed to 
mkpath()' error
       via  e9b2be96ebc Revert "vfs_ceph: drop fdopendir handler"
      from  441bf80265f smbclient: Fix recursive mget

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


- Log -----------------------------------------------------------------
commit 585c49f21f7db686f479ce02b2ae647a313f1184
Author: Günther Deschner <g...@samba.org>
Date:   Tue Nov 24 15:38:41 2020 +0100

    vfs_glusterfs: print exact cmdline for disabling write-behind translator
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14486
    
    Guenther
    
    Signed-off-by: Guenther Deschner <g...@samba.org>
    Reviewed-by: Anoop C S <anoo...@samba.org>
    
    Autobuild-User(master): Günther Deschner <g...@samba.org>
    Autobuild-Date(master): Fri Nov 27 17:15:07 UTC 2020 on sn-devel-184
    
    (cherry picked from commit 369c1d539837b70e94fe9d533d44860c8a9380a1)
    
    Autobuild-User(v4-13-test): Karolin Seeger <ksee...@samba.org>
    Autobuild-Date(v4-13-test): Wed Dec  2 14:49:18 UTC 2020 on sn-devel-184

commit 587fa331f62f6bd36fdb8688c8d0734d02f07ee8
Author: Anoop C S <anoo...@samba.org>
Date:   Thu Nov 5 16:12:09 2020 +0530

    manpages/vfs_glusterfs: Mention silent skipping of write-behind translator
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14486
    
    Signed-off-by: Anoop C S <anoo...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    Reviewed-by: Guenther Deschner <g...@samba.org>
    
    Autobuild-User(master): Günther Deschner <g...@samba.org>
    Autobuild-Date(master): Mon Nov  9 13:30:06 UTC 2020 on sn-devel-184
    
    (cherry picked from commit be03ce7d8bb213633eedcfc3299b8d9865a3c67f)

commit 2ea7b5c43e814faef44cf76b5ffad93e4a2f4840
Author: Noel Power <noel.po...@suse.com>
Date:   Mon Nov 30 09:21:50 2020 +0000

    selftest: Remove samba3.blackbox.smbclient_tar from flapping tests
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit 89e2d68bb4d93dc391af97f35ff1148aec7930b0)

commit 8cec27328904e47462051878db2de97033ecbd9b
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Dec 1 08:58:14 2020 +0100

    clitar: Use do_list()'s recursion in clitar.c
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Aurelien Aptel <aap...@samba.org>
    Reviewed-by: Noel Power <noel.po...@suse.com>
    (cherry picked from commit 20e0ce508844fec2dd0011423b10484dc7ccfdb7)

commit 2954051aa6db3b38d24801fe451019ccec0b5c77
Author: Jeremy Allison <j...@samba.org>
Date:   Mon Nov 30 17:19:29 2020 +0000

    s3/script/tests: Ensure all remote test files are removed
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Noel Power <noel.po...@suse.com>
    (cherry picked from commit 16ffa17ee28edfc3bc70c66abf41b5518aeab8fe)

commit 5f1772d94a34922a4fc83ff8a036cbb3ce2dcdd5
Author: Noel Power <noel.po...@suse.com>
Date:   Mon Nov 30 10:41:57 2020 +0000

    s3/script/tests: call smbclient deltree to remove remote files
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit 6c7dc4959fd5de4382aee413b4cc711cc6f281f4)

commit 257ce5ed541c0e46bbd565bd8a89d5905287897c
Author: Noel Power <noel.po...@suse.com>
Date:   Mon Nov 30 10:18:32 2020 +0000

    s3/script/tests: Make smb_client 'die' behaviour configurable
    
    smb_client behaviour is to die if there is an error. This is
    a little heavy handed and make it impossible for example to
    use smb_client to run a command that might fail (where such
    a failure isn't really an error) E.G. Calling deltree and
    the directory doesn't exist
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit 363bfa4e1ca10e64057a6d04d6faff7c788db89d)

commit a0ab7adfd788bc8cc58579b94c75386d492c2e02
Author: Noel Power <noel.po...@suse.com>
Date:   Mon Nov 30 09:59:58 2020 +0000

    s3/script/tests: Remove make_path (for remote dir)
    
    LOCALPATH is actually the local path to the share, we should
    not need to create the share path (it should already exist)
    
    Note: When we remove the tree located at LOCALPATH we keep the root
          so the share path should always be there
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit 99ffa4a98287f125e45690e87b32616f4d4254e4)

commit c19198e873224c07a19dfae14d3871c577768344
Author: Noel Power <noel.po...@suse.com>
Date:   Mon Nov 30 11:15:06 2020 +0000

    selftest: make samba3.blackbox.smbclient_tar runnable (even manually)
    
    samba3.blackbox.smbclient_tar is marked as flapping so it
    seems we have missed that it has stopped working. The local path
    passed to script/tests/test_smbclient_tarmode.pl must point to a
    valid share
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit 6f246658cf003f7e2f393f7b7490d9e8ae84e21c)

commit 53a91d6cdc0e726d741ab217522da3f205392090
Author: Noel Power <noel.po...@suse.com>
Date:   Mon Nov 30 17:39:25 2020 +0000

    s3/script/tests: Fix samba3.blackbox.smbclient_tarmode cleanup
    
    Make sure samba3.blackbox.smbclient_tarmode removes data files
    not just before running the test but also after
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit 4bb3bffa4b7a770d36138c45f717a9048ef82cff)

commit 896d93091abe6b667c52e87273f22a91d9175eb0
Author: Noel Power <noel.po...@suse.com>
Date:   Fri Nov 27 15:52:27 2020 +0000

    s3/script: Use smbclient deltree to clean up smbclient_tarmode subdir
    
    Replace rm -rf of local dir (that is hosted remotely)
    with smbclient deltree
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit fec1f8faffd9eb1aae77e7c515e57897be34a255)

commit 5908aebf364802e7315aad8f116ad431544ac29d
Author: Noel Power <noel.po...@suse.com>
Date:   Fri Nov 27 15:33:26 2020 +0000

    s3/script/tests: Use tarmode share for samba3.blackbox.smbclient_tar*
    
    After this change both samba3.blackbox.smbclient_tar &
    samba3.blackbox.smbclient_tarmode now use the same dedicated share
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit be8dca68f89f110ef5947e0c2a7258554772cf9a)

commit 5143b4875328196ed2766ba077055ce50704b5e2
Author: Noel Power <noel.po...@suse.com>
Date:   Fri Nov 27 15:25:21 2020 +0000

    s3/script/test: Use different testdir for samba3.blackbox.smbclient_tarmode
    
    The other tarmode torture test samba3.blackbox.smbclient_tar now uses a 
share
    'tarmode' which uses the same source path as 
samba3.blackbox.smbclient_tarmode
    
    Avoid conflicting paths and use a new subdir (of the test share) called
    'smbclient_tarmode'
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit 6cb0a00f4ab4bc1a8193d50cc076ec7174a5ece9)

commit 7fb1333038085529334e8e3109e5eda6b5df14ae
Author: Noel Power <noel.po...@suse.com>
Date:   Thu Nov 26 17:31:50 2020 +0000

    selftest: Add a new tarmode shares
    
    samba3.blackbox.smbclient_tar & samba3.blackbox.smbclient_tar
    need separate shares with own xattr tdb(s)
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit a250f73366983d2a7397608a611f295f10dbb548)

commit d67c3ea864b26e440f15162e429dec199e7304e8
Author: Noel Power <noel.po...@suse.com>
Date:   Fri Nov 27 12:01:49 2020 +0000

    s3/script/tests: Fix 'Unrecognized option(s) passed to mkpath()' error
    
    'keep_root' is an unrecognised option for make_path/mkpath
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14581
    
    Signed-off-by: Noel Power <noel.po...@suse.com>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    (cherry picked from commit 4f5a7f11b7732c3efb511e68f6b9d434d59bb3e8)

commit e9b2be96ebcc2dc8da8174f3333a744eff06f716
Author: David Disseldorp <dd...@samba.org>
Date:   Mon Oct 5 12:28:27 2020 +0200

    Revert "vfs_ceph: drop fdopendir handler"
    
    This reverts commit 76d7d05b1da6c0703b1c2bade0c4467c7cc1adec.
    OpenDir_fsp() no longer falls back to regular open, so this hook is
    required.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=14519
    
    Signed-off-by: David Disseldorp <dd...@samba.org>
    Reviewed-by: Samuel Cabrero <scabr...@samba.org>
    
    Autobuild-User(master): David Disseldorp <dd...@samba.org>
    Autobuild-Date(master): Mon Oct  5 12:38:34 UTC 2020 on sn-devel-184
    
    (cherry picked from commit 83ab59d929a6319c18341cb69d5084b563fb59bb)

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

Summary of changes:
 docs-xml/manpages/vfs_glusterfs.8.xml          |  9 ++++
 selftest/flapping                              |  1 -
 selftest/target/Samba3.pm                      | 11 +++++
 source3/client/clitar.c                        | 41 ++++-------------
 source3/modules/vfs_ceph.c                     | 15 +++++--
 source3/modules/vfs_glusterfs.c                |  7 ++-
 source3/script/tests/test_smbclient_tarmode.pl | 62 ++++++++++++++++++++++----
 source3/script/tests/test_smbclient_tarmode.sh | 29 ++++++++----
 source3/selftest/tests.py                      | 12 ++---
 9 files changed, 124 insertions(+), 63 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/manpages/vfs_glusterfs.8.xml 
b/docs-xml/manpages/vfs_glusterfs.8.xml
index 7a4da1af919..d25135e14ac 100644
--- a/docs-xml/manpages/vfs_glusterfs.8.xml
+++ b/docs-xml/manpages/vfs_glusterfs.8.xml
@@ -179,7 +179,16 @@
                 translator and refuse to connect if detected.
                 Please disable the write-behind translator for the GlusterFS
                 volume to allow the plugin to connect to the volume.
+                The write-behind translator can easily be disabled via calling
+                <programlisting>
+                        gluster volume set &lt;volumename&gt; 
performance.write-behind off
+                </programlisting> on the commandline.
        </para>
+        <para>
+                With GlusterFS versions >= 9, we silently bypass write-behind
+                translator during initial connect and failure is avoided.
+        </para>
+
 </refsect1>
 
 
diff --git a/selftest/flapping b/selftest/flapping
index c9f0adbf1bd..8c3f9e8969a 100644
--- a/selftest/flapping
+++ b/selftest/flapping
@@ -31,6 +31,5 @@
 # This test just is not reliable in finding the max search limit
 #
 
^samba4.ldap.notification.python\(.*\).__main__.LDAPNotificationTest.test_max_search
-^samba3.blackbox.smbclient_tar.* # fails very, very often on sn-devel
 ^samba3.blackbox.smbclient_s3.*.sending a message to the remote server # 
flakey on sn-devel-104 and sn-devel-144
 ^samba3.blackbox.smbclient_s3.*.creating a good symlink and deleting it by 
path # flakey on sn-devel-104 and sn-devel-144
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 0a8cefa811d..e141f102ef1 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -1334,6 +1334,9 @@ sub setup_fileserver
        my $tarmode_sharedir="$share_dir/tarmode";
        push(@dirs,$tarmode_sharedir);
 
+       my $tarmode2_sharedir="$share_dir/tarmode2";
+       push(@dirs,$tarmode2_sharedir);
+
        my $smbcacls_sharedir="$share_dir/smbcacls";
        push(@dirs,$smbcacls_sharedir);
 
@@ -1362,6 +1365,14 @@ sub setup_fileserver
 
        get quota command = $prefix_abs/getset_quota.py
        set quota command = $prefix_abs/getset_quota.py
+[tarmode]
+       path = $tarmode_sharedir
+       comment = tar test share
+       xattr_tdb:file = $prefix_abs/tarmode-xattr.tdb
+[tarmode2]
+       path = $tarmode2_sharedir
+       comment = tar test share
+       xattr_tdb:file = $prefix_abs/tarmode2-xattr.tdb
 [spotlight]
        path = $share_dir
        spotlight = yes
diff --git a/source3/client/clitar.c b/source3/client/clitar.c
index 3fe3622aba6..4fd1f3c47d9 100644
--- a/source3/client/clitar.c
+++ b/source3/client/clitar.c
@@ -711,7 +711,7 @@ static int tar_create(struct tar* t)
                        goto out_close;
                }
                DBG(5, ("tar_process do_list with mask: %s\n", mask));
-               status = do_list(mask, TAR_DO_LIST_ATTR, get_file_callback, 
false, true);
+               status = do_list(mask, TAR_DO_LIST_ATTR, get_file_callback, 
true, true);
                if (!NT_STATUS_IS_OK(status)) {
                        DBG(0, ("do_list fail %s\n", nt_errstr(status)));
                        err = 1;
@@ -806,7 +806,7 @@ static int tar_create_from_list(struct tar *t)
                        DBG(5, ("cd '%s' before do_list\n", base));
                        client_set_cur_dir(base);
                }
-               status = do_list(mask, TAR_DO_LIST_ATTR, get_file_callback, 
false, true);
+               status = do_list(mask, TAR_DO_LIST_ATTR, get_file_callback, 
true, true);
                if (base != NULL) {
                        client_set_cur_dir(start_dir);
                }
@@ -837,7 +837,7 @@ static NTSTATUS get_file_callback(struct cli_state *cli,
        char *remote_name;
        char *old_dir = NULL;
        char *new_dir = NULL;
-       const char *initial_dir = client_get_cur_dir();
+       const char *initial_dir = dir;
        bool skip = false;
        bool isdir;
        int rc;
@@ -846,7 +846,7 @@ static NTSTATUS get_file_callback(struct cli_state *cli,
                return NT_STATUS_NO_MEMORY;
        }
 
-       remote_name = talloc_asprintf(ctx, "%s%s", initial_dir, finfo->name);
+       remote_name = talloc_asprintf(ctx, "%s\\%s", initial_dir, finfo->name);
        if (remote_name == NULL) {
                status = NT_STATUS_NO_MEMORY;
                goto out;
@@ -884,35 +884,10 @@ static NTSTATUS get_file_callback(struct cli_state *cli,
                goto out;
        }
 
-       if (isdir) {
-               char *mask;
-               mask = talloc_asprintf(ctx, "%s*", new_dir);
-               if (mask == NULL) {
-                       status = NT_STATUS_NO_MEMORY;
-                       goto out;
-               }
-               mask = client_clean_name(ctx, mask);
-               if (mask == NULL) {
-                       status = NT_STATUS_NO_MEMORY;
-                       goto out;
-               }
-
-               rc = tar_get_file(&tar_ctx, remote_name, finfo);
-               if (rc != 0) {
-                       status = NT_STATUS_UNSUCCESSFUL;
-                       goto out;
-               }
-
-               client_set_cur_dir(new_dir);
-               do_list(mask, TAR_DO_LIST_ATTR, get_file_callback, false, true);
-               client_set_cur_dir(old_dir);
-               tar_ctx.numdir++;
-       } else {
-               rc = tar_get_file(&tar_ctx, remote_name, finfo);
-               if (rc != 0) {
-                       status = NT_STATUS_UNSUCCESSFUL;
-                       goto out;
-               }
+       rc = tar_get_file(&tar_ctx, remote_name, finfo);
+       if (rc != 0) {
+               status = NT_STATUS_UNSUCCESSFUL;
+               goto out;
        }
 
 out:
diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
index 0378d633782..a87d162e573 100644
--- a/source3/modules/vfs_ceph.c
+++ b/source3/modules/vfs_ceph.c
@@ -306,9 +306,18 @@ static DIR *cephwrap_fdopendir(struct vfs_handle_struct 
*handle,
                               const char *mask,
                               uint32_t attributes)
 {
-       /* OpenDir_fsp() falls back to regular open */
-       errno = ENOSYS;
-       return NULL;
+       int ret = 0;
+       struct ceph_dir_result *result;
+       DBG_DEBUG("[CEPH] fdopendir(%p, %p)\n", handle, fsp);
+
+       ret = ceph_opendir(handle->data, fsp->fsp_name->base_name, &result);
+       if (ret < 0) {
+               result = NULL;
+               errno = -ret; /* We return result which is NULL in this case */
+       }
+
+       DBG_DEBUG("[CEPH] fdopendir(...) = %d\n", ret);
+       return (DIR *) result;
 }
 
 static struct dirent *cephwrap_readdir(struct vfs_handle_struct *handle,
diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
index 17e945f7e78..10af7e131b2 100644
--- a/source3/modules/vfs_glusterfs.c
+++ b/source3/modules/vfs_glusterfs.c
@@ -345,9 +345,12 @@ static int check_for_write_behind_translator(TALLOC_CTX 
*mem_ctx,
        if (write_behind_present) {
                DBG_ERR("Write behind translator is enabled for "
                        "volume (%s), refusing to connect! "
-                       "Please check the vfs_glusterfs(8) manpage for "
+                       "Please turn off the write behind translator by calling 
"
+                       "'gluster volume set %s performance.write-behind off' "
+                       "on the commandline. "
+                       "Check the vfs_glusterfs(8) manpage for "
                        "further details.\n",
-                       volume);
+                       volume, volume);
                return -1;
        }
 
diff --git a/source3/script/tests/test_smbclient_tarmode.pl 
b/source3/script/tests/test_smbclient_tarmode.pl
index 877eec45cc8..bdbbd1a44a8 100755
--- a/source3/script/tests/test_smbclient_tarmode.pl
+++ b/source3/script/tests/test_smbclient_tarmode.pl
@@ -1,5 +1,4 @@
 #!/usr/bin/perl
-
 # Unix SMB/CIFS implementation.
 # Test suite for the tar backup mode of smbclient.
 # Copyright (C) Aurélien Aptel 2013
@@ -304,6 +303,8 @@ sub test_creation_attr {
     @inc = grep { $_->attr('a') && !$_->attr_any('h', 's') } @all;
     smb_tar('tarmode inc nohidden nosystem', '-Tc', $TAR, $DIR);
     $err += check_tar($TAR, \@inc);
+    # adjust attr so remote files can be deleted with deltree
+    File::walk(sub { $_->set_attr(qw/n r s h/) }, File::tree($DIR));
 
     $err;
 }
@@ -399,7 +400,10 @@ sub test_creation_incremental {
     } else {
         smb_tar('', '-Tcg', $TAR, $DIR);
     }
-    return check_tar($TAR, \@files);
+    my $res = check_tar($TAR, \@files);
+    # adjust attr so remote files can be deleted with deltree
+    File::walk(sub { $_->set_attr(qw/n r s h/) }, File::tree($DIR));
+    return $res
 }
 
 
@@ -917,8 +921,22 @@ Remove all files in the server C<$DIR> (not root)
 sub reset_remote {
     # remove_tree($LOCALPATH . '/'. $DIR);
     # make_path($LOCALPATH . '/'. $DIR);
-    remove_tree($LOCALPATH, {keep_root => 1});
-    make_path($LOCALPATH, {keep_root => 1});
+    my $DIR;
+    my @names;
+    my $name;
+
+    smb_client_cmd(0, '-c', "deltree ./*");
+
+    # Ensure all files are gone.
+
+    opendir(DIR,$LOCALPATH) or die "Can't open $LOCALPATH\n";
+    @names = readdir(DIR) or die "Unable to read $LOCALPATH\n";
+    closedir(DIR);
+    foreach $name (@names) {
+       next if ($name eq ".");   # skip the current directory entry
+       next if ($name eq "..");  # skip the parent  directory entry
+       die "$LOCALPATH not empty\n";
+    }
 }
 
 =head3 C<reset_tmp( )>
@@ -1120,7 +1138,9 @@ sub check_tar {
     return (@more + @less + @diff); # nb of errors
 }
 
-=head3 C<smb_client ( @args )>
+=head3 C<smb_client_cmd( $will_die, @args)>
+
+=head3 C<smb_client_cmd( 0, '-c', 'deltree', $somedir )>
 
 Run smbclient with C<@args> passed as argument and return output.
 
@@ -1131,11 +1151,12 @@ the command-line are already inserted.
 
 The output contains both the C<STDOUT> and C<STDERR>.
 
-Die if smbclient crashes or exits with an error code.
+if C<$will_die> then Die if smbclient crashes or exits with an error code.
+otherwise return output
 
 =cut
-sub smb_client {
-    my (@args) = @_;
+sub smb_client_cmd {
+    my ($will_die, @args) = @_;
 
     my $fullpath = "//$HOST/$SHARE";
     my $cmd = sprintf("%s %s %s",
@@ -1168,11 +1189,34 @@ sub smb_client {
     }
 
     if ($err) {
-        die "ERROR: $errstr";
+       if ($will_die) {
+               die "ERROR: $errstr";
+       } else {
+               say "ERROR: $errstr";
+       }
     }
     return $out;
 }
 
+=head3 C<smb_client ( @args )>
+
+Run smbclient with C<@args> passed as argument and return output.
+
+Each element of C<@args> becomes one escaped argument of smbclient.
+
+Host, share, user, password and the additionnal arguments provided on
+the command-line are already inserted.
+
+The output contains both the C<STDOUT> and C<STDERR>.
+
+Die if smbclient crashes or exits with an error code.
+
+=cut
+sub smb_client {
+    my (@args) = @_;
+    return smb_client_cmd(1, @args)
+}
+
 sub smb_cmd {
     return smb_client('-c', join(' ', @_));
 }
diff --git a/source3/script/tests/test_smbclient_tarmode.sh 
b/source3/script/tests/test_smbclient_tarmode.sh
index 3779c38a5ca..8bc5b9947cf 100755
--- a/source3/script/tests/test_smbclient_tarmode.sh
+++ b/source3/script/tests/test_smbclient_tarmode.sh
@@ -94,7 +94,7 @@ test_tarmode_creation() {
        # Clear temp data
        rm -rf -- "$PREFIX"/tarmode > /dev/null 2>&1
        rm -f "$PREFIX"/tarmode.tar > /dev/null 2>&1
-       rm -rf "$LOCAL_PATH" > /dev/null 2>&1
+       $SMBCLIENT //$SERVER/tarmode $CONFIGURATION -U$USERNAME%$PASSWORD -c 
"deltree smbclient_tar"
 
        # Build the test data
        if ! create_test_data "$LOCAL_PATH"; then
@@ -104,14 +104,15 @@ test_tarmode_creation() {
        fi
 
        # Create tarfile with smbclient
-       if ! $SMBCLIENT //$SERVER/tmp $CONFIGURATION -U$USERNAME%$PASSWORD -I 
$SERVER_IP -p 139 \
-                       $ADDARGS -c "tarmode full" -Tc "$PREFIX/tarmode.tar" 
"/tarmode"; then
+       if ! $SMBCLIENT //$SERVER/tarmode $CONFIGURATION -U$USERNAME%$PASSWORD 
-I $SERVER_IP -p 139 \
+                       $ADDARGS -c "tarmode full" -Tc "$PREFIX/tarmode.tar" 
"/smbclient_tar"; then
                echo "Couldn't create tar file with tarmode -Tc"
                false
                return
        fi
 
-       # Extract data to verify
+       # Extract data to verify - this puts it into $PREFIX/smbclient_tar/
+       # but we must leave it there as it's used to verify in 
test_tarmode_extraction()
        if ! tar -xf "$PREFIX/tarmode.tar" -C "$PREFIX"; then
                echo "Couldn't extract data from created tarfile"
                false
@@ -119,12 +120,16 @@ test_tarmode_creation() {
        fi
 
        # Verify data
-       if ! validate_data "$PREFIX/tarmode" "$LOCAL_PATH"; then
+       if ! validate_data "$PREFIX/smbclient_tar" "$LOCAL_PATH"; then
                echo "Data not equivalent"
                false
                return
        fi
 
+       # Clear temp data
+       rm -rf -- "$PREFIX"/tarmode > /dev/null 2>&1
+       rm -f "$PREFIX"/tarmode.tar > /dev/null 2>&1
+       $SMBCLIENT //$SERVER/tarmode $CONFIGURATION -U$USERNAME%$PASSWORD -c 
"deltree smbclient_tar"
        true
        return
 
@@ -136,7 +141,7 @@ test_tarmode_extraction() {
        # Clear temp data
        rm -rf -- "$PREFIX"/tarmode > /dev/null 2>&1
        rm -f "$PREFIX"/tarmode.tar > /dev/null 2>&1
-       rm -rf "$LOCAL_PATH" > /dev/null 2>&1
+       $SMBCLIENT //$SERVER/tarmode $CONFIGURATION -U$USERNAME%$PASSWORD -c 
"deltree smbclient_tar"
 
        # Build the test data
        if ! create_test_data "$PREFIX/tarmode"; then
@@ -146,14 +151,14 @@ test_tarmode_extraction() {
        fi
 
        # Create tarfile to extract on client
-       if ! tar -cf "$PREFIX/tarmode.tar" -C "$PREFIX" tarmode; then
+       if ! tar -cf "$PREFIX/tarmode.tar" -C "$PREFIX" smbclient_tar; then
                echo "Couldn't create tar archive"
                false
                return
        fi
 
        # Extract tarfile with smbclient
-       if ! $SMBCLIENT //$SERVER/tmp $CONFIGURATION -U$USERNAME%$PASSWORD -I 
$SERVER_IP -p 139 \
+       if ! $SMBCLIENT //$SERVER/tarmode $CONFIGURATION -U$USERNAME%$PASSWORD 
-I $SERVER_IP -p 139 \
                        $ADDARGS -c "tarmode full" -Tx "$PREFIX/tarmode.tar"; 
then
                echo "Couldn't extact tar file with tarmode -Tx"
                false
@@ -161,12 +166,18 @@ test_tarmode_extraction() {
        fi
 
        # Verify data
-       if ! validate_data "$PREFIX/tarmode" "$LOCAL_PATH"; then
+       if ! validate_data "$PREFIX/smbclient_tar" "$LOCAL_PATH"; then
                echo "Data not equivalent"
                false
                return
        fi
 
+       # Clear temp data
+       rm -rf -- "$PREFIX"/tarmode > /dev/null 2>&1
+       rm -f "$PREFIX"/tarmode.tar > /dev/null 2>&1
+       $SMBCLIENT //$SERVER/tarmode $CONFIGURATION -U$USERNAME%$PASSWORD -c 
"deltree smbclient_tar"
+       # Cleanup the verification data created by test_tarmode_creation().
+       rm -rf "$PREFIX"/smbclient_tar > /dev/null 2>&1
        true
        return
 
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index f9202f3f93a..27dc7587b17 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -476,23 +476,23 @@ for env in ["fileserver"]:
     plantestsuite("samba3.blackbox.smbclient_tarmode.NT1", env + "_smb1_done",
                   [os.path.join(samba3srcdir, 
"script/tests/test_smbclient_tarmode.sh"),
                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
-                   '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, 
configuration, "-mNT1"])
+                   '$LOCAL_PATH/tarmode/smbclient_tar', '$PREFIX', smbclient3, 
configuration, "-mNT1"])
     plantestsuite("samba3.blackbox.smbclient_tarmode.SMB3", env,
                   [os.path.join(samba3srcdir, 
"script/tests/test_smbclient_tarmode.sh"),
                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
-                   '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, 
configuration, "-mSMB3"])
+                   '$LOCAL_PATH/tarmode/smbclient_tar', '$PREFIX', smbclient3, 
configuration, "-mSMB3"])
 
     # Test suite for new smbclient/tar with libarchive (GSoC 13)
     plantestsuite("samba3.blackbox.smbclient_tar.NT1", env + "_smb1_done",
                   [os.path.join(samba3srcdir, 
"script/tests/test_smbclient_tarmode.pl"),
-                   '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
-                   '-u', '$USERNAME', '-p', '$PASSWORD', '-l', 
'$LOCAL_PATH/tarmode',
+                   '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tarmode2',
+                   '-u', '$USERNAME', '-p', '$PASSWORD', '-l', 
'$LOCAL_PATH/tarmode2',
                    '-d', '$PREFIX', '-b', smbclient3,
                    '--subunit', '--', configuration, '-mNT1'])
     plantestsuite("samba3.blackbox.smbclient_tar.SMB3", env,
                   [os.path.join(samba3srcdir, 
"script/tests/test_smbclient_tarmode.pl"),
-                   '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
-                   '-u', '$USERNAME', '-p', '$PASSWORD', '-l', 
'$LOCAL_PATH/tarmode',
+                   '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tarmode2',
+                   '-u', '$USERNAME', '-p', '$PASSWORD', '-l', 
'$LOCAL_PATH/tarmode2',
                    '-d', '$PREFIX', '-b', smbclient3,
                    '--subunit', '--', configuration, '-mSMB3'])
 


-- 
Samba Shared Repository

Reply via email to