diff options
author | David Howells <dhowells@redhat.com> | 2023-04-24 15:10:37 +0100 |
---|---|---|
committer | Zorro Lang <zlang@kernel.org> | 2023-05-01 00:00:02 +0800 |
commit | 3e7529aff5d2625f79a0dee371f7eb4cbb61071d (patch) | |
tree | 66cc537446db45291793d20c3924fc2d92a99306 /common | |
parent | ea9160e0fcaf463a2339b47ad2cd00c56e806352 (diff) |
fstests: add AFS support
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>
Diffstat (limited to 'common')
-rw-r--r-- | common/config | 15 | ||||
-rw-r--r-- | common/rc | 42 |
2 files changed, 48 insertions, 9 deletions
diff --git a/common/config b/common/config index 6c8cb3a5..25fbec14 100644 --- a/common/config +++ b/common/config @@ -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 @@ -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 |