mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-25 03:37:45 +03:00
Update ZTS to work on FreeBSD
Update the common ZTS scripts and individual test cases as needed in order to allow them to be run on FreeBSD. The high level goal is to provide compatibility wrappers whenever possible to minimize changes to individual test cases. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: John Kennedy <john.kennedy@delphix.com> Signed-off-by: Matt Macy <mmacy@FreeBSD.org> Signed-off-by: Ryan Moeller <ryan@ixsystems.com> Closes #9692
This commit is contained in:
committed by
Brian Behlendorf
parent
118fc3ef07
commit
7839c4b5e1
@@ -43,6 +43,10 @@ if ! is_linux; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if is_freebsd; then
|
||||
log_must sysctl vfs.usermount=0
|
||||
fi
|
||||
|
||||
if is_linux; then
|
||||
log_must set_tunable64 zfs_admin_snapshot 0
|
||||
fi
|
||||
|
||||
@@ -483,6 +483,7 @@ function verify_userprop
|
||||
typeset stamp=${perm}.${user}.$(date +'%F-%T-%N')
|
||||
|
||||
user_run $user zfs set "$user:ts=$stamp" $dtst
|
||||
zpool sync ${dtst%%/*}
|
||||
if [[ $stamp != $(get_prop "$user:ts" $dtst) ]]; then
|
||||
return 1
|
||||
fi
|
||||
@@ -684,7 +685,7 @@ function verify_fs_destroy
|
||||
|
||||
# Verify that given the correct delegation, a regular user can:
|
||||
# Take a snapshot of an unmounted dataset
|
||||
# Take a snapshot of an mounted dataset
|
||||
# Take a snapshot of a mounted dataset
|
||||
# Create a snapshot by making a directory in the .zfs/snapshot directory
|
||||
function verify_fs_snapshot
|
||||
{
|
||||
@@ -716,12 +717,15 @@ function verify_fs_snapshot
|
||||
fi
|
||||
log_must zfs destroy $snap
|
||||
|
||||
typeset snapdir=${mntpt}/.zfs/snapshot/snap.$stamp
|
||||
user_run $user mkdir $snapdir
|
||||
if ! datasetexists $snap ; then
|
||||
return 1
|
||||
# Creating snaps via mkdir is not supported on FreeBSD
|
||||
if ! is_freebsd; then
|
||||
typeset snapdir=${mntpt}/.zfs/snapshot/snap.$stamp
|
||||
user_run $user mkdir $snapdir
|
||||
if ! datasetexists $snap ; then
|
||||
return 1
|
||||
fi
|
||||
log_must zfs destroy $snap
|
||||
fi
|
||||
log_must zfs destroy $snap
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -44,6 +44,11 @@ if ! is_linux; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if is_freebsd; then
|
||||
# To pass user mount tests
|
||||
log_must sysctl vfs.usermount=1
|
||||
fi
|
||||
|
||||
cleanup_user_group
|
||||
|
||||
# Create staff group and add two user to it
|
||||
|
||||
@@ -83,7 +83,7 @@ if ! cat /etc/group | awk -F: '{print $1}' | \
|
||||
grep -w 'everyone' > /dev/null 2>&1
|
||||
then
|
||||
group_added="TRUE"
|
||||
log_must groupadd everyone
|
||||
log_must add_group everyone
|
||||
fi
|
||||
|
||||
for dtst in $DATASETS ; do
|
||||
@@ -92,7 +92,7 @@ for dtst in $DATASETS ; do
|
||||
done
|
||||
log_must restore_root_datasets
|
||||
if [[ $group_added == "TRUE" ]]; then
|
||||
log_must groupdel everyone
|
||||
log_must del_group everyone
|
||||
fi
|
||||
|
||||
log_pass "everyone is always interpreted as keyword passed."
|
||||
|
||||
@@ -87,6 +87,47 @@ set -A perms create true false \
|
||||
promote true true \
|
||||
xattr true false \
|
||||
receive true false
|
||||
|
||||
elif is_freebsd; then
|
||||
# Results in Results in
|
||||
# Permission Filesystem Volume
|
||||
#
|
||||
# Removed for FreeBSD
|
||||
# - zoned - zones are not supported
|
||||
# - sharenfs - sharing requires superuser privileges
|
||||
# - share - sharing requires superuser privileges
|
||||
# - xattr - Not supported on FreeBSD
|
||||
#
|
||||
set -A perms create true false \
|
||||
snapshot true true \
|
||||
mount true false \
|
||||
send true true \
|
||||
allow true true \
|
||||
quota true false \
|
||||
reservation true true \
|
||||
dnodesize true false \
|
||||
recordsize true false \
|
||||
mountpoint true false \
|
||||
checksum true true \
|
||||
compression true true \
|
||||
canmount true false \
|
||||
atime true false \
|
||||
devices true false \
|
||||
exec true false \
|
||||
volsize false true \
|
||||
setuid true false \
|
||||
readonly true true \
|
||||
snapdir true false \
|
||||
userprop true true \
|
||||
aclmode true false \
|
||||
aclinherit true false \
|
||||
rollback true true \
|
||||
clone true true \
|
||||
rename true true \
|
||||
promote true true \
|
||||
receive true false \
|
||||
destroy true true
|
||||
|
||||
else
|
||||
|
||||
set -A perms create true false \
|
||||
|
||||
@@ -61,6 +61,12 @@ set -A perms create snapshot mount send allow quota reservation \
|
||||
devices exec volsize setuid readonly snapdir userprop \
|
||||
rollback clone rename promote dnodesize \
|
||||
zoned xattr receive destroy
|
||||
elif is_freebsd; then
|
||||
set -A perms create snapshot mount send allow quota reservation \
|
||||
recordsize mountpoint checksum compression canmount atime \
|
||||
devices exec volsize setuid readonly snapdir userprop \
|
||||
aclmode aclinherit rollback clone rename promote dnodesize \
|
||||
zoned receive destroy
|
||||
else
|
||||
set -A perms create snapshot mount send allow quota reservation \
|
||||
recordsize mountpoint checksum compression canmount atime \
|
||||
|
||||
Reference in New Issue
Block a user