@@ -17,7 +17,7 @@ Group: System Environment/Base
%description
The XFS regression test suite. Also includes some support for
-acl, attr, udf, and nfs testing. Contains around 200 specific tests
+acl, attr, udf, nfs and afs testing. Contains around 200 specific tests
for userspace & kernelspace.
%prep
@@ -56,6 +56,7 @@ usage()
check options
-nfs test NFS
+ -afs test AFS
-glusterfs test GlusterFS
-cifs test CIFS
-9p test 9p
@@ -278,6 +279,7 @@ while [ $# -gt 0 ]; do
-\? | -h | --help) usage ;;
-nfs) FSTYP=nfs ;;
+ -afs) FSTYP=afs ;;
-glusterfs) FSTYP=glusterfs ;;
-cifs) FSTYP=cifs ;;
-9p) FSTYP=9p ;;
@@ -259,6 +259,7 @@ export BTRFS_CONVERT_PROG=$(type -P btrfs-convert)
export BTRFS_TUNE_PROG=$(type -P btrfstune)
export XFS_FSR_PROG=$(type -P xfs_fsr)
export MKFS_NFS_PROG="false"
+export MKFS_AFS_PROG="false"
export MKFS_CIFS_PROG="false"
export MKFS_OVERLAY_PROG="false"
export MKFS_REISER4_PROG=$(type -P mkfs.reiser4)
@@ -308,6 +309,9 @@ _mount_opts()
nfs)
export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS
;;
+ afs)
+ export MOUNT_OPTIONS=$AFS_MOUNT_OPTIONS
+ ;;
cifs)
export MOUNT_OPTIONS=$CIFS_MOUNT_OPTIONS
;;
@@ -366,6 +370,9 @@ _test_mount_opts()
nfs)
export TEST_FS_MOUNT_OPTS=$NFS_MOUNT_OPTIONS
;;
+ afs)
+ export TEST_FS_MOUNT_OPTS=$AFS_MOUNT_OPTIONS
+ ;;
glusterfs)
export TEST_FS_MOUNT_OPTS=$GLUSTERFS_MOUNT_OPTIONS
;;
@@ -392,6 +399,9 @@ _mkfs_opts()
nfs)
export MKFS_OPTIONS=$NFS_MKFS_OPTIONS
;;
+ afs)
+ export MKFS_OPTIONS=$AFS_MKFS_OPTIONS
+ ;;
cifs)
export MKFS_OPTIONS=$CIFS_MKFS_OPTIONS
;;
@@ -492,7 +502,7 @@ _check_device()
fi
case "$FSTYP" in
- 9p|tmpfs|virtiofs)
+ 9p|afs|tmpfs|virtiofs)
# 9p and virtiofs mount tags are just plain strings, so anything is allowed
# tmpfs doesn't use mount source, ignore
;;
@@ -123,6 +123,8 @@ case "$FSTYP" in
nfs)
. ./common/nfs
;;
+ afs)
+ ;;
cifs)
;;
9p)
@@ -637,6 +639,9 @@ _test_mkfs()
nfs*)
# do nothing for nfs
;;
+ afs*)
+ # do nothing for afs
+ ;;
cifs)
# do nothing for cifs
;;
@@ -680,6 +685,9 @@ _mkfs_dev()
nfs*)
# do nothing for nfs
;;
+ afs*)
+ # do nothing for afs
+ ;;
9p)
# do nothing for 9p
;;
@@ -722,7 +730,7 @@ _mkfs_dev()
rm -f $tmp.mkfserr $tmp.mkfsstd
}
-# remove all files in $SCRATCH_MNT, useful when testing on NFS/CIFS
+# remove all files in $SCRATCH_MNT, useful when testing on NFS/AFS/CIFS
_scratch_cleanup_files()
{
case $FSTYP in
@@ -750,7 +758,7 @@ _scratch_mkfs()
local mkfs_status
case $FSTYP in
- nfs*|cifs|ceph|overlay|glusterfs|pvfs2|9p|virtiofs)
+ nfs*|afs|cifs|ceph|overlay|glusterfs|pvfs2|9p|virtiofs)
# unable to re-create this fstyp, just remove all files in
# $SCRATCH_MNT to avoid EEXIST caused by the leftover files
# created in previous runs
@@ -1501,7 +1509,7 @@ _check_mounted_on()
if [ -n "$type" -a "`_fs_type $dev`" != "$type" ]; then
echo "$devname=$dev is mounted but not a type $type filesystem"
- # raw $DF_PROG cannot handle NFS/CIFS/overlay correctly
+ # raw $DF_PROG cannot handle NFS/AFS/CIFS/overlay correctly
_df_device $dev
return 3 # 3 = mounted as wrong type
fi
@@ -1540,6 +1548,15 @@ _require_scratch_nocheck()
_notrun "this test requires a valid \$SCRATCH_MNT"
fi
;;
+ afs)
+ echo $SCRATCH_DEV | grep -q "^%" > /dev/null 2>&1
+ if [ -z "$SCRATCH_DEV" -o "$?" != "0" ]; then
+ _notrun "this test requires a valid \$SCRATCH_DEV"
+ fi
+ if [ ! -d "$SCRATCH_MNT" ]; then
+ _notrun "this test requires a valid \$SCRATCH_MNT"
+ fi
+ ;;
pvfs2)
echo $SCRATCH_DEV | grep -q "://" > /dev/null 2>&1
if [ -z "$SCRATCH_DEV" -o "$?" != "0" ]; then
@@ -1696,6 +1713,15 @@ _require_test()
_notrun "this test requires a valid \$TEST_DIR"
fi
;;
+ afs)
+ echo $TEST_DEV | grep -q "^%" > /dev/null 2>&1
+ if [ -z "$TEST_DEV" -o "$?" != "0" ]; then
+ _notrun "this test requires a valid \$TEST_DEV"
+ fi
+ if [ ! -d "$TEST_DIR" ]; then
+ _notrun "this test requires a valid \$TEST_DIR"
+ fi
+ ;;
cifs)
echo $TEST_DEV | grep -q "//" > /dev/null 2>&1
if [ -z "$TEST_DEV" -o "$?" != "0" ]; then
@@ -2748,7 +2774,7 @@ _scratch_mkfs_richacl()
;;
ext4) _scratch_mkfs -O richacl
;;
- nfs*|cifs|overlay)
+ nfs*|afs|cifs|overlay)
_scratch_mkfs
;;
esac
@@ -2972,6 +2998,9 @@ _check_test_fs()
nfs)
# no way to check consistency for nfs
;;
+ afs)
+ # no way to check consistency for afs
+ ;;
cifs)
# no way to check consistency for cifs
;;
@@ -3033,6 +3062,9 @@ _check_scratch_fs()
nfs*)
# Don't know how to check an NFS filesystem, yet.
;;
+ afs*)
+ # Don't know how to check an AFS filesystem, yet.
+ ;;
cifs)
# Don't know how to check a CIFS filesystem, yet.
;;
@@ -3737,7 +3769,7 @@ _require_atime()
{
_exclude_scratch_mount_option "noatime"
case $FSTYP in
- nfs|cifs|virtiofs)
+ nfs|afs|cifs|virtiofs)
_notrun "atime related mount options have no effect on $FSTYP"
;;
esac
Add support for the AFS filesystem. AFS is a network filesystem and there are a number of features it doesn't support. - No mkfs. (Kind of. An AFS volume server can be asked to create a new volume, but that's probably best left to AFS-specific test suites. Further, a volume would need to be destroyed before another of the same name could be created; it's not simply a matter of overwriting the old one as it is on a blockdev with a block-based filesystem.) - No fsck. (Kind of - the server can be asked to salvage a volume, but it may involve taking the server offline). - No richacls. AFS has its own ACL system. - No atimes. Signed-off-by: David Howells <dhowells@redhat.com> cc: linux-afs@lists.infradead.org --- build/rpm/xfstests.spec.in | 2 +- check | 2 ++ common/config | 12 +++++++++++- common/rc | 42 +++++++++++++++++++++++++++++++++++++----- 4 files changed, 51 insertions(+), 7 deletions(-)