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 <behlendorf1@llnl.gov> Signed-off-by: Ryan Moeller <ryan@ixsystems.com> Closes #9872
This commit is contained in:
parent
35b07497c6
commit
dbfec5cc09
|
@ -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']
|
||||
|
|
|
@ -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']
|
||||
|
|
|
@ -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']
|
||||
|
|
|
@ -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],
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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.$$
|
||||
|
||||
|
@ -115,6 +86,57 @@ else
|
|||
diff passwd /etc/passwd
|
||||
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
|
||||
|
||||
|
|
|
@ -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.$$
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.$$
|
||||
|
|
|
@ -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.$$
|
||||
|
|
|
@ -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,39 +173,12 @@ 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
|
||||
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 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 rm $TESTDIR/tar.$$
|
||||
|
||||
# we should have an xattr here
|
||||
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 --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 --xattrs -xf $TESTDIR/noxattr.tar
|
||||
log_mustnot get_xattr passwd $TESTDIR/tar.$$
|
||||
log_must rm $TESTDIR/tar.$$ $TESTDIR/noxattr.tar $TESTDIR/xattr.tar
|
||||
else
|
||||
if is_illumos; then
|
||||
log_must touch $TESTDIR/tar.$$
|
||||
create_xattr $TESTDIR/tar.$$ passwd /etc/passwd
|
||||
|
||||
|
@ -233,6 +207,35 @@ else
|
|||
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.$$
|
||||
create_xattr $TESTDIR/tar.$$ passwd /etc/passwd
|
||||
|
||||
log_must cd $TESTDIR
|
||||
|
||||
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 --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 --xattrs -xf 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 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 rm $TESTDIR/tar.$$ $TESTDIR/noxattr.tar $TESTDIR/xattr.tar
|
||||
fi
|
||||
|
||||
log_assert "Basic applications work with xattrs: cpio cp find mv pax tar"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
log_must eval \
|
||||
"get_xattr $XATTR_NAME $FILE > $TEST_BASE_DIR/$XATTR_NAME.$$"
|
||||
else
|
||||
if is_illumos; then
|
||||
log_must eval \
|
||||
"runat $FILE cat $XATTR_NAME > $TEST_BASE_DIR/$XATTR_NAME.$$ 2>&1"
|
||||
else
|
||||
log_must eval \
|
||||
"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.$$
|
||||
|
@ -134,4 +134,4 @@ function create_expected_output { # expected_output_file contents_of_the_outpu
|
|||
do
|
||||
log_must eval "echo $line >> $FILE"
|
||||
done
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue