[PATCH v4 01/14] selftest/s3: expose share with FS applicable config

David Disseldorp ddiss at samba.org
Mon Nov 18 06:54:26 MST 2013


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 at samba.org>
---
 selftest/target/Samba3.pm | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index c3a4345..ebfabf6 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -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
-- 
1.8.1.4



More information about the samba-technical mailing list