summaryrefslogtreecommitdiffstats
path: root/tools/regression/fstest/tests
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2010-08-06 23:58:54 +0000
committerpjd <pjd@FreeBSD.org>2010-08-06 23:58:54 +0000
commitfb4dcd8fd53b106fdfa091d22a5c711126934e5f (patch)
tree8ecd81889cf56fcddc8a708710c86773bdd166e1 /tools/regression/fstest/tests
parent2c643eaad8bc406694b08214c18389cd94446e22 (diff)
downloadFreeBSD-src-fb4dcd8fd53b106fdfa091d22a5c711126934e5f.zip
FreeBSD-src-fb4dcd8fd53b106fdfa091d22a5c711126934e5f.tar.gz
Various cleanups, mostly to make the test work on FreeBSD/ZFS.
Diffstat (limited to 'tools/regression/fstest/tests')
-rw-r--r--tools/regression/fstest/tests/chmod/08.t89
-rw-r--r--tools/regression/fstest/tests/chmod/09.t49
-rw-r--r--tools/regression/fstest/tests/chown/08.t83
-rw-r--r--tools/regression/fstest/tests/chown/09.t49
-rw-r--r--tools/regression/fstest/tests/granular/00.t2
-rw-r--r--tools/regression/fstest/tests/granular/01.t2
-rw-r--r--tools/regression/fstest/tests/granular/02.t2
-rw-r--r--tools/regression/fstest/tests/granular/03.t2
-rw-r--r--tools/regression/fstest/tests/granular/04.t2
-rw-r--r--tools/regression/fstest/tests/granular/05.t2
-rw-r--r--tools/regression/fstest/tests/link/05.t61
-rw-r--r--tools/regression/fstest/tests/link/12.t84
-rw-r--r--tools/regression/fstest/tests/link/13.t62
-rw-r--r--tools/regression/fstest/tests/link/14.t43
-rw-r--r--tools/regression/fstest/tests/link/15.t51
-rw-r--r--tools/regression/fstest/tests/link/16.t57
-rw-r--r--tools/regression/fstest/tests/mkdir/08.t45
-rw-r--r--tools/regression/fstest/tests/mkdir/09.t43
-rw-r--r--tools/regression/fstest/tests/mkdir/11.t47
-rw-r--r--tools/regression/fstest/tests/mkfifo/08.t43
-rw-r--r--tools/regression/fstest/tests/mkfifo/10.t45
-rw-r--r--tools/regression/fstest/tests/mkfifo/11.t47
-rw-r--r--tools/regression/fstest/tests/open/09.t45
-rw-r--r--tools/regression/fstest/tests/open/10.t45
-rw-r--r--tools/regression/fstest/tests/open/11.t43
-rw-r--r--tools/regression/fstest/tests/open/14.t49
-rw-r--r--tools/regression/fstest/tests/open/15.t39
-rw-r--r--tools/regression/fstest/tests/open/18.t25
-rw-r--r--tools/regression/fstest/tests/open/19.t48
-rw-r--r--tools/regression/fstest/tests/open/20.t25
-rw-r--r--tools/regression/fstest/tests/rename/06.t57
-rw-r--r--tools/regression/fstest/tests/rename/07.t87
-rw-r--r--tools/regression/fstest/tests/rename/08.t69
-rw-r--r--tools/regression/fstest/tests/rename/15.t69
-rw-r--r--tools/regression/fstest/tests/rename/16.t53
-rw-r--r--tools/regression/fstest/tests/rmdir/09.t54
-rw-r--r--tools/regression/fstest/tests/rmdir/10.t49
-rw-r--r--tools/regression/fstest/tests/rmdir/13.t29
-rw-r--r--tools/regression/fstest/tests/rmdir/14.t39
-rw-r--r--tools/regression/fstest/tests/symlink/09.t45
-rw-r--r--tools/regression/fstest/tests/symlink/10.t53
-rw-r--r--tools/regression/fstest/tests/symlink/11.t47
-rw-r--r--tools/regression/fstest/tests/truncate/08.t67
-rw-r--r--tools/regression/fstest/tests/truncate/10.t49
-rw-r--r--tools/regression/fstest/tests/truncate/11.t21
-rw-r--r--tools/regression/fstest/tests/unlink/09.t52
-rw-r--r--tools/regression/fstest/tests/unlink/10.t49
-rw-r--r--tools/regression/fstest/tests/unlink/12.t39
48 files changed, 1253 insertions, 904 deletions
diff --git a/tools/regression/fstest/tests/chmod/08.t b/tools/regression/fstest/tests/chmod/08.t
index 110bace..d502241 100644
--- a/tools/regression/fstest/tests/chmod/08.t
+++ b/tools/regression/fstest/tests/chmod/08.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..40"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..22"
+ ;;
+FreeBSD:UFS)
+ echo "1..44"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
@@ -18,30 +27,7 @@ expect EPERM chmod ${n0} 0600
expect 0644 stat ${n0} mode
expect 0 chflags ${n0} none
expect 0 chmod ${n0} 0600
-expect 0 unlink ${n0}
-
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM chmod ${n0} 0600
-expect 0644 stat ${n0} mode
-expect 0 chflags ${n0} none
-expect 0 chmod ${n0} 0600
-expect 0 unlink ${n0}
-
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} SF_APPEND
-expect EPERM chmod ${n0} 0600
-expect 0644 stat ${n0} mode
-expect 0 chflags ${n0} none
-expect 0 chmod ${n0} 0600
-expect 0 unlink ${n0}
-
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_APPEND
-expect EPERM chmod ${n0} 0600
-expect 0644 stat ${n0} mode
-expect 0 chflags ${n0} none
-expect 0 chmod ${n0} 0600
+expect 0600 stat ${n0} mode
expect 0 unlink ${n0}
expect 0 create ${n0} 0644
@@ -51,9 +37,50 @@ expect 0600 stat ${n0} mode
expect 0 chflags ${n0} none
expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 chmod ${n0} 0600
-expect 0600 stat ${n0} mode
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} SF_APPEND
+ expect 0 chmod ${n0} 0600
+ expect 0600 stat ${n0} mode
+ expect 0 chflags ${n0} none
+ expect 0 chmod ${n0} 0600
+ expect 0600 stat ${n0} mode
+ expect 0 unlink ${n0}
+ ;;
+FreeBSD:UFS)
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} SF_APPEND
+ expect EPERM chmod ${n0} 0600
+ expect 0644 stat ${n0} mode
+ expect 0 chflags ${n0} none
+ expect 0 chmod ${n0} 0600
+ expect 0600 stat ${n0} mode
+ expect 0 unlink ${n0}
+
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM chmod ${n0} 0600
+ expect 0644 stat ${n0} mode
+ expect 0 chflags ${n0} none
+ expect 0 chmod ${n0} 0600
+ expect 0600 stat ${n0} mode
+ expect 0 unlink ${n0}
+
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 chmod ${n0} 0600
+ expect 0600 stat ${n0} mode
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
+
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_APPEND
+ expect EPERM chmod ${n0} 0600
+ expect 0644 stat ${n0} mode
+ expect 0 chflags ${n0} none
+ expect 0 chmod ${n0} 0600
+ expect 0600 stat ${n0} mode
+ expect 0 unlink ${n0}
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/chmod/09.t b/tools/regression/fstest/tests/chmod/09.t
index edf1f3a..c3b610b 100644
--- a/tools/regression/fstest/tests/chmod/09.t
+++ b/tools/regression/fstest/tests/chmod/09.t
@@ -6,32 +6,27 @@ desc="chmod returns EROFS if the named file resides on a read-only file system"
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..10"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..10"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
- expect 0 chmod ${n0}/${n1} 0640
- expect 0640 stat ${n0}/${n1} mode
- mount -ur /dev/md${n}
- expect EROFS chmod ${n0}/${n1} 0600
- expect 0640 stat ${n0}/${n1} mode
- mount -uw /dev/md${n}
- expect 0 chmod ${n0}/${n1} 0600
- expect 0600 stat ${n0}/${n1} mode
- expect 0 unlink ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+expect 0 chmod ${n0}/${n1} 0640
+expect 0640 stat ${n0}/${n1} mode
+mount -ur /dev/md${n}
+expect EROFS chmod ${n0}/${n1} 0600
+expect 0640 stat ${n0}/${n1} mode
+mount -uw /dev/md${n}
+expect 0 chmod ${n0}/${n1} 0600
+expect 0600 stat ${n0}/${n1} mode
+expect 0 unlink ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chown/08.t b/tools/regression/fstest/tests/chown/08.t
index 9fed455..9bff354 100644
--- a/tools/regression/fstest/tests/chown/08.t
+++ b/tools/regression/fstest/tests/chown/08.t
@@ -8,46 +8,77 @@ dir=`dirname $0`
require chflags
-echo "1..34"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..20"
+ ;;
+FreeBSD:UFS)
+ echo "1..44"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
expect 0 create ${n0} 0644
expect 0 chflags ${n0} SF_IMMUTABLE
expect EPERM chown ${n0} 65534 65534
+expect 0,0 stat ${n0} uid,gid
expect 0 chflags ${n0} none
expect 0 chown ${n0} 65534 65534
+expect 65534,65534 stat ${n0} uid,gid
expect 0 unlink ${n0}
expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM chown ${n0} 65534 65534
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 chown ${n0} 65534 65534
-expect 0 unlink ${n0}
-
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} SF_APPEND
-expect EPERM chown ${n0} 65534 65534
+expect 65534,65534 stat ${n0} uid,gid
expect 0 chflags ${n0} none
-expect 0 chown ${n0} 65534 65534
expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_APPEND
-expect EPERM chown ${n0} 65534 65534
-expect 0 chflags ${n0} none
-expect 0 chown ${n0} 65534 65534
-expect 0 unlink ${n0}
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} SF_APPEND
+ expect 0 chown ${n0} 65534 65534
+ expect 65534,65534 stat ${n0} uid,gid
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
+ ;;
+FreeBSD:UFS)
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} SF_APPEND
+ expect EPERM chown ${n0} 65534 65534
+ expect 0,0 stat ${n0} uid,gid
+ expect 0 chflags ${n0} none
+ expect 0 chown ${n0} 65534 65534
+ expect 65534,65534 stat ${n0} uid,gid
+ expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 chown ${n0} 65534 65534
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM chown ${n0} 65534 65534
+ expect 0,0 stat ${n0} uid,gid
+ expect 0 chflags ${n0} none
+ expect 0 chown ${n0} 65534 65534
+ expect 65534,65534 stat ${n0} uid,gid
+ expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 chown ${n0} 65534 65534
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 chown ${n0} 65534 65534
+ expect 65534,65534 stat ${n0} uid,gid
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
+
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_APPEND
+ expect EPERM chown ${n0} 65534 65534
+ expect 0,0 stat ${n0} uid,gid
+ expect 0 chflags ${n0} none
+ expect 0 chown ${n0} 65534 65534
+ expect 65534,65534 stat ${n0} uid,gid
+ expect 0 unlink ${n0}
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/chown/09.t b/tools/regression/fstest/tests/chown/09.t
index 9751f97..cc14328 100644
--- a/tools/regression/fstest/tests/chown/09.t
+++ b/tools/regression/fstest/tests/chown/09.t
@@ -6,32 +6,27 @@ desc="chown returns EROFS if the named file resides on a read-only file system"
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:{fs}" in
-FreeBSD:UFS)
- echo "1..10"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..10"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
- expect 0 chown ${n0}/${n1} 65534 65534
- expect 65534,65534 stat ${n0}/${n1} uid,gid
- mount -ur /dev/md${n}
- expect EROFS chown ${n0}/${n1} 65533 65533
- expect 65534,65534 stat ${n0}/${n1} uid,gid
- mount -uw /dev/md${n}
- expect 0 chown ${n0}/${n1} 65533 65533
- expect 65533,65533 stat ${n0}/${n1} uid,gid
- expect 0 unlink ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+expect 0 chown ${n0}/${n1} 65534 65534
+expect 65534,65534 stat ${n0}/${n1} uid,gid
+mount -ur /dev/md${n}
+expect EROFS chown ${n0}/${n1} 65533 65533
+expect 65534,65534 stat ${n0}/${n1} uid,gid
+mount -uw /dev/md${n}
+expect 0 chown ${n0}/${n1} 65533 65533
+expect 65533,65533 stat ${n0}/${n1} uid,gid
+expect 0 unlink ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/granular/00.t b/tools/regression/fstest/tests/granular/00.t
index 84533bd..4e04260 100644
--- a/tools/regression/fstest/tests/granular/00.t
+++ b/tools/regression/fstest/tests/granular/00.t
@@ -6,6 +6,8 @@ desc="NFSv4 granular permissions checking - WRITE_DATA vs APPEND_DATA on directo
dir=`dirname $0`
. ${dir}/../misc.sh
+[ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit
+
echo "1..49"
n0=`namegen`
diff --git a/tools/regression/fstest/tests/granular/01.t b/tools/regression/fstest/tests/granular/01.t
index f1bac1b..1c6b3f3 100644
--- a/tools/regression/fstest/tests/granular/01.t
+++ b/tools/regression/fstest/tests/granular/01.t
@@ -6,6 +6,8 @@ desc="NFSv4 granular permissions checking - ACL_READ_ATTRIBUTES and ACL_WRITE_AT
dir=`dirname $0`
. ${dir}/../misc.sh
+[ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit
+
echo "1..12"
n0=`namegen`
diff --git a/tools/regression/fstest/tests/granular/02.t b/tools/regression/fstest/tests/granular/02.t
index 80d6654..4a33dad 100644
--- a/tools/regression/fstest/tests/granular/02.t
+++ b/tools/regression/fstest/tests/granular/02.t
@@ -6,6 +6,8 @@ desc="NFSv4 granular permissions checking - ACL_READ_ACL and ACL_WRITE_ACL"
dir=`dirname $0`
. ${dir}/../misc.sh
+[ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit
+
echo "1..83"
n0=`namegen`
diff --git a/tools/regression/fstest/tests/granular/03.t b/tools/regression/fstest/tests/granular/03.t
index ec8cebf..195065f 100644
--- a/tools/regression/fstest/tests/granular/03.t
+++ b/tools/regression/fstest/tests/granular/03.t
@@ -6,6 +6,8 @@ desc="NFSv4 granular permissions checking - DELETE and DELETE_CHILD"
dir=`dirname $0`
. ${dir}/../misc.sh
+[ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit
+
echo "1..65"
n0=`namegen`
diff --git a/tools/regression/fstest/tests/granular/04.t b/tools/regression/fstest/tests/granular/04.t
index 9bd55f2..9c0841d 100644
--- a/tools/regression/fstest/tests/granular/04.t
+++ b/tools/regression/fstest/tests/granular/04.t
@@ -6,6 +6,8 @@ desc="NFSv4 granular permissions checking - ACL_WRITE_OWNER"
dir=`dirname $0`
. ${dir}/../misc.sh
+[ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit
+
echo "1..52"
n0=`namegen`
diff --git a/tools/regression/fstest/tests/granular/05.t b/tools/regression/fstest/tests/granular/05.t
index 7b29774..8abf357 100644
--- a/tools/regression/fstest/tests/granular/05.t
+++ b/tools/regression/fstest/tests/granular/05.t
@@ -6,6 +6,8 @@ desc="NFSv4 granular permissions checking - DELETE and DELETE_CHILD with directo
dir=`dirname $0`
. ${dir}/../misc.sh
+[ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit
+
echo "1..68"
n0=`namegen`
diff --git a/tools/regression/fstest/tests/link/05.t b/tools/regression/fstest/tests/link/05.t
index c1da717..ee63ef6 100644
--- a/tools/regression/fstest/tests/link/05.t
+++ b/tools/regression/fstest/tests/link/05.t
@@ -6,36 +6,31 @@ desc="link returns EMLINK if the link count of the file named by name1 would exc
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..5"
-
- n0=`namegen`
- n1=`namegen`
- n2=`namegen`
-
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs -i 1 /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
- i=1
- while :; do
- link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1
- if [ $? -ne 0 ]; then
- break
- fi
- i=`expr $i + 1`
- done
- test_check $i -eq 32767
-
- expect EMLINK link ${n0}/${n1} ${n0}/${n2}
-
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs -i 1 /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+i=1
+while :; do
+ link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+done
+test_check $i -eq 32767
+
+expect EMLINK link ${n0}/${n1} ${n0}/${n2}
+
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/12.t b/tools/regression/fstest/tests/link/12.t
index 1f1efdc..8bf9510 100644
--- a/tools/regression/fstest/tests/link/12.t
+++ b/tools/regression/fstest/tests/link/12.t
@@ -8,48 +8,88 @@ dir=`dirname $0`
require chflags
-echo "1..32"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..27"
+ ;;
+FreeBSD:UFS)
+ echo "1..48"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
expect 0 create ${n0} 0644
+expect 1 stat ${n0} nlink
expect 0 link ${n0} ${n1}
+expect 2 stat ${n0} nlink
expect 0 unlink ${n1}
+expect 1 stat ${n0} nlink
expect 0 chflags ${n0} SF_IMMUTABLE
+todo FreeBSD:ZFS "Creating a hard link to a file protected by SF_IMMUTABLE should return EPERM."
expect EPERM link ${n0} ${n1}
+todo FreeBSD:ZFS "Creating a hard link to a file protected by SF_IMMUTABLE should return EPERM."
+expect 1 stat ${n0} nlink
expect 0 chflags ${n0} none
+todo FreeBSD:ZFS "Creating a hard link to a file protected by SF_IMMUTABLE should return EPERM."
expect 0 link ${n0} ${n1}
+expect 2 stat ${n0} nlink
expect 0 unlink ${n1}
+expect 1 stat ${n0} nlink
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM link ${n0} ${n1}
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 link ${n0} ${n1}
-expect 0 unlink ${n1}
-
-expect 0 chflags ${n0} SF_APPEND
-expect EPERM link ${n0} ${n1}
+expect 2 stat ${n0} nlink
expect 0 chflags ${n0} none
-expect 0 link ${n0} ${n1}
expect 0 unlink ${n1}
+expect 1 stat ${n0} nlink
-expect 0 chflags ${n0} UF_APPEND
-expect EPERM link ${n0} ${n1}
-expect 0 chflags ${n0} none
-expect 0 link ${n0} ${n1}
-expect 0 unlink ${n1}
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ expect 0 chflags ${n0} SF_APPEND
+ expect 0 link ${n0} ${n1}
+ expect 2 stat ${n0} nlink
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n1}
+ expect 1 stat ${n0} nlink
+ ;;
+FreeBSD:UFS)
+ expect 0 chflags ${n0} SF_APPEND
+ expect EPERM link ${n0} ${n1}
+ expect 0 chflags ${n0} none
+ expect 0 link ${n0} ${n1}
+ expect 2 stat ${n0} nlink
+ expect 0 unlink ${n1}
+ expect 1 stat ${n0} nlink
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 link ${n0} ${n1}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n1}
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM link ${n0} ${n1}
+ expect 0 chflags ${n0} none
+ expect 0 link ${n0} ${n1}
+ expect 2 stat ${n0} nlink
+ expect 0 unlink ${n1}
+ expect 1 stat ${n0} nlink
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 link ${n0} ${n1}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n1}
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 link ${n0} ${n1}
+ expect 2 stat ${n0} nlink
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n1}
+ expect 1 stat ${n0} nlink
+
+ expect 0 chflags ${n0} UF_APPEND
+ expect EPERM link ${n0} ${n1}
+ expect 0 chflags ${n0} none
+ expect 0 link ${n0} ${n1}
+ expect 2 stat ${n0} nlink
+ expect 0 unlink ${n1}
+ expect 1 stat ${n0} nlink
+ ;;
+esac
expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/link/13.t b/tools/regression/fstest/tests/link/13.t
index f6a00ea..9b35a4b 100644
--- a/tools/regression/fstest/tests/link/13.t
+++ b/tools/regression/fstest/tests/link/13.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..32"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..29"
+ ;;
+FreeBSD:UFS)
+ echo "1..49"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
@@ -17,40 +26,61 @@ n2=`namegen`
expect 0 mkdir ${n0} 0755
expect 0 create ${n0}/${n1} 0644
+expect 1 stat ${n0}/${n1} nlink
expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 2 stat ${n0}/${n1} nlink
expect 0 unlink ${n0}/${n2}
+expect 1 stat ${n0}/${n1} nlink
expect 0 chflags ${n0} SF_IMMUTABLE
expect EPERM link ${n0}/${n1} ${n0}/${n2}
+expect 1 stat ${n0}/${n1} nlink
expect 0 chflags ${n0} none
expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 2 stat ${n0}/${n1} nlink
expect 0 unlink ${n0}/${n2}
+expect 1 stat ${n0}/${n1} nlink
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM link ${n0}/${n1} ${n0}/${n2}
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 2 stat ${n0}/${n1} nlink
+expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n2}
+expect 1 stat ${n0}/${n1} nlink
expect 0 chflags ${n0} SF_APPEND
expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 2 stat ${n0}/${n1} nlink
expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n2}
+expect 1 stat ${n0}/${n1} nlink
-expect 0 chflags ${n0} UF_APPEND
-expect 0 link ${n0}/${n1} ${n0}/${n2}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n2}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM link ${n0}/${n1} ${n0}/${n2}
+ expect 1 stat ${n0}/${n1} nlink
+ expect 0 chflags ${n0} none
+ expect 0 link ${n0}/${n1} ${n0}/${n2}
+ expect 2 stat ${n0}/${n1} nlink
+ expect 0 unlink ${n0}/${n2}
+ expect 1 stat ${n0}/${n1} nlink
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 link ${n0}/${n1} ${n0}/${n2}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n2}
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 link ${n0}/${n1} ${n0}/${n2}
+ expect 2 stat ${n0}/${n1} nlink
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}/${n2}
+ expect 1 stat ${n0}/${n1} nlink
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 link ${n0}/${n1} ${n0}/${n2}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n2}
+ expect 0 chflags ${n0} UF_APPEND
+ expect 0 link ${n0}/${n1} ${n0}/${n2}
+ expect 2 stat ${n0}/${n1} nlink
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}/${n2}
+ expect 1 stat ${n0}/${n1} nlink
+ ;;
+esac
expect 0 unlink ${n0}/${n1}
expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/14.t b/tools/regression/fstest/tests/link/14.t
index 2b0dca3..4eb5a56 100644
--- a/tools/regression/fstest/tests/link/14.t
+++ b/tools/regression/fstest/tests/link/14.t
@@ -6,29 +6,24 @@ desc="link returns EXDEV if the source and the destination files are on differen
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}" in
-FreeBSD)
- echo "1..8"
+[ "${os}" = "FreeBSD" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
- n2=`namegen`
+echo "1..8"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
- expect EXDEV link ${n0}/${n1} ${n2}
- expect 0 unlink ${n0}/${n1}
- expect 0 create ${n1} 0644
- expect EXDEV link ${n1} ${n0}/${n2}
- expect 0 unlink ${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+expect EXDEV link ${n0}/${n1} ${n2}
+expect 0 unlink ${n0}/${n1}
+expect 0 create ${n1} 0644
+expect EXDEV link ${n1} ${n0}/${n2}
+expect 0 unlink ${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/15.t b/tools/regression/fstest/tests/link/15.t
index 42c6ccf..eea1844 100644
--- a/tools/regression/fstest/tests/link/15.t
+++ b/tools/regression/fstest/tests/link/15.t
@@ -6,33 +6,28 @@ desc="link returns ENOSPC if the directory in which the entry for the new link i
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..4"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
- n2=`namegen`
+echo "1..4"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 256k`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
- i=0
- while :; do
- link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1
- if [ $? -ne 0 ]; then
- break
- fi
- i=`expr $i + 1`
- done
- expect ENOSPC link ${n0}/${n1} ${n0}/${n2}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 256k`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+i=0
+while :; do
+ link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+done
+expect ENOSPC link ${n0}/${n1} ${n0}/${n2}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/16.t b/tools/regression/fstest/tests/link/16.t
index 0adb225..df04521 100644
--- a/tools/regression/fstest/tests/link/16.t
+++ b/tools/regression/fstest/tests/link/16.t
@@ -6,34 +6,29 @@ desc="link returns EROFS if the requested link requires writing in a directory o
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}" in
-FreeBSD)
- echo "1..9"
-
- n0=`namegen`
- n1=`namegen`
- n2=`namegen`
-
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
-
- expect 0 link ${n0}/${n1} ${n0}/${n2}
- expect 0 unlink ${n0}/${n2}
- mount -ur /dev/md${n}
- expect EROFS link ${n0}/${n1} ${n0}/${n2}
- mount -uw /dev/md${n}
- expect 0 link ${n0}/${n1} ${n0}/${n2}
- expect 0 unlink ${n0}/${n2}
-
- expect 0 unlink ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+[ "${os}" = "FreeBSD" ] || quick_exit
+
+echo "1..9"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+
+expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 0 unlink ${n0}/${n2}
+mount -ur /dev/md${n}
+expect EROFS link ${n0}/${n1} ${n0}/${n2}
+mount -uw /dev/md${n}
+expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 0 unlink ${n0}/${n2}
+
+expect 0 unlink ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkdir/08.t b/tools/regression/fstest/tests/mkdir/08.t
index f87c7bc..ed6d92e 100644
--- a/tools/regression/fstest/tests/mkdir/08.t
+++ b/tools/regression/fstest/tests/mkdir/08.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..30"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..17"
+ ;;
+FreeBSD:UFS)
+ echo "1..30"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
@@ -24,30 +33,34 @@ expect 0 chflags ${n0} none
expect 0 mkdir ${n0}/${n1} 0755
expect 0 rmdir ${n0}/${n1}
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM mkdir ${n0}/${n1} 0755
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 mkdir ${n0}/${n1} 0755
expect 0 rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
expect 0 chflags ${n0} SF_APPEND
expect 0 mkdir ${n0}/${n1} 0755
expect 0 chflags ${n0} none
expect 0 rmdir ${n0}/${n1}
-expect 0 chflags ${n0} UF_APPEND
-expect 0 mkdir ${n0}/${n1} 0755
-expect 0 chflags ${n0} none
-expect 0 rmdir ${n0}/${n1}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM mkdir ${n0}/${n1} 0755
+ expect 0 chflags ${n0} none
+ expect 0 mkdir ${n0}/${n1} 0755
+ expect 0 rmdir ${n0}/${n1}
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 mkdir ${n0}/${n1} 0755
-expect 0 rmdir ${n0}/${n1}
-expect 0 chflags ${n0} none
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 mkdir ${n0}/${n1} 0755
+ expect 0 rmdir ${n0}/${n1}
+ expect 0 chflags ${n0} none
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 mkdir ${n0}/${n1} 0755
-expect 0 rmdir ${n0}/${n1}
-expect 0 chflags ${n0} none
+ expect 0 chflags ${n0} UF_APPEND
+ expect 0 mkdir ${n0}/${n1} 0755
+ expect 0 chflags ${n0} none
+ expect 0 rmdir ${n0}/${n1}
+ ;;
+esac
expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkdir/09.t b/tools/regression/fstest/tests/mkdir/09.t
index c36d030..ce4bc9d 100644
--- a/tools/regression/fstest/tests/mkdir/09.t
+++ b/tools/regression/fstest/tests/mkdir/09.t
@@ -6,29 +6,24 @@ desc="mkdir returns EROFS if the named file resides on a read-only file system"
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..7"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..7"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 mkdir ${n0}/${n1} 0755
- expect 0 rmdir ${n0}/${n1}
- mount -ur /dev/md${n}
- expect EROFS mkdir ${n0}/${n1} 0755
- mount -uw /dev/md${n}
- expect 0 mkdir ${n0}/${n1} 0755
- expect 0 rmdir ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 rmdir ${n0}/${n1}
+mount -ur /dev/md${n}
+expect EROFS mkdir ${n0}/${n1} 0755
+mount -uw /dev/md${n}
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 rmdir ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkdir/11.t b/tools/regression/fstest/tests/mkdir/11.t
index 8b9758b..3943e61 100644
--- a/tools/regression/fstest/tests/mkdir/11.t
+++ b/tools/regression/fstest/tests/mkdir/11.t
@@ -6,31 +6,26 @@ desc="mkdir returns ENOSPC if there are no free inodes on the file system on whi
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..3"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..3"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 256k`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- i=0
- while :; do
- mkdir ${n0}/${i} >/dev/null 2>&1
- if [ $? -ne 0 ]; then
- break
- fi
- i=`expr $i + 1`
- done
- expect ENOSPC mkdir ${n0}/${n1} 0755
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 256k`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+i=0
+while :; do
+ mkdir ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+done
+expect ENOSPC mkdir ${n0}/${n1} 0755
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkfifo/08.t b/tools/regression/fstest/tests/mkfifo/08.t
index a4b0002..0bdf430 100644
--- a/tools/regression/fstest/tests/mkfifo/08.t
+++ b/tools/regression/fstest/tests/mkfifo/08.t
@@ -6,29 +6,24 @@ desc="mkfifo returns EROFS if the named file resides on a read-only file system"
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..7"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..7"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 mkfifo ${n0}/${n1} 0644
- expect 0 unlink ${n0}/${n1}
- mount -ur /dev/md${n}
- expect EROFS mkfifo ${n0}/${n1} 0644
- mount -uw /dev/md${n}
- expect 0 mkfifo ${n0}/${n1} 0644
- expect 0 unlink ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 mkfifo ${n0}/${n1} 0644
+expect 0 unlink ${n0}/${n1}
+mount -ur /dev/md${n}
+expect EROFS mkfifo ${n0}/${n1} 0644
+mount -uw /dev/md${n}
+expect 0 mkfifo ${n0}/${n1} 0644
+expect 0 unlink ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkfifo/10.t b/tools/regression/fstest/tests/mkfifo/10.t
index beeacab..e6aec44 100644
--- a/tools/regression/fstest/tests/mkfifo/10.t
+++ b/tools/regression/fstest/tests/mkfifo/10.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..30"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..17"
+ ;;
+FreeBSD:UFS)
+ echo "1..30"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
@@ -24,30 +33,34 @@ expect 0 chflags ${n0} none
expect 0 mkfifo ${n0}/${n1} 0644
expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM mkfifo ${n0}/${n1} 0644
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 mkfifo ${n0}/${n1} 0644
expect 0 unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
expect 0 chflags ${n0} SF_APPEND
expect 0 mkfifo ${n0}/${n1} 0644
expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} UF_APPEND
-expect 0 mkfifo ${n0}/${n1} 0644
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n1}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM mkfifo ${n0}/${n1} 0644
+ expect 0 chflags ${n0} none
+ expect 0 mkfifo ${n0}/${n1} 0644
+ expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 mkfifo ${n0}/${n1} 0644
-expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} none
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 mkfifo ${n0}/${n1} 0644
+ expect 0 unlink ${n0}/${n1}
+ expect 0 chflags ${n0} none
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 mkfifo ${n0}/${n1} 0644
-expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} none
+ expect 0 chflags ${n0} UF_APPEND
+ expect 0 mkfifo ${n0}/${n1} 0644
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}/${n1}
+ ;;
+esac
expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkfifo/11.t b/tools/regression/fstest/tests/mkfifo/11.t
index f9937fa..261a8a7 100644
--- a/tools/regression/fstest/tests/mkfifo/11.t
+++ b/tools/regression/fstest/tests/mkfifo/11.t
@@ -6,31 +6,26 @@ desc="mkfifo returns ENOSPC if there are no free inodes on the file system on wh
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..3"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..3"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 256k`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- i=0
- while :; do
- mkfifo ${n0}/${i} >/dev/null 2>&1
- if [ $? -ne 0 ]; then
- break
- fi
- i=`expr $i + 1`
- done
- expect ENOSPC mkfifo ${n0}/${n1} 0644
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 256k`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+i=0
+while :; do
+ mkfifo ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+done
+expect ENOSPC mkfifo ${n0}/${n1} 0644
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/09.t b/tools/regression/fstest/tests/open/09.t
index 4614a40..106e36f 100644
--- a/tools/regression/fstest/tests/open/09.t
+++ b/tools/regression/fstest/tests/open/09.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..30"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..17"
+ ;;
+FreeBSD:UFS)
+ echo "1..30"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
@@ -24,10 +33,9 @@ expect 0 chflags ${n0} none
expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
expect 0 chflags ${n0} SF_APPEND
@@ -35,19 +43,24 @@ expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} UF_APPEND
-expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n1}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+ expect 0 chflags ${n0} none
+ expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+ expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n1}
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 symlink test ${n0}/${n1}
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 symlink test ${n0}/${n1}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n1}
+ expect 0 chflags ${n0} UF_APPEND
+ expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}/${n1}
+ ;;
+esac
expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/10.t b/tools/regression/fstest/tests/open/10.t
index d56ceb1..2cc943f 100644
--- a/tools/regression/fstest/tests/open/10.t
+++ b/tools/regression/fstest/tests/open/10.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..28"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..14"
+ ;;
+FreeBSD:UFS)
+ echo "1..28"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
@@ -21,14 +30,6 @@ expect 0 chflags ${n0} none
expect 0 unlink ${n0}
expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM open ${n0} O_WRONLY
-expect EPERM open ${n0} O_RDWR
-expect EPERM open ${n0} O_RDONLY,O_TRUNC
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
-
-expect 0 create ${n0} 0644
expect 0 chflags ${n0} SF_NOUNLINK
expect 0 open ${n0} O_WRONLY
expect 0 open ${n0} O_RDWR
@@ -36,10 +37,22 @@ expect 0 open ${n0} O_RDONLY,O_TRUNC
expect 0 chflags ${n0} none
expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 open ${n0} O_WRONLY
-expect 0 open ${n0} O_RDWR
-expect 0 open ${n0} O_RDONLY,O_TRUNC
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM open ${n0} O_WRONLY
+ expect EPERM open ${n0} O_RDWR
+ expect EPERM open ${n0} O_RDONLY,O_TRUNC
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
+
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 open ${n0} O_WRONLY
+ expect 0 open ${n0} O_RDWR
+ expect 0 open ${n0} O_RDONLY,O_TRUNC
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/open/11.t b/tools/regression/fstest/tests/open/11.t
index feb0ffe..c68bb25 100644
--- a/tools/regression/fstest/tests/open/11.t
+++ b/tools/regression/fstest/tests/open/11.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..24"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..12"
+ ;;
+FreeBSD:UFS)
+ echo "1..24"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
@@ -18,22 +27,30 @@ expect 0 open ${n0} O_WRONLY,O_APPEND
expect 0 open ${n0} O_RDWR,O_APPEND
expect EPERM open ${n0} O_WRONLY
expect EPERM open ${n0} O_RDWR
+todo FreeBSD:ZFS "When fle is protected by SF_APPEND, open(O_TRUNC) should return EPERM."
expect EPERM open ${n0} O_RDONLY,O_TRUNC
+todo FreeBSD:ZFS "When fle is protected by SF_APPEND, open(O_TRUNC) should return EPERM."
expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC
+todo FreeBSD:ZFS "When fle is protected by SF_APPEND, open(O_TRUNC) should return EPERM."
expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC
+todo FreeBSD:ZFS "When fle is protected by SF_APPEND, open(O_TRUNC) should return EPERM."
expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC
expect 0 chflags ${n0} none
expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_APPEND
-expect 0 open ${n0} O_WRONLY,O_APPEND
-expect 0 open ${n0} O_RDWR,O_APPEND
-expect EPERM open ${n0} O_WRONLY
-expect EPERM open ${n0} O_RDWR
-expect EPERM open ${n0} O_RDONLY,O_TRUNC
-expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC
-expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC
-expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_APPEND
+ expect 0 open ${n0} O_WRONLY,O_APPEND
+ expect 0 open ${n0} O_RDWR,O_APPEND
+ expect EPERM open ${n0} O_WRONLY
+ expect EPERM open ${n0} O_RDWR
+ expect EPERM open ${n0} O_RDONLY,O_TRUNC
+ expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC
+ expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC
+ expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/open/14.t b/tools/regression/fstest/tests/open/14.t
index 771f451..3d81f3e 100644
--- a/tools/regression/fstest/tests/open/14.t
+++ b/tools/regression/fstest/tests/open/14.t
@@ -6,32 +6,27 @@ desc="open returns EROFS if the named file resides on a read-only file system, a
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..10"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..10"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
- expect 0 open ${n0}/${n1} O_WRONLY
- expect 0 open ${n0}/${n1} O_RDWR
- expect 0 open ${n0}/${n1} O_RDONLY,O_TRUNC
- mount -ur /dev/md${n}
- expect EROFS open ${n0}/${n1} O_WRONLY
- expect EROFS open ${n0}/${n1} O_RDWR
- expect EROFS open ${n0}/${n1} O_RDONLY,O_TRUNC
- mount -uw /dev/md${n}
- expect 0 unlink ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+expect 0 open ${n0}/${n1} O_WRONLY
+expect 0 open ${n0}/${n1} O_RDWR
+expect 0 open ${n0}/${n1} O_RDONLY,O_TRUNC
+mount -ur /dev/md${n}
+expect EROFS open ${n0}/${n1} O_WRONLY
+expect EROFS open ${n0}/${n1} O_RDWR
+expect EROFS open ${n0}/${n1} O_RDONLY,O_TRUNC
+mount -uw /dev/md${n}
+expect 0 unlink ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/15.t b/tools/regression/fstest/tests/open/15.t
index 76b57d3..d90877b 100644
--- a/tools/regression/fstest/tests/open/15.t
+++ b/tools/regression/fstest/tests/open/15.t
@@ -6,27 +6,22 @@ desc="open returns EROFS when O_CREAT is specified and the named file would resi
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..5"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..5"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
- expect 0 unlink ${n0}/${n1}
- mount -ur /dev/md${n}
- expect EROFS open ${n0}/${n1} O_RDONLY,O_CREAT 0644
- mount -uw /dev/md${n}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 unlink ${n0}/${n1}
+mount -ur /dev/md${n}
+expect EROFS open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+mount -uw /dev/md${n}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/18.t b/tools/regression/fstest/tests/open/18.t
index 978ba16..bd8eea4 100644
--- a/tools/regression/fstest/tests/open/18.t
+++ b/tools/regression/fstest/tests/open/18.t
@@ -6,20 +6,15 @@ desc="open returns EWOULDBLOCK when O_NONBLOCK and one of O_SHLOCK or O_EXLOCK i
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}" in
-FreeBSD)
- echo "1..6"
+[ "${os}" = "FreeBSD" ] || quick_exit
- n0=`namegen`
+echo "1..6"
- expect 0 create ${n0} 0644
- expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
- expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
- expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
- expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
- expect 0 unlink ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
+expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
+expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
+expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/open/19.t b/tools/regression/fstest/tests/open/19.t
index aa2d909..b1c3994 100644
--- a/tools/regression/fstest/tests/open/19.t
+++ b/tools/regression/fstest/tests/open/19.t
@@ -3,35 +3,29 @@
desc="open returns ENOSPC when O_CREAT is specified, the file does not exist, and there are no free inodes on the file system on which the file is being created"
-
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..3"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
+
+echo "1..3"
- n0=`namegen`
- n1=`namegen`
+n0=`namegen`
+n1=`namegen`
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 256k`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- i=0
- while :; do
- touch ${n0}/${i} >/dev/null 2>&1
- if [ $? -ne 0 ]; then
- break
- fi
- i=`expr $i + 1`
- done
- expect ENOSPC open ${n0}/${i} O_RDONLY,O_CREAT 0644
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 256k`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+i=0
+while :; do
+ touch ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+done
+expect ENOSPC open ${n0}/${i} O_RDONLY,O_CREAT 0644
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/20.t b/tools/regression/fstest/tests/open/20.t
index fc926f4..736ad72 100644
--- a/tools/regression/fstest/tests/open/20.t
+++ b/tools/regression/fstest/tests/open/20.t
@@ -6,20 +6,15 @@ desc="open returns ETXTBSY when the file is a pure procedure (shared text) file
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}" in
-FreeBSD)
- echo "1..4"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
+echo "1..4"
- cp -pf `which sleep` ${n0}
- ./${n0} 3 &
- expect ETXTBSY open ${n0} O_WRONLY
- expect ETXTBSY open ${n0} O_RDWR
- expect ETXTBSY open ${n0} O_RDONLY,O_TRUNC
- expect 0 unlink ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+
+cp -pf `which sleep` ${n0}
+./${n0} 3 &
+expect ETXTBSY open ${n0} O_WRONLY
+expect ETXTBSY open ${n0} O_RDWR
+expect ETXTBSY open ${n0} O_RDONLY,O_TRUNC
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/rename/06.t b/tools/regression/fstest/tests/rename/06.t
index 880c604..8c0df35 100644
--- a/tools/regression/fstest/tests/rename/06.t
+++ b/tools/regression/fstest/tests/rename/06.t
@@ -8,43 +8,90 @@ dir=`dirname $0`
require chflags
-echo "1..84"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND"
+ echo "1..90"
+ ;;
+FreeBSD:UFS)
+ flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND UF_IMMUTABLE UF_NOUNLINK UF_APPEND"
+ echo "1..162"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
expect 0 create ${n0} 0644
-for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
expect EPERM rename ${n0} ${n1}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n1} ${n0}
done
expect 0 chflags ${n0} none
expect 0 unlink ${n0}
expect 0 mkdir ${n0} 0755
-for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a directory protected by SF_APPEND should return EPERM."
expect EPERM rename ${n0} ${n1}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a directory protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n1} ${n0}
done
expect 0 chflags ${n0} none
expect 0 rmdir ${n0}
expect 0 mkfifo ${n0} 0644
-for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a fifo protected by SF_APPEND should return EPERM."
expect EPERM rename ${n0} ${n1}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a fifo protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n1} ${n0}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 mknod ${n0} c 0644 1 2
+for flag in ${flags}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a device protected by SF_APPEND should return EPERM."
+ expect EPERM rename ${n0} ${n1}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a device protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n1} ${n0}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 bind ${n0}
+for flag in ${flags}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a socket protected by SF_APPEND should return EPERM."
+ expect EPERM rename ${n0} ${n1}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a socket protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n1} ${n0}
done
expect 0 chflags ${n0} none
expect 0 unlink ${n0}
expect 0 symlink ${n1} ${n0}
-for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags}; do
expect 0 lchflags ${n0} ${flag}
expect ${flag} lstat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a symlink protected by SF_APPEND should return EPERM."
expect EPERM rename ${n0} ${n1}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a symlink protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n1} ${n0}
done
expect 0 lchflags ${n0} none
expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/rename/07.t b/tools/regression/fstest/tests/rename/07.t
index 40d0476..d65332f 100644
--- a/tools/regression/fstest/tests/rename/07.t
+++ b/tools/regression/fstest/tests/rename/07.t
@@ -8,7 +8,20 @@ dir=`dirname $0`
require chflags
-echo "1..106"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ flags1="SF_IMMUTABLE SF_APPEND"
+ flags2="SF_NOUNLINK"
+ echo "1..110"
+ ;;
+FreeBSD:UFS)
+ flags1="SF_IMMUTABLE SF_APPEND UF_IMMUTABLE UF_APPEND"
+ flags2="SF_NOUNLINK UF_NOUNLINK"
+ echo "1..182"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
@@ -17,43 +30,79 @@ n2=`namegen`
expect 0 mkdir ${n0} 0755
expect 0 create ${n0}/${n1} 0644
-for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
+for flag in ${flags1}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
expect EPERM rename ${n0}/${n1} ${n2}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n2} ${n0}/${n1}
done
expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
expect 0 mkdir ${n0}/${n1} 0755
-for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
+for flag in ${flags1}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
expect EPERM rename ${n0}/${n1} ${n2}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n2} ${n0}/${n1}
done
expect 0 chflags ${n0} none
expect 0 rmdir ${n0}/${n1}
expect 0 mkfifo ${n0}/${n1} 0644
-for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
+for flag in ${flags1}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
expect EPERM rename ${n0}/${n1} ${n2}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n2} ${n0}/${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 mknod ${n0}/${n1} c 0644 1 2
+for flag in ${flags1}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
+ expect EPERM rename ${n0}/${n1} ${n2}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n2} ${n0}/${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 bind ${n0}/${n1}
+for flag in ${flags1}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
+ expect EPERM rename ${n0}/${n1} ${n2}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n2} ${n0}/${n1}
done
expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
expect 0 symlink ${n2} ${n0}/${n1}
-for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
+for flag in ${flags1}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
expect EPERM rename ${n0}/${n1} ${n2}
+ [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
+ expect ENOENT rename ${n2} ${n0}/${n1}
done
expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
expect 0 create ${n0}/${n1} 0644
-for flag in SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags2}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect 0 rename ${n0}/${n1} ${n2}
@@ -63,7 +112,7 @@ expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
expect 0 mkdir ${n0}/${n1} 0755
-for flag in SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags2}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect 0 rename ${n0}/${n1} ${n2}
@@ -73,7 +122,27 @@ expect 0 chflags ${n0} none
expect 0 rmdir ${n0}/${n1}
expect 0 mkfifo ${n0}/${n1} 0644
-for flag in SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags2}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n0}/${n1} ${n2}
+ expect 0 rename ${n2} ${n0}/${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 mknod ${n0}/${n1} c 0644 1 2
+for flag in ${flags2}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n0}/${n1} ${n2}
+ expect 0 rename ${n2} ${n0}/${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 bind ${n0}/${n1}
+for flag in ${flags2}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect 0 rename ${n0}/${n1} ${n2}
@@ -83,7 +152,7 @@ expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
expect 0 symlink ${n2} ${n0}/${n1}
-for flag in SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags2}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect 0 rename ${n0}/${n1} ${n2}
diff --git a/tools/regression/fstest/tests/rename/08.t b/tools/regression/fstest/tests/rename/08.t
index 962eea1..270c8d9 100644
--- a/tools/regression/fstest/tests/rename/08.t
+++ b/tools/regression/fstest/tests/rename/08.t
@@ -8,7 +8,20 @@ dir=`dirname $0`
require chflags
-echo "1..126"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ flags1="SF_IMMUTABLE"
+ flags2="SF_NOUNLINK SF_APPEND"
+ echo "1..110"
+ ;;
+FreeBSD:UFS)
+ flags1="SF_IMMUTABLE UF_IMMUTABLE"
+ flags2="SF_NOUNLINK SF_APPEND UF_NOUNLINK UF_APPEND"
+ echo "1..188"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
@@ -17,7 +30,7 @@ n2=`namegen`
expect 0 mkdir ${n0} 0755
expect 0 create ${n1} 0644
-for flag in SF_IMMUTABLE UF_IMMUTABLE; do
+for flag in ${flags1}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect EPERM rename ${n1} ${n0}/${n2}
@@ -26,7 +39,7 @@ expect 0 chflags ${n0} none
expect 0 unlink ${n1}
expect 0 mkdir ${n1} 0755
-for flag in SF_IMMUTABLE UF_IMMUTABLE; do
+for flag in ${flags1}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect EPERM rename ${n1} ${n0}/${n2}
@@ -35,7 +48,25 @@ expect 0 chflags ${n0} none
expect 0 rmdir ${n1}
expect 0 mkfifo ${n1} 0644
-for flag in SF_IMMUTABLE UF_IMMUTABLE; do
+for flag in ${flags1}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n1} ${n0}/${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n1}
+
+expect 0 mknod ${n1} c 0644 1 2
+for flag in ${flags1}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n1} ${n0}/${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n1}
+
+expect 0 bind ${n1}
+for flag in ${flags1}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect EPERM rename ${n1} ${n0}/${n2}
@@ -44,7 +75,7 @@ expect 0 chflags ${n0} none
expect 0 unlink ${n1}
expect 0 symlink ${n2} ${n1}
-for flag in SF_IMMUTABLE UF_IMMUTABLE; do
+for flag in ${flags1}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect EPERM rename ${n1} ${n0}/${n2}
@@ -53,7 +84,7 @@ expect 0 chflags ${n0} none
expect 0 unlink ${n1}
expect 0 create ${n1} 0644
-for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags2}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect 0 rename ${n1} ${n0}/${n2}
@@ -63,7 +94,7 @@ done
expect 0 unlink ${n1}
expect 0 mkdir ${n1} 0755
-for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags2}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect 0 rename ${n1} ${n0}/${n2}
@@ -73,7 +104,27 @@ done
expect 0 rmdir ${n1}
expect 0 mkfifo ${n1} 0644
-for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags2}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n1} ${n0}/${n2}
+ expect 0 chflags ${n0} none
+ expect 0 rename ${n0}/${n2} ${n1}
+done
+expect 0 unlink ${n1}
+
+expect 0 mknod ${n1} c 0644 1 2
+for flag in ${flags2}; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n1} ${n0}/${n2}
+ expect 0 chflags ${n0} none
+ expect 0 rename ${n0}/${n2} ${n1}
+done
+expect 0 unlink ${n1}
+
+expect 0 bind ${n1}
+for flag in ${flags2}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect 0 rename ${n1} ${n0}/${n2}
@@ -83,7 +134,7 @@ done
expect 0 unlink ${n1}
expect 0 symlink ${n2} ${n1}
-for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+for flag in ${flags2}; do
expect 0 chflags ${n0} ${flag}
expect ${flag} stat ${n0} flags
expect 0 rename ${n1} ${n0}/${n2}
diff --git a/tools/regression/fstest/tests/rename/15.t b/tools/regression/fstest/tests/rename/15.t
index 0ef6cc3..8b16639 100644
--- a/tools/regression/fstest/tests/rename/15.t
+++ b/tools/regression/fstest/tests/rename/15.t
@@ -6,40 +6,35 @@ desc="rename returns EXDEV if the link named by 'to' and the file named by 'from
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}" in
-FreeBSD)
- echo "1..14"
-
- n0=`namegen`
- n1=`namegen`
- n2=`namegen`
-
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
-
- expect 0 create ${n0}/${n1} 0644
- expect EXDEV rename ${n0}/${n1} ${n2}
- expect 0 unlink ${n0}/${n1}
-
- expect 0 mkdir ${n0}/${n1} 0755
- expect EXDEV rename ${n0}/${n1} ${n2}
- expect 0 rmdir ${n0}/${n1}
-
- expect 0 mkfifo ${n0}/${n1} 0644
- expect EXDEV rename ${n0}/${n1} ${n2}
- expect 0 unlink ${n0}/${n1}
-
- expect 0 symlink test ${n0}/${n1}
- expect EXDEV rename ${n0}/${n1} ${n2}
- expect 0 unlink ${n0}/${n1}
-
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+[ "${os}" = "FreeBSD" ] || quick_exit
+
+echo "1..14"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+
+expect 0 create ${n0}/${n1} 0644
+expect EXDEV rename ${n0}/${n1} ${n2}
+expect 0 unlink ${n0}/${n1}
+
+expect 0 mkdir ${n0}/${n1} 0755
+expect EXDEV rename ${n0}/${n1} ${n2}
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 mkfifo ${n0}/${n1} 0644
+expect EXDEV rename ${n0}/${n1} ${n2}
+expect 0 unlink ${n0}/${n1}
+
+expect 0 symlink test ${n0}/${n1}
+expect EXDEV rename ${n0}/${n1} ${n2}
+expect 0 unlink ${n0}/${n1}
+
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/16.t b/tools/regression/fstest/tests/rename/16.t
index cda8e99..b327f36 100644
--- a/tools/regression/fstest/tests/rename/16.t
+++ b/tools/regression/fstest/tests/rename/16.t
@@ -6,32 +6,27 @@ desc="rename returns EROFS if the requested link requires writing in a directory
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}" in
-FreeBSD)
- echo "1..8"
-
- n0=`namegen`
- n1=`namegen`
- n2=`namegen`
-
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
- mount -ur /dev/md${n}
-
- expect EROFS rename ${n0}/${n1} ${n0}/${n2}
- expect EROFS rename ${n0}/${n1} ${n2}
- expect 0 create ${n2} 0644
- expect EROFS rename ${n2} ${n0}/${n2}
- expect 0 unlink ${n2}
-
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+[ "${os}" = "FreeBSD" ] || quick_exit
+
+echo "1..8"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+mount -ur /dev/md${n}
+
+expect EROFS rename ${n0}/${n1} ${n0}/${n2}
+expect EROFS rename ${n0}/${n1} ${n2}
+expect 0 create ${n2} 0644
+expect EROFS rename ${n2} ${n0}/${n2}
+expect 0 unlink ${n2}
+
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/09.t b/tools/regression/fstest/tests/rmdir/09.t
index 6b3959d..240fd5c 100644
--- a/tools/regression/fstest/tests/rmdir/09.t
+++ b/tools/regression/fstest/tests/rmdir/09.t
@@ -1,14 +1,23 @@
#!/bin/sh
# $FreeBSD$
-desc="rmdir returns EPERM if the named file has its immutable, undeletable or append-only flag set"
+desc="rmdir returns EPERM if the named directory has its immutable, undeletable or append-only flag set"
dir=`dirname $0`
. ${dir}/../misc.sh
require chflags
-echo "1..30"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..15"
+ ;;
+FreeBSD:UFS)
+ echo "1..30"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
@@ -19,31 +28,38 @@ expect 0 chflags ${n0} none
expect 0 rmdir ${n0}
expect 0 mkdir ${n0} 0755
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM rmdir ${n0}
-expect 0 chflags ${n0} none
-expect 0 rmdir ${n0}
-
-expect 0 mkdir ${n0} 0755
expect 0 chflags ${n0} SF_NOUNLINK
expect EPERM rmdir ${n0}
expect 0 chflags ${n0} none
expect 0 rmdir ${n0}
expect 0 mkdir ${n0} 0755
-expect 0 chflags ${n0} UF_NOUNLINK
-expect EPERM rmdir ${n0}
-expect 0 chflags ${n0} none
-expect 0 rmdir ${n0}
-
-expect 0 mkdir ${n0} 0755
expect 0 chflags ${n0} SF_APPEND
+todo FreeBSD:ZFS "Removing a directory protected by SF_APPEND should return EPERM."
expect EPERM rmdir ${n0}
+todo FreeBSD:ZFS "Removing a directory protected by SF_APPEND should return EPERM."
expect 0 chflags ${n0} none
+todo FreeBSD:ZFS "Removing a directory protected by SF_APPEND should return EPERM."
expect 0 rmdir ${n0}
-expect 0 mkdir ${n0} 0755
-expect 0 chflags ${n0} UF_APPEND
-expect EPERM rmdir ${n0}
-expect 0 chflags ${n0} none
-expect 0 rmdir ${n0}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 mkdir ${n0} 0755
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM rmdir ${n0}
+ expect 0 chflags ${n0} none
+ expect 0 rmdir ${n0}
+
+ expect 0 mkdir ${n0} 0755
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect EPERM rmdir ${n0}
+ expect 0 chflags ${n0} none
+ expect 0 rmdir ${n0}
+
+ expect 0 mkdir ${n0} 0755
+ expect 0 chflags ${n0} UF_APPEND
+ expect EPERM rmdir ${n0}
+ expect 0 chflags ${n0} none
+ expect 0 rmdir ${n0}
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/rmdir/10.t b/tools/regression/fstest/tests/rmdir/10.t
index 2258041..7bdc261 100644
--- a/tools/regression/fstest/tests/rmdir/10.t
+++ b/tools/regression/fstest/tests/rmdir/10.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..30"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..16"
+ ;;
+FreeBSD:UFS)
+ echo "1..30"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
@@ -22,31 +31,37 @@ expect 0 chflags ${n0} none
expect 0 rmdir ${n0}/${n1}
expect 0 mkdir ${n0}/${n1} 0755
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM rmdir ${n0}/${n1}
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
expect 0 mkdir ${n0}/${n1} 0755
expect 0 chflags ${n0} SF_APPEND
+todo FreeBSD:ZFS "Removing an entry from directory protected by SF_APPEND should return EPERM."
expect EPERM rmdir ${n0}/${n1}
expect 0 chflags ${n0} none
+todo FreeBSD:ZFS "Removing an entry from directory protected by SF_APPEND should return EPERM."
expect 0 rmdir ${n0}/${n1}
-expect 0 mkdir ${n0}/${n1} 0755
-expect 0 chflags ${n0} UF_APPEND
-expect EPERM rmdir ${n0}/${n1}
-expect 0 chflags ${n0} none
-expect 0 rmdir ${n0}/${n1}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 mkdir ${n0}/${n1} 0755
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM rmdir ${n0}/${n1}
+ expect 0 chflags ${n0} none
+ expect 0 rmdir ${n0}/${n1}
-expect 0 mkdir ${n0}/${n1} 0755
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 rmdir ${n0}/${n1}
-expect 0 chflags ${n0} none
+ expect 0 mkdir ${n0}/${n1} 0755
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 rmdir ${n0}/${n1}
+ expect 0 chflags ${n0} none
-expect 0 mkdir ${n0}/${n1} 0755
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 rmdir ${n0}/${n1}
-expect 0 chflags ${n0} none
+ expect 0 mkdir ${n0}/${n1} 0755
+ expect 0 chflags ${n0} UF_APPEND
+ expect EPERM rmdir ${n0}/${n1}
+ expect 0 chflags ${n0} none
+ expect 0 rmdir ${n0}/${n1}
+ ;;
+esac
expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/13.t b/tools/regression/fstest/tests/rmdir/13.t
index 65fb78e..6140e7b 100644
--- a/tools/regression/fstest/tests/rmdir/13.t
+++ b/tools/regression/fstest/tests/rmdir/13.t
@@ -6,22 +6,17 @@ desc="rmdir returns EBUSY if the directory to be removed is the mount point for
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}" in
-FreeBSD)
- echo "1..3"
+[ "${os}" = "FreeBSD" ] || quick_exit
- n0=`namegen`
+echo "1..3"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect EBUSY rmdir ${n0}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect EBUSY rmdir ${n0}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/14.t b/tools/regression/fstest/tests/rmdir/14.t
index b195933..faa5d5e 100644
--- a/tools/regression/fstest/tests/rmdir/14.t
+++ b/tools/regression/fstest/tests/rmdir/14.t
@@ -6,27 +6,22 @@ desc="rmdir returns EROFS if the named file resides on a read-only file system"
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..5"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..5"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 mkdir ${n0}/${n1} 0755
- mount -ur /dev/md${n}
- expect EROFS rmdir ${n0}/${n1}
- mount -uw /dev/md${n}
- expect 0 rmdir ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 mkdir ${n0}/${n1} 0755
+mount -ur /dev/md${n}
+expect EROFS rmdir ${n0}/${n1}
+mount -uw /dev/md${n}
+expect 0 rmdir ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/symlink/09.t b/tools/regression/fstest/tests/symlink/09.t
index 174b5bd..4807db4 100644
--- a/tools/regression/fstest/tests/symlink/09.t
+++ b/tools/regression/fstest/tests/symlink/09.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..30"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..17"
+ ;;
+FreeBSD:UFS)
+ echo "1..30"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
@@ -24,10 +33,9 @@ expect 0 chflags ${n0} none
expect 0 symlink test ${n0}/${n1}
expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM symlink test ${n0}/${n1}
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 symlink test ${n0}/${n1}
+expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
expect 0 chflags ${n0} SF_APPEND
@@ -35,19 +43,24 @@ expect 0 symlink test ${n0}/${n1}
expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} UF_APPEND
-expect 0 symlink test ${n0}/${n1}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n1}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM symlink test ${n0}/${n1}
+ expect 0 chflags ${n0} none
+ expect 0 symlink test ${n0}/${n1}
+ expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 symlink test ${n0}/${n1}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n1}
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 symlink test ${n0}/${n1}
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 symlink test ${n0}/${n1}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n1}
+ expect 0 chflags ${n0} UF_APPEND
+ expect 0 symlink test ${n0}/${n1}
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}/${n1}
+ ;;
+esac
expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/symlink/10.t b/tools/regression/fstest/tests/symlink/10.t
index a8c43bf..b43da77 100644
--- a/tools/regression/fstest/tests/symlink/10.t
+++ b/tools/regression/fstest/tests/symlink/10.t
@@ -6,32 +6,27 @@ desc="symlink returns EROFS if the file name2 would reside on a read-only file s
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..7"
-
- n0=`namegen`
- n1=`namegen`
- n2=`namegen`
-
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
-
- expect 0 symlink test ${n0}/${n1}
- expect 0 unlink ${n0}/${n1}
- mount -ur /dev/md${n}
- expect EROFS symlink test ${n0}/${n1}
- mount -uw /dev/md${n}
- expect 0 symlink test ${n0}/${n1}
- expect 0 unlink ${n0}/${n1}
-
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
+
+echo "1..7"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+
+expect 0 symlink test ${n0}/${n1}
+expect 0 unlink ${n0}/${n1}
+mount -ur /dev/md${n}
+expect EROFS symlink test ${n0}/${n1}
+mount -uw /dev/md${n}
+expect 0 symlink test ${n0}/${n1}
+expect 0 unlink ${n0}/${n1}
+
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/symlink/11.t b/tools/regression/fstest/tests/symlink/11.t
index 0459851..2f04b7b 100644
--- a/tools/regression/fstest/tests/symlink/11.t
+++ b/tools/regression/fstest/tests/symlink/11.t
@@ -6,31 +6,26 @@ desc="symlink returns ENOSPC if there are no free inodes on the file system on w
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..3"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..3"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 256k`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- i=0
- while :; do
- ln -s test ${n0}/${i} >/dev/null 2>&1
- if [ $? -ne 0 ]; then
- break
- fi
- i=`expr $i + 1`
- done
- expect ENOSPC symlink test ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 256k`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+i=0
+while :; do
+ ln -s test ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+done
+expect ENOSPC symlink test ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/truncate/08.t b/tools/regression/fstest/tests/truncate/08.t
index e4ea0fa..75d6679 100644
--- a/tools/regression/fstest/tests/truncate/08.t
+++ b/tools/regression/fstest/tests/truncate/08.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..40"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..22"
+ ;;
+FreeBSD:UFS)
+ echo "1..44"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
@@ -18,42 +27,52 @@ expect EPERM truncate ${n0} 123
expect 0 stat ${n0} size
expect 0 chflags ${n0} none
expect 0 truncate ${n0} 123
+expect 123 stat ${n0} size
expect 0 unlink ${n0}
expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM truncate ${n0} 123
-expect 0 stat ${n0} size
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 truncate ${n0} 123
+expect 123 stat ${n0} size
+expect 0 chflags ${n0} none
expect 0 unlink ${n0}
expect 0 create ${n0} 0644
expect 0 chflags ${n0} SF_APPEND
+todo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM."
expect EPERM truncate ${n0} 123
+todo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM."
expect 0 stat ${n0} size
expect 0 chflags ${n0} none
expect 0 truncate ${n0} 123
+expect 123 stat ${n0} size
expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_APPEND
-expect EPERM truncate ${n0} 123
-expect 0 stat ${n0} size
-expect 0 chflags ${n0} none
-expect 0 truncate ${n0} 123
-expect 0 unlink ${n0}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM truncate ${n0} 123
+ expect 0 stat ${n0} size
+ expect 0 chflags ${n0} none
+ expect 0 truncate ${n0} 123
+ expect 123 stat ${n0} size
+ expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 truncate ${n0} 123
-expect 123 stat ${n0} size
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 truncate ${n0} 123
+ expect 123 stat ${n0} size
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 truncate ${n0} 123
-expect 123 stat ${n0} size
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_APPEND
+ expect EPERM truncate ${n0} 123
+ expect 0 stat ${n0} size
+ expect 0 chflags ${n0} none
+ expect 0 truncate ${n0} 123
+ expect 123 stat ${n0} size
+ expect 0 unlink ${n0}
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/truncate/10.t b/tools/regression/fstest/tests/truncate/10.t
index 2dc0b45..6fcd129 100644
--- a/tools/regression/fstest/tests/truncate/10.t
+++ b/tools/regression/fstest/tests/truncate/10.t
@@ -6,32 +6,27 @@ desc="truncate returns EROFS if the named file resides on a read-only file syste
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..10"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..10"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
- expect 0 truncate ${n0}/${n1} 123
- expect 123 stat ${n0}/${n1} size
- mount -ur /dev/md${n}
- expect EROFS truncate ${n0}/${n1} 1234
- expect 123 stat ${n0}/${n1} size
- mount -uw /dev/md${n}
- expect 0 truncate ${n0}/${n1} 1234
- expect 1234 stat ${n0}/${n1} size
- expect 0 unlink ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+expect 0 truncate ${n0}/${n1} 123
+expect 123 stat ${n0}/${n1} size
+mount -ur /dev/md${n}
+expect EROFS truncate ${n0}/${n1} 1234
+expect 123 stat ${n0}/${n1} size
+mount -uw /dev/md${n}
+expect 0 truncate ${n0}/${n1} 1234
+expect 1234 stat ${n0}/${n1} size
+expect 0 unlink ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/truncate/11.t b/tools/regression/fstest/tests/truncate/11.t
index f86235b..255fd19 100644
--- a/tools/regression/fstest/tests/truncate/11.t
+++ b/tools/regression/fstest/tests/truncate/11.t
@@ -6,18 +6,13 @@ desc="truncate returns ETXTBSY the file is a pure procedure (shared text) file t
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}" in
-FreeBSD)
- echo "1..2"
+[ "${os}" = "FreeBSD" ] || quick_exit
- n0=`namegen`
+echo "1..2"
- cp -pf `which sleep` ${n0}
- ./${n0} 3 &
- expect ETXTBSY truncate ${n0} 123
- expect 0 unlink ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+
+cp -pf `which sleep` ${n0}
+./${n0} 3 &
+expect ETXTBSY truncate ${n0} 123
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/unlink/09.t b/tools/regression/fstest/tests/unlink/09.t
index c069b0d..f3422a5 100644
--- a/tools/regression/fstest/tests/unlink/09.t
+++ b/tools/regression/fstest/tests/unlink/09.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..30"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..15"
+ ;;
+FreeBSD:UFS)
+ echo "1..30"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
@@ -19,31 +28,38 @@ expect 0 chflags ${n0} none
expect 0 unlink ${n0}
expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM unlink ${n0}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
-
-expect 0 create ${n0} 0644
expect 0 chflags ${n0} SF_NOUNLINK
expect EPERM unlink ${n0}
expect 0 chflags ${n0} none
expect 0 unlink ${n0}
expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_NOUNLINK
-expect EPERM unlink ${n0}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
-
-expect 0 create ${n0} 0644
expect 0 chflags ${n0} SF_APPEND
+todo FreeBSD:ZFS "Removing a file protected by SF_APPEND should return EPERM."
expect EPERM unlink ${n0}
+todo FreeBSD:ZFS "Removing a file protected by SF_APPEND should return EPERM."
expect 0 chflags ${n0} none
+todo FreeBSD:ZFS "Removing a file protected by SF_APPEND should return EPERM."
expect 0 unlink ${n0}
-expect 0 create ${n0} 0644
-expect 0 chflags ${n0} UF_APPEND
-expect EPERM unlink ${n0}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM unlink ${n0}
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
+
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect EPERM unlink ${n0}
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
+
+ expect 0 create ${n0} 0644
+ expect 0 chflags ${n0} UF_APPEND
+ expect EPERM unlink ${n0}
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/unlink/10.t b/tools/regression/fstest/tests/unlink/10.t
index cf4188a..84f3154 100644
--- a/tools/regression/fstest/tests/unlink/10.t
+++ b/tools/regression/fstest/tests/unlink/10.t
@@ -8,7 +8,16 @@ dir=`dirname $0`
require chflags
-echo "1..30"
+case "${os}:${fs}" in
+FreeBSD:ZFS)
+ echo "1..16"
+ ;;
+FreeBSD:UFS)
+ echo "1..30"
+ ;;
+*)
+ quick_exit
+esac
n0=`namegen`
n1=`namegen`
@@ -22,31 +31,37 @@ expect 0 chflags ${n0} none
expect 0 unlink ${n0}/${n1}
expect 0 create ${n0}/${n1} 0644
-expect 0 chflags ${n0} UF_IMMUTABLE
-expect EPERM unlink ${n0}/${n1}
-expect 0 chflags ${n0} none
+expect 0 chflags ${n0} SF_NOUNLINK
expect 0 unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
expect 0 create ${n0}/${n1} 0644
expect 0 chflags ${n0} SF_APPEND
+todo FreeBSD:ZFS "Removing a file from a directory protected by SF_APPEND should return EPERM."
expect EPERM unlink ${n0}/${n1}
expect 0 chflags ${n0} none
+todo FreeBSD:ZFS "Removing a file from a directory protected by SF_APPEND should return EPERM."
expect 0 unlink ${n0}/${n1}
-expect 0 create ${n0}/${n1} 0644
-expect 0 chflags ${n0} UF_APPEND
-expect EPERM unlink ${n0}/${n1}
-expect 0 chflags ${n0} none
-expect 0 unlink ${n0}/${n1}
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ expect 0 create ${n0}/${n1} 0644
+ expect 0 chflags ${n0} UF_IMMUTABLE
+ expect EPERM unlink ${n0}/${n1}
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}/${n1}
-expect 0 create ${n0}/${n1} 0644
-expect 0 chflags ${n0} SF_NOUNLINK
-expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} none
+ expect 0 create ${n0}/${n1} 0644
+ expect 0 chflags ${n0} UF_NOUNLINK
+ expect 0 unlink ${n0}/${n1}
+ expect 0 chflags ${n0} none
-expect 0 create ${n0}/${n1} 0644
-expect 0 chflags ${n0} UF_NOUNLINK
-expect 0 unlink ${n0}/${n1}
-expect 0 chflags ${n0} none
+ expect 0 create ${n0}/${n1} 0644
+ expect 0 chflags ${n0} UF_APPEND
+ expect EPERM unlink ${n0}/${n1}
+ expect 0 chflags ${n0} none
+ expect 0 unlink ${n0}/${n1}
+ ;;
+esac
expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/unlink/12.t b/tools/regression/fstest/tests/unlink/12.t
index 65a3aaf..b8116d6 100644
--- a/tools/regression/fstest/tests/unlink/12.t
+++ b/tools/regression/fstest/tests/unlink/12.t
@@ -6,27 +6,22 @@ desc="unlink returns EROFS if the named file resides on a read-only file system"
dir=`dirname $0`
. ${dir}/../misc.sh
-case "${os}:${fs}" in
-FreeBSD:UFS)
- echo "1..5"
+[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
- n0=`namegen`
- n1=`namegen`
+echo "1..5"
- expect 0 mkdir ${n0} 0755
- n=`mdconfig -a -n -t malloc -s 1m`
- newfs /dev/md${n} >/dev/null
- mount /dev/md${n} ${n0}
- expect 0 create ${n0}/${n1} 0644
- mount -ur /dev/md${n}
- expect EROFS unlink ${n0}/${n1}
- mount -uw /dev/md${n}
- expect 0 unlink ${n0}/${n1}
- umount /dev/md${n}
- mdconfig -d -u ${n}
- expect 0 rmdir ${n0}
- ;;
-*)
- quick_exit
- ;;
-esac
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+n=`mdconfig -a -n -t malloc -s 1m`
+newfs /dev/md${n} >/dev/null
+mount /dev/md${n} ${n0}
+expect 0 create ${n0}/${n1} 0644
+mount -ur /dev/md${n}
+expect EROFS unlink ${n0}/${n1}
+mount -uw /dev/md${n}
+expect 0 unlink ${n0}/${n1}
+umount /dev/md${n}
+mdconfig -d -u ${n}
+expect 0 rmdir ${n0}
OpenPOWER on IntegriCloud