]> git-server-git.apps.pok.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
fstests: add AFS support
authorDavid Howells <dhowells@redhat.com>
Mon, 24 Apr 2023 14:10:37 +0000 (15:10 +0100)
committerZorro Lang <zlang@kernel.org>
Sun, 30 Apr 2023 16:00:02 +0000 (00:00 +0800)
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
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
build/rpm/xfstests.spec.in
check
common/config
common/rc

index e0f7c5f92dedfd3809dd54d787de33a4ec7759be..3dce41efd97234fa60d6f03b6402010277383311 100644 (file)
@@ -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
diff --git a/check b/check
index c18f02cabf03e2bc88544353c15a649ceaf4afc9..ce5431a0b4dc5a46f4bb9771bbab2055c13f17a4 100755 (executable)
--- a/check
+++ b/check
@@ -57,6 +57,7 @@ usage()
 
 check options
     -nfs               test NFS
+    -afs               test AFS
     -glusterfs         test GlusterFS
     -cifs              test CIFS
     -9p                        test 9p
@@ -280,7 +281,7 @@ while [ $# -gt 0 ]; do
        case "$1" in
        -\? | -h | --help) usage ;;
 
-       -nfs|-glusterfs|-cifs|-9p|-fuse|-virtiofs|-pvfs2|-tmpfs|-ubifs)
+       -nfs|-afs|-glusterfs|-cifs|-9p|-fuse|-virtiofs|-pvfs2|-tmpfs|-ubifs)
                FSTYP="${1:1}"
                ;;
        -overlay)
index 6c8cb3a5ba68c36c15304b384fb5bac5255d9eb1..25fbec14eae56a8f831bd31b996472bc3fb27477 100644 (file)
@@ -301,6 +301,7 @@ export BTRFS_TUNE_PROG=$(type -P btrfstune)
 export BTRFS_CORRUPT_BLOCK_PROG=$(type -P btrfs-corrupt-block)
 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)
@@ -353,6 +354,9 @@ _common_mount_opts()
        nfs)
                echo $NFS_MOUNT_OPTIONS
                ;;
+       afs)
+               echo $AFS_MOUNT_OPTIONS
+               ;;
        cifs)
                echo $CIFS_MOUNT_OPTIONS
                ;;
@@ -420,6 +424,9 @@ _mkfs_opts()
        nfs)
                export MKFS_OPTIONS=$NFS_MKFS_OPTIONS
                ;;
+       afs)
+               export MKFS_OPTIONS=$AFS_MKFS_OPTIONS
+               ;;
        cifs)
                export MKFS_OPTIONS=$CIFS_MKFS_OPTIONS
                ;;
@@ -510,6 +517,8 @@ _source_specific_fs()
        nfs)
                . ./common/nfs
                ;;
+       afs)
+               ;;
        cifs)
                ;;
        9p)
@@ -588,9 +597,9 @@ _check_device()
        fi
 
        case "$FSTYP" in
-       9p|fuse|tmpfs|virtiofs)
-               # 9p, fuse and virtiofs mount tags are just plain strings, so anything is allowed
-               # tmpfs doesn't use mount source, ignore
+       9p|fuse|tmpfs|virtiofs|afs)
+               # 9p, fuse, virtiofs and afs mount tags are just plain strings,
+               # so anything is allowed tmpfs doesn't use mount source, ignore
                ;;
        ceph)
                # ceph has two different possible syntaxes for mount devices. The
index 3a41bd4551fe53925fb46384f9fb63f14b5fb9df..2133b1ef8ad3abd96f72b871465e3ec7fe456aef 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -569,6 +569,9 @@ _test_mkfs()
     nfs*)
        # do nothing for nfs
        ;;
+    afs*)
+       # do nothing for afs
+       ;;
     cifs)
        # do nothing for cifs
        ;;
@@ -614,6 +617,9 @@ _try_mkfs_dev()
     nfs*)
        # do nothing for nfs
        ;;
+    afs*)
+       # do nothing for afs
+       ;;
     9p)
        # do nothing for 9p
        ;;
@@ -660,7 +666,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
@@ -688,7 +694,7 @@ _scratch_mkfs()
        local mkfs_status
 
        case $FSTYP in
-       nfs*|cifs|ceph|overlay|glusterfs|pvfs2|9p|fuse|virtiofs)
+       nfs*|afs|cifs|ceph|overlay|glusterfs|pvfs2|9p|fuse|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
@@ -1612,7 +1618,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
@@ -1651,6 +1657,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
+               ;;
        ceph)
                echo $SCRATCH_DEV | grep -qE "=/|:/" > /dev/null 2>&1
                if [ -z "$SCRATCH_DEV" -o "$?" != "0" ]; then
@@ -1851,6 +1866,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
+               ;;
        ceph)
                echo $TEST_DEV | grep -qE "=/|:/" > /dev/null 2>&1
                if [ -z "$TEST_DEV" -o "$?" != "0" ]; then
@@ -2964,7 +2988,7 @@ _scratch_mkfs_richacl()
                ;;
        ext4)   _scratch_mkfs -O richacl
                ;;
-       nfs*|cifs|overlay)
+       nfs*|afs|cifs|overlay)
                _scratch_mkfs
                ;;
        esac
@@ -3204,6 +3228,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
        ;;
@@ -3268,6 +3295,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.
        ;;
@@ -4052,7 +4082,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"
                ;;
        ceph)
@@ -4587,7 +4617,7 @@ _require_congruent_file_oplen()
        local oplen="$2"
 
        case $FSTYP in
-       nfs*|cifs|9p|virtiofs|ceph|glusterfs|overlay|pvfs2)
+       nfs*|afs|cifs|9p|virtiofs|ceph|glusterfs|overlay|pvfs2)
                # Network filesystems don't know about (or tell the client
                # about) the underlying file allocation unit and they generally
                # pass the file IO request to the underlying filesystem, so we