aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRyan Moeller <[email protected]>2020-01-23 20:14:40 -0500
committerBrian Behlendorf <[email protected]>2020-01-23 17:14:40 -0800
commitdbfec5cc09cedfe3a31fc958a80e111f50716929 (patch)
tree8de52f6f4d39a7596868eeb36eb01614798d4942 /tests
parent35b07497c60701465a87aab48fc890a0bc502561 (diff)
ZTS: Get xattr tests running on FreeBSD
This mostly involves reworking platform checks to make illumos the exception (thanks to their unusual way of exposing xattrs). Other platforms are able to take advantage of the recently added xattr wrappers in libtest. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Ryan Moeller <[email protected]> Closes #9872
Diffstat (limited to 'tests')
-rw-r--r--tests/runfiles/common.run6
-rw-r--r--tests/runfiles/linux.run7
-rw-r--r--tests/runfiles/sunos.run4
-rwxr-xr-xtests/test-runner/bin/zts-report.py3
-rwxr-xr-xtests/zfs-tests/tests/functional/xattr/xattr_003_neg.ksh8
-rwxr-xr-xtests/zfs-tests/tests/functional/xattr/xattr_004_pos.ksh84
-rwxr-xr-xtests/zfs-tests/tests/functional/xattr/xattr_007_neg.ksh16
-rwxr-xr-xtests/zfs-tests/tests/functional/xattr/xattr_008_pos.ksh4
-rwxr-xr-xtests/zfs-tests/tests/functional/xattr/xattr_009_neg.ksh4
-rwxr-xr-xtests/zfs-tests/tests/functional/xattr/xattr_010_neg.ksh4
-rwxr-xr-xtests/zfs-tests/tests/functional/xattr/xattr_011_pos.ksh63
-rwxr-xr-xtests/zfs-tests/tests/functional/xattr/xattr_012_pos.ksh15
-rwxr-xr-xtests/zfs-tests/tests/functional/xattr/xattr_013_pos.ksh24
-rw-r--r--tests/zfs-tests/tests/functional/xattr/xattr_common.kshlib64
14 files changed, 166 insertions, 140 deletions
diff --git a/tests/runfiles/common.run b/tests/runfiles/common.run
index f93f6479a..a04f5f3cc 100644
--- a/tests/runfiles/common.run
+++ b/tests/runfiles/common.run
@@ -868,6 +868,12 @@ tags = ['functional', 'vdev_zaps']
tests = ['write_dirs_001_pos', 'write_dirs_002_pos']
tags = ['functional', 'write_dirs']
+[tests/functional/xattr]
+tests = ['xattr_001_pos', 'xattr_002_neg', 'xattr_003_neg', 'xattr_004_pos',
+ 'xattr_005_pos', 'xattr_006_pos', 'xattr_007_neg',
+ 'xattr_011_pos', 'xattr_012_pos', 'xattr_013_pos']
+tags = ['functional', 'xattr']
+
[tests/functional/zvol/zvol_ENOSPC]
tests = ['zvol_ENOSPC_001_pos']
tags = ['functional', 'zvol', 'zvol_ENOSPC']
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run
index 5fe16bcfb..b4322991e 100644
--- a/tests/runfiles/linux.run
+++ b/tests/runfiles/linux.run
@@ -130,10 +130,3 @@ tags = ['functional', 'upgrade']
tests = ['groupspace_001_pos', 'groupspace_002_pos', 'groupspace_003_pos',
'userquota_013_pos', 'userspace_003_pos']
tags = ['functional', 'userquota']
-
-[tests/functional/xattr:Linux]
-tests = ['xattr_001_pos', 'xattr_002_neg', 'xattr_003_neg', 'xattr_004_pos',
- 'xattr_005_pos', 'xattr_006_pos', 'xattr_007_neg', 'xattr_008_pos',
- 'xattr_009_neg', 'xattr_010_neg', 'xattr_011_pos', 'xattr_012_pos',
- 'xattr_013_pos']
-tags = ['functional', 'xattr']
diff --git a/tests/runfiles/sunos.run b/tests/runfiles/sunos.run
index a0dae504a..232f561a7 100644
--- a/tests/runfiles/sunos.run
+++ b/tests/runfiles/sunos.run
@@ -33,6 +33,10 @@ tags = ['functional', 'cli_root', 'zpool_add']
tests = ['zpool_create_016_pos']
tags = ['functional', 'cli_root', 'zpool_create']
+[tests/functional/xattr:illumos]
+tests = ['xattr_008_pos', 'xattr_009_neg', 'xattr_010_neg']
+tags = ['functional', 'xattr']
+
[tests/functional/zvol/zvol_misc:illumos]
tests = ['zvol_misc_001_neg', 'zvol_misc_003_neg', 'zvol_misc_004_pos',
'zvol_misc_005_neg', 'zvol_misc_006_pos']
diff --git a/tests/test-runner/bin/zts-report.py b/tests/test-runner/bin/zts-report.py
index a6937b52c..66ecbeb07 100755
--- a/tests/test-runner/bin/zts-report.py
+++ b/tests/test-runner/bin/zts-report.py
@@ -162,9 +162,6 @@ known = {
'rootpool/setup': ['SKIP', na_reason],
'rsend/rsend_008_pos': ['SKIP', '6066'],
'vdev_zaps/vdev_zaps_007_pos': ['FAIL', known_reason],
- 'xattr/xattr_008_pos': ['SKIP', na_reason],
- 'xattr/xattr_009_neg': ['SKIP', na_reason],
- 'xattr/xattr_010_neg': ['SKIP', na_reason],
'zvol/zvol_swap/zvol_swap_003_pos': ['SKIP', na_reason],
'zvol/zvol_swap/zvol_swap_005_pos': ['SKIP', na_reason],
'zvol/zvol_swap/zvol_swap_006_pos': ['SKIP', na_reason],
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_003_neg.ksh b/tests/zfs-tests/tests/functional/xattr/xattr_003_neg.ksh
index a4cb996c4..a3b25ff66 100755
--- a/tests/zfs-tests/tests/functional/xattr/xattr_003_neg.ksh
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_003_neg.ksh
@@ -56,7 +56,10 @@ log_must touch $TESTDIR/myfile.$$
create_xattr $TESTDIR/myfile.$$ passwd /etc/passwd
log_must chmod 000 $TESTDIR/myfile.$$
-if is_linux; then
+if is_illumos; then
+ log_mustnot su $ZFS_USER -c "runat $TESTDIR/myfile.$$ cat passwd"
+ log_mustnot su $ZFS_USER -c "runat $TESTDIR/myfile.$$ cp /etc/passwd ."
+else
user_run $ZFS_USER eval \
"get_xattr passwd $TESTDIR/myfile.$$ >/tmp/passwd.$$"
log_mustnot diff /etc/passwd /tmp/passwd.$$
@@ -68,9 +71,6 @@ if is_linux; then
get_xattr passwd $TESTDIR/myfile.$$ >/tmp/passwd.$$
log_must diff /etc/passwd /tmp/passwd.$$
log_must rm /tmp/passwd.$$
-else
- log_mustnot su $ZFS_USER -c "runat $TESTDIR/myfile.$$ cat passwd"
- log_mustnot su $ZFS_USER -c "runat $TESTDIR/myfile.$$ cp /etc/passwd ."
fi
log_pass "read/write xattr on a file with no permissions fails"
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_004_pos.ksh b/tests/zfs-tests/tests/functional/xattr/xattr_004_pos.ksh
index 745f06064..0a25d7ac5 100755
--- a/tests/zfs-tests/tests/functional/xattr/xattr_004_pos.ksh
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_004_pos.ksh
@@ -63,37 +63,8 @@ block_device_wait
log_must eval "new_fs $ZVOL_DEVDIR/$TESTPOOL/$TESTFS/zvol > /dev/null 2>&1"
log_must mkdir /tmp/$NEWFS_DEFAULT_FS.$$
-if is_linux; then
- log_must mount -o user_xattr \
- $ZVOL_DEVDIR/$TESTPOOL/$TESTFS/zvol /tmp/$NEWFS_DEFAULT_FS.$$
-
- # Create files in ext and tmpfs, and set some xattrs on them.
- # Use small values for xattrs for ext compatibility.
- log_must touch /tmp/$NEWFS_DEFAULT_FS.$$/$NEWFS_DEFAULT_FS-file.$$
-
- log_must touch /tmp/tmpfs-file.$$
- echo "TEST XATTR" >/tmp/xattr1
- echo "1234567890" >/tmp/xattr2
- log_must set_xattr_stdin xattr1 \
- /tmp/$NEWFS_DEFAULT_FS.$$/$NEWFS_DEFAULT_FS-file.$$ </tmp/xattr1
- log_must set_xattr_stdin xattr2 /tmp/tmpfs-file.$$ </tmp/xattr2
-
- # copy those files to ZFS
- log_must cp -a /tmp/$NEWFS_DEFAULT_FS.$$/$NEWFS_DEFAULT_FS-file.$$ \
- $TESTDIR
- log_must cp -a /tmp/tmpfs-file.$$ $TESTDIR
-
- # ensure the xattr information has been copied correctly
- log_must eval "get_xattr xattr1 $TESTDIR/$NEWFS_DEFAULT_FS-file.$$ \
- >/tmp/xattr1.$$"
-
- log_must diff /tmp/xattr1.$$ /tmp/xattr1
- log_must eval "get_xattr xattr2 $TESTDIR/tmpfs-file.$$ >/tmp/xattr2.$$"
- log_must diff /tmp/xattr2.$$ /tmp/xattr2
- log_must rm /tmp/xattr1 /tmp/xattr1.$$ /tmp/xattr2 /tmp/xattr2.$$
-
- log_must umount /tmp/$NEWFS_DEFAULT_FS.$$
-else
+log_must mkdir /tmp/tmpfs.$$
+if is_illumos; then
log_must mount $ZVOL_DEVDIR/$TESTPOOL/$TESTFS/zvol \
/tmp/$NEWFS_DEFAULT_FS.$$
@@ -116,6 +87,57 @@ else
log_must runat $TESTDIR/tmpfs-file.$$ diff group /etc/group
log_must umount /tmp/$NEWFS_DEFAULT_FS.$$
+else
+ if is_linux; then
+ options="-o user_xattr"
+ fi
+ log_must mount ${options:+""} \
+ $ZVOL_DEVDIR/$TESTPOOL/$TESTFS/zvol /tmp/$NEWFS_DEFAULT_FS.$$
+
+ # Create files in ext and tmpfs, and set some xattrs on them.
+ # Use small values for xattrs for ext compatibility.
+ log_must touch /tmp/$NEWFS_DEFAULT_FS.$$/$NEWFS_DEFAULT_FS-file.$$
+
+ echo "TEST XATTR" >/tmp/xattr1
+ echo "1234567890" >/tmp/xattr2
+
+ log_must set_xattr_stdin xattr1 \
+ /tmp/$NEWFS_DEFAULT_FS.$$/$NEWFS_DEFAULT_FS-file.$$ </tmp/xattr1
+
+ if is_linux; then
+ log_must touch /tmp/tmpfs-file.$$
+ log_must set_xattr_stdin xattr2 /tmp/tmpfs-file.$$ </tmp/xattr2
+ fi
+
+ # copy those files to ZFS
+ if is_freebsd; then
+ # cp does not preserve extattrs on FreeBSD
+ export TAPE="-"
+ log_must eval "tar cC /tmp/$NEWFS_DEFAULT_FS.$$ \
+ $NEWFS_DEFAULT_FS-file.$$ | tar xC $TESTDIR"
+ else
+ log_must cp -a \
+ /tmp/$NEWFS_DEFAULT_FS.$$/$NEWFS_DEFAULT_FS-file.$$ \
+ $TESTDIR
+ log_must cp -a /tmp/tmpfs-file.$$ $TESTDIR
+ fi
+
+ # ensure the xattr information has been copied correctly
+ log_must eval "get_xattr xattr1 $TESTDIR/$NEWFS_DEFAULT_FS-file.$$ \
+ >/tmp/xattr1.$$"
+ log_must diff /tmp/xattr1.$$ /tmp/xattr1
+ log_must rm $TESTDIR/$NEWFS_DEFAULT_FS-file.$$
+ log_must rm /tmp/xattr1 /tmp/xattr1.$$
+
+ if is_linux; then
+ log_must eval "get_xattr xattr2 $TESTDIR/tmpfs-file.$$ \
+ >/tmp/xattr2.$$"
+ log_must diff /tmp/xattr2.$$ /tmp/xattr2
+ log_must rm /tmp/tmpfs-file.$$
+ log_must rm /tmp/xattr2 /tmp/xattr2.$$
+ fi
+
+ log_must umount /tmp/$NEWFS_DEFAULT_FS.$$
fi
log_pass "Files from $NEWFS_DEFAULT_FS,tmpfs with xattrs copied to zfs retain xattr info."
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_007_neg.ksh b/tests/zfs-tests/tests/functional/xattr/xattr_007_neg.ksh
index 3073409c2..5189b6272 100755
--- a/tests/zfs-tests/tests/functional/xattr/xattr_007_neg.ksh
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_007_neg.ksh
@@ -68,20 +68,20 @@ log_must touch $TESTDIR/myfile2.$$
log_must zfs snapshot $TESTPOOL/$TESTFS@snap
# we shouldn't be able to alter the first file's xattr
-if is_linux; then
- log_mustnot eval "set_xattr_stdin cp $TESTDIR/.zfs/snapshot/snap/myfile.$$ \
- </etc/passwd > $TEST_BASE_DIR/output.$$ 2>&1"
- log_must grep -i Read-only $TEST_BASE_DIR/output.$$
- log_must eval "ls_xattr $TESTDIR/.zfs/snapshot/snap/myfile2.$$ \
- > $TEST_BASE_DIR/output.$$ 2>&1"
- log_must eval "ls_xattr $TESTDIR/myfile2.$$ > $TEST_BASE_DIR/expected_output.$$"
-else
+if is_illumos; then
log_mustnot eval " runat $TESTDIR/.zfs/snapshot/snap/myfile.$$ \
cp /etc/passwd . > $TEST_BASE_DIR/output.$$ 2>&1"
log_must grep -i Read-only $TEST_BASE_DIR/output.$$
log_must eval "runat $TESTDIR/.zfs/snapshot/snap/myfile2.$$ \
ls > $TEST_BASE_DIR/output.$$ 2>&1"
create_expected_output $TEST_BASE_DIR/expected_output.$$ SUNWattr_ro SUNWattr_rw
+else
+ log_mustnot eval "set_xattr_stdin cp $TESTDIR/.zfs/snapshot/snap/myfile.$$ \
+ </etc/passwd > $TEST_BASE_DIR/output.$$ 2>&1"
+ log_must grep -i Read-only $TEST_BASE_DIR/output.$$
+ log_must eval "ls_xattr $TESTDIR/.zfs/snapshot/snap/myfile2.$$ \
+ > $TEST_BASE_DIR/output.$$ 2>&1"
+ log_must eval "ls_xattr $TESTDIR/myfile2.$$ > $TEST_BASE_DIR/expected_output.$$"
fi
log_must diff $TEST_BASE_DIR/output.$$ $TEST_BASE_DIR/expected_output.$$
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_008_pos.ksh b/tests/zfs-tests/tests/functional/xattr/xattr_008_pos.ksh
index 45d24ac27..099a61010 100755
--- a/tests/zfs-tests/tests/functional/xattr/xattr_008_pos.ksh
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_008_pos.ksh
@@ -49,10 +49,6 @@ function cleanup {
done
}
-if is_linux; then
- log_unsupported "Test case isn't applicable to Linux"
-fi
-
log_assert "special . and .. dirs work as expected for xattrs"
log_onexit cleanup
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_009_neg.ksh b/tests/zfs-tests/tests/functional/xattr/xattr_009_neg.ksh
index f64f7e42b..c9d636ecb 100755
--- a/tests/zfs-tests/tests/functional/xattr/xattr_009_neg.ksh
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_009_neg.ksh
@@ -40,10 +40,6 @@
# 3. Verify we're unable to create a hard link
#
-if is_linux; then
- log_unsupported "Test case isn't applicable to Linux"
-fi
-
function cleanup {
log_must rm $TESTDIR/myfile.$$
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_010_neg.ksh b/tests/zfs-tests/tests/functional/xattr/xattr_010_neg.ksh
index db218c434..43502bfff 100755
--- a/tests/zfs-tests/tests/functional/xattr/xattr_010_neg.ksh
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_010_neg.ksh
@@ -41,10 +41,6 @@
#
#
-if is_linux; then
- log_unsupported "Test case isn't applicable to Linux"
-fi
-
function cleanup {
log_must rm $TESTDIR/myfile.$$
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_011_pos.ksh b/tests/zfs-tests/tests/functional/xattr/xattr_011_pos.ksh
index 6a06d1b93..fdfefbf67 100755
--- a/tests/zfs-tests/tests/functional/xattr/xattr_011_pos.ksh
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_011_pos.ksh
@@ -65,9 +65,7 @@ create_xattr $TESTDIR/myfile.$$ passwd /etc/passwd
# and try various cpio options extracting the archives
# with and without xattr support, checking for correct behaviour
-if is_linux; then
- log_note "Checking cpio - unsupported"
-else
+if is_illumos; then
log_note "Checking cpio"
log_must touch $TESTDIR/cpio.$$
create_xattr $TESTDIR/cpio.$$ passwd /etc/passwd
@@ -90,11 +88,15 @@ else
log_must cpio -iu@ < $TEST_BASE_DIR/noxattr.$$.cpio
log_mustnot eval "runat $TESTDIR/cpio.$$ cat passwd > /dev/null 2>&1"
log_must rm $TESTDIR/cpio.$$ $TEST_BASE_DIR/xattr.$$.cpio $TEST_BASE_DIR/noxattr.$$.cpio
+else
+ log_note "Checking cpio - unsupported"
fi
-log_note "Checking cp"
# check that with the right flag, the xattr is preserved
-if is_linux; then
+if is_freebsd; then
+ log_note "Checking cp - unsupported"
+elif is_linux; then
+ log_note "Checking cp"
log_must cp -a $TESTDIR/myfile.$$ $TESTDIR/myfile2.$$
compare_xattrs $TESTDIR/myfile.$$ $TESTDIR/myfile2.$$ passwd
@@ -105,6 +107,7 @@ if is_linux; then
log_mustnot get_xattr passwd $TESTDIR/myfile2.$$
log_must rm $TESTDIR/myfile2.$$
else
+ log_note "Checking cp"
log_must cp -@ $TESTDIR/myfile.$$ $TESTDIR/myfile2.$$
compare_xattrs $TESTDIR/myfile.$$ $TESTDIR/myfile2.$$ passwd
@@ -118,9 +121,7 @@ fi
# create a file without xattrs, and check that find -xattr only finds
# our test file that has an xattr.
-if is_linux; then
- log_note "Checking find - unsupported"
-else
+if is_illumos; then
log_note "Checking find"
log_must mkdir $TESTDIR/noxattrs
log_must touch $TESTDIR/noxattrs/no-xattr
@@ -132,6 +133,8 @@ else
[[ $? -eq 0 ]] && \
log_fail "find -xattr found a file that didn't have an xattr."
log_must rm -rf $TESTDIR/noxattrs
+else
+ log_note "Checking find - unsupported"
fi
log_note "Checking mv"
@@ -143,9 +146,7 @@ log_must mv $TESTDIR/mvfile.$$ $TESTDIR/mvfile2.$$
verify_xattr $TESTDIR/mvfile2.$$ passwd /etc/passwd
log_must rm $TESTDIR/mvfile2.$$
-if is_linux; then
- log_note "Checking pax - unsupported"
-else
+if is_illumos; then
log_note "Checking pax"
log_must touch $TESTDIR/pax.$$
create_xattr $TESTDIR/pax.$$ passwd /etc/passwd
@@ -172,37 +173,39 @@ else
log_must pax -r -f $TESTDIR/xattr.pax $TESTDIR
log_mustnot eval "runat $TESTDIR/pax.$$ cat passwd > /dev/null 2>&1"
log_must rm $TESTDIR/pax.$$ $TESTDIR/noxattr.pax $TESTDIR/xattr.pax
+else
+ log_note "Checking pax - unsupported"
fi
log_note "Checking tar"
-if is_linux; then
+if is_illumos; then
log_must touch $TESTDIR/tar.$$
create_xattr $TESTDIR/tar.$$ passwd /etc/passwd
log_must cd $TESTDIR
- log_must tar -cf noxattr.tar tar.$$
- log_must tar --xattrs -cf xattr.tar tar.$$
+ log_must tar cf noxattr.tar tar.$$
+ log_must tar c@f xattr.tar tar.$$
log_must rm $TESTDIR/tar.$$
# we should have no xattr here
- log_must tar --no-xattrs -xf xattr.tar
- log_mustnot get_xattr passwd $TESTDIR/tar.$$
+ log_must tar xf xattr.tar
+ log_mustnot eval "runat $TESTDIR/tar.$$ cat passwd > /dev/null 2>&1"
log_must rm $TESTDIR/tar.$$
# we should have an xattr here
- log_must tar --xattrs -xf xattr.tar
+ log_must tar x@f xattr.tar
verify_xattr tar.$$ passwd /etc/passwd
log_must rm $TESTDIR/tar.$$
# we should have no xattr here
- log_must tar --no-xattrs -xf $TESTDIR/noxattr.tar
- log_mustnot get_xattr passwd $TESTDIR/tar.$$
+ log_must tar xf $TESTDIR/noxattr.tar
+ log_mustnot eval "runat $TESTDIR/tar.$$ cat passwd > /dev/null 2>&1"
log_must rm $TESTDIR/tar.$$
# we should have no xattr here
- log_must tar --xattrs -xf $TESTDIR/noxattr.tar
- log_mustnot get_xattr passwd $TESTDIR/tar.$$
+ log_must tar x@f $TESTDIR/noxattr.tar
+ log_mustnot eval "runat $TESTDIR/tar.$$ cat passwd > /dev/null 2>&1"
log_must rm $TESTDIR/tar.$$ $TESTDIR/noxattr.tar $TESTDIR/xattr.tar
else
log_must touch $TESTDIR/tar.$$
@@ -210,28 +213,28 @@ else
log_must cd $TESTDIR
- log_must tar cf noxattr.tar tar.$$
- log_must tar c@f xattr.tar tar.$$
+ log_must tar --no-xattrs -cf noxattr.tar tar.$$
+ log_must tar --xattrs -cf xattr.tar tar.$$
log_must rm $TESTDIR/tar.$$
# we should have no xattr here
- log_must tar xf xattr.tar
- log_mustnot eval "runat $TESTDIR/tar.$$ cat passwd > /dev/null 2>&1"
+ log_must tar --no-xattrs -xf xattr.tar
+ log_mustnot get_xattr passwd $TESTDIR/tar.$$
log_must rm $TESTDIR/tar.$$
# we should have an xattr here
- log_must tar x@f xattr.tar
+ log_must tar --xattrs -xf xattr.tar
verify_xattr tar.$$ passwd /etc/passwd
log_must rm $TESTDIR/tar.$$
# we should have no xattr here
- log_must tar xf $TESTDIR/noxattr.tar
- log_mustnot eval "runat $TESTDIR/tar.$$ cat passwd > /dev/null 2>&1"
+ log_must tar --no-xattrs -xf $TESTDIR/noxattr.tar
+ log_mustnot get_xattr passwd $TESTDIR/tar.$$
log_must rm $TESTDIR/tar.$$
# we should have no xattr here
- log_must tar x@f $TESTDIR/noxattr.tar
- log_mustnot eval "runat $TESTDIR/tar.$$ cat passwd > /dev/null 2>&1"
+ log_must tar --xattrs -xf $TESTDIR/noxattr.tar
+ log_mustnot get_xattr passwd $TESTDIR/tar.$$
log_must rm $TESTDIR/tar.$$ $TESTDIR/noxattr.tar $TESTDIR/xattr.tar
fi
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_012_pos.ksh b/tests/zfs-tests/tests/functional/xattr/xattr_012_pos.ksh
index 7241caf8e..693ca0a63 100755
--- a/tests/zfs-tests/tests/functional/xattr/xattr_012_pos.ksh
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_012_pos.ksh
@@ -47,6 +47,9 @@
function cleanup {
log_must rm $TESTDIR/myfile.$$
+ if is_freebsd; then
+ log_must rm /tmp/xattr.$$
+ fi
}
function get_pool_size {
@@ -79,7 +82,17 @@ fi
FS_SIZE=$(zfs get -p -H -o value used $TESTPOOL/$TESTFS)
-if is_linux; then
+if is_freebsd; then
+ # FreeBSD setextattr has awful scaling with respect to input size.
+ # It reallocs after every 1024 bytes. For now we'll just break up
+ # the 200MB into 10 20MB attributes, but this test could be revisited
+ # if someone cared about large extattrs and improves setextattr -i.
+ log_must mkfile 20m /tmp/xattr.$$
+ for i in {0..10}; do
+ log_must eval "set_xattr_stdin xattr$i $TESTDIR/myfile.$$ \
+ < /tmp/xattr.$$"
+ done
+elif is_linux; then
# Linux setxattr() syscalls limits individual xattrs to 64k. Create
# 100 files, with 128 xattrs each of size 16k. 100*128*16k=200m
log_must xattrtest -k -f 100 -x 128 -s 16384 -p $TESTDIR
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_013_pos.ksh b/tests/zfs-tests/tests/functional/xattr/xattr_013_pos.ksh
index ec608ce28..efa9faab9 100755
--- a/tests/zfs-tests/tests/functional/xattr/xattr_013_pos.ksh
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_013_pos.ksh
@@ -65,15 +65,7 @@ log_must umount $TESTDIR
log_must zfs mount -o noxattr $TESTPOOL/$TESTFS
# check that we can't perform xattr operations
-if is_linux; then
- log_mustnot get_xattr passwd $TESTDIR/myfile.$$
- log_mustnot rm_xattr passwd $TESTDIR/myfile.$$
- log_mustnot set_xattr_stdin passwd $TESTDIR/myfile.$$ </etc/passwd
-
- log_must touch $TESTDIR/new.$$
- log_mustnot set_xattr_stdin passwd $TESTDIR/new.$$ </etc/passwd
- log_mustnot rm_xattr passwd $TESTDIR/new.$$
-else
+if is_illumos; then
log_mustnot eval "runat $TESTDIR/myfile.$$ cat passwd > /dev/null 2>&1"
log_mustnot eval "runat $TESTDIR/myfile.$$ rm passwd > /dev/null 2>&1"
log_mustnot eval "runat $TESTDIR/myfile.$$ cp /etc/passwd . \
@@ -83,6 +75,14 @@ else
log_mustnot eval "runat $TESTDIR/new.$$ cp /etc/passwd . \
> /dev/null 2>&1"
log_mustnot eval "runat $TESTDIR/new.$$ rm passwd > /dev/null 2>&1"
+else
+ log_mustnot get_xattr passwd $TESTDIR/myfile.$$
+ log_mustnot rm_xattr passwd $TESTDIR/myfile.$$
+ log_mustnot set_xattr_stdin passwd $TESTDIR/myfile.$$ </etc/passwd
+
+ log_must touch $TESTDIR/new.$$
+ log_mustnot set_xattr_stdin passwd $TESTDIR/new.$$ </etc/passwd
+ log_mustnot rm_xattr passwd $TESTDIR/new.$$
fi
# now mount the filesystem again as normal
@@ -94,10 +94,10 @@ verify_xattr $TESTDIR/myfile.$$ passwd /etc/passwd
# there should be no xattr on the file we created while the fs was mounted
# -o noxattr
-if is_linux; then
- log_mustnot get_xattr passwd $TESTDIR/new.$$
-else
+if is_illumos; then
log_mustnot eval "runat $TESTDIR/new.$$ cat passwd > /dev/null 2>&1"
+else
+ log_mustnot get_xattr passwd $TESTDIR/new.$$
fi
create_xattr $TESTDIR/new.$$ passwd /etc/passwd
diff --git a/tests/zfs-tests/tests/functional/xattr/xattr_common.kshlib b/tests/zfs-tests/tests/functional/xattr/xattr_common.kshlib
index 5c7e8eb65..bc06f4716 100644
--- a/tests/zfs-tests/tests/functional/xattr/xattr_common.kshlib
+++ b/tests/zfs-tests/tests/functional/xattr/xattr_common.kshlib
@@ -39,14 +39,14 @@ function create_xattr { # filename xattr_name xattr_contents
typeset XATTR_NAME=$2
typeset XATTR_CONTENTS=$3
- if is_linux; then
- log_mustnot get_xattr $XATTR_NAME $FILE
- log_must set_xattr_stdin $XATTR_NAME $FILE < $XATTR_CONTENTS
- else
+ if is_illumos; then
# read any empty xattr on that file
log_must runat $FILE ls
# create the xattr
log_must runat $FILE cp $XATTR_CONTENTS $XATTR_NAME
+ else
+ log_mustnot get_xattr $XATTR_NAME $FILE
+ log_must set_xattr_stdin $XATTR_NAME $FILE < $XATTR_CONTENTS
fi
verify_xattr $FILE $XATTR_NAME $XATTR_CONTENTS
@@ -59,12 +59,12 @@ function compare_xattrs { # filename1 filename2 xattr_name
typeset FILE2=$2
typeset XATTR_NAME=$3
- if is_linux; then
- get_xattr $XATTR_NAME $FILE1 > $TEST_BASE_DIR/file1.$$
- get_xattr $XATTR_NAME $FILE2 > $TEST_BASE_DIR/file2.$$
- else
+ if is_illumos; then
runat $FILE1 cat $XATTR_NAME > $TEST_BASE_DIR/file1.$$
runat $FILE2 cat $XATTR_NAME > $TEST_BASE_DIR/file2.$$
+ else
+ get_xattr $XATTR_NAME $FILE1 > $TEST_BASE_DIR/file1.$$
+ get_xattr $XATTR_NAME $FILE2 > $TEST_BASE_DIR/file2.$$
fi
log_must diff $TEST_BASE_DIR/file1.$$ $TEST_BASE_DIR/file2.$$
@@ -77,12 +77,12 @@ function verify_xattr { # filename xattr_name xattr_contents
typeset XATTR_CONTENTS=$3
# read the xattr, writing it to a temp file
- if is_linux; then
+ if is_illumos; then
log_must eval \
- "get_xattr $XATTR_NAME $FILE > $TEST_BASE_DIR/$XATTR_NAME.$$"
+ "runat $FILE cat $XATTR_NAME > $TEST_BASE_DIR/$XATTR_NAME.$$ 2>&1"
else
log_must eval \
- "runat $FILE cat $XATTR_NAME > $TEST_BASE_DIR/$XATTR_NAME.$$ 2>&1"
+ "get_xattr $XATTR_NAME $FILE > $TEST_BASE_DIR/$XATTR_NAME.$$"
fi
log_must diff $XATTR_CONTENTS $TEST_BASE_DIR/$XATTR_NAME.$$
@@ -94,12 +94,12 @@ function delete_xattr { # filename xattr_name
typeset XATTR_NAME=$2
# delete the xattr
- if is_linux; then
- log_must rm_xattr $XATTR_NAME $FILE
- log_mustnot get_xattr $XATTR_NAME $FILE
- else
+ if is_illumos; then
log_must runat $FILE rm $XATTR_NAME
log_mustnot eval "runat $FILE ls $XATTR_NAME > /dev/null 2>&1"
+ else
+ log_must rm_xattr $XATTR_NAME $FILE
+ log_mustnot get_xattr $XATTR_NAME $FILE
fi
}
@@ -108,14 +108,14 @@ function verify_write_xattr { # filename xattr_name
typeset FILE=$1
typeset XATTR_NAME=$2
- if is_linux; then
- log_must set_xattr_stdin $XATTR_NAME $FILE < /etc/passwd
- log_must eval \
- "get_xattr $XATTR_NAME $FILE > $TEST_BASE_DIR/$XATTR_NAME.$$"
- else
+ if is_illumos; then
log_must eval "runat $FILE dd if=/etc/passwd of=$XATTR_NAME"
log_must eval \
"runat $FILE cat $XATTR_NAME > $TEST_BASE_DIR/$XATTR_NAME.$$ 2>&1"
+ else
+ log_must set_xattr_stdin $XATTR_NAME $FILE < /etc/passwd
+ log_must eval \
+ "get_xattr $XATTR_NAME $FILE > $TEST_BASE_DIR/$XATTR_NAME.$$"
fi
log_must dd if=/etc/passwd of=$TEST_BASE_DIR/passwd_dd.$$
log_must diff $TEST_BASE_DIR/passwd_dd.$$ $TEST_BASE_DIR/$XATTR_NAME.$$
@@ -123,15 +123,15 @@ function verify_write_xattr { # filename xattr_name
}
# this function is to create the expected output
-function create_expected_output { # expected_output_file contents_of_the_output
- typeset FILE=$1
- shift
- if [[ -f $FILE ]]; then
- log_must rm $FILE
- fi
-
- for line in $@
- do
- log_must eval "echo $line >> $FILE"
- done
- }
+function create_expected_output { # expected_output_file contents_of_the_output
+ typeset FILE=$1
+ shift
+ if [[ -f $FILE ]]; then
+ log_must rm $FILE
+ fi
+
+ for line in $@
+ do
+ log_must eval "echo $line >> $FILE"
+ done
+}