selftest/s3: expose share with FS applicable config
authorDavid Disseldorp <ddiss@samba.org>
Mon, 18 Nov 2013 13:54:26 +0000 (14:54 +0100)
committerJeremy Allison <jra@samba.org>
Fri, 22 Nov 2013 16:56:44 +0000 (08:56 -0800)
Attempt to determine the underlying test share filesystem using statfs.
If the filesystem is detected and an applicable configuration is
available, then apply it to a new filesystem specific share.
Btrfs is currently the only VFS module to utilize this logic.

Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
selftest/target/Samba3.pm

index c3a434558f7c65d9d4861874a85f39e3191aa0a2..ebfabf6f113aa2233a15765f795eacbd975cb817 100755 (executable)
@@ -29,6 +29,25 @@ sub have_ads($) {
        return $found_ads;
 }
 
+# return smb.conf parameters applicable to @path, based on the underlying
+# filesystem type
+sub get_fs_specific_conf($$)
+{
+       my ($self, $path) = @_;
+       my $mods = "";
+       my $stat_out = `stat --file-system $path` or return "";
+
+       if ($stat_out =~ m/Type:\s+btrfs/) {
+               $mods .= "btrfs ";
+       }
+
+       if ($mods) {
+               return "vfs objects = $mods";
+       }
+
+       return undef;
+}
+
 sub new($$) {
        my ($classname, $bindir, $binary_mapping, $srcdir, $server_maxtime) = @_;
        my $self = { vars => {},
@@ -45,7 +64,7 @@ sub teardown_env($$)
 {
        my ($self, $envvars) = @_;
        my $count = 0;
-       
+
        # This should cause smbd to terminate gracefully
        close($envvars->{STDIN_PIPE});
 
@@ -832,6 +851,8 @@ sub provision($$$$$$)
        my $nmbdsockdir="$prefix_abs/nmbd";
        unlink($nmbdsockdir);
 
+       my $fs_specific_conf = $self->get_fs_specific_conf($shrdir);
+
        ## 
        ## create the test directory layout
        ##
@@ -1070,6 +1091,9 @@ sub provision($$$$$$)
        kernel share modes = no
        kernel oplocks = no
        posix locking = no
+[fs_specific]
+       copy = tmp
+       $fs_specific_conf
 [print1]
        copy = tmp
        printable = yes