[PATCH 0/9] Add support for using xfstests to test AFS

David Howells
2021-05-25T13:34:02Z

Here's a set of patches that make xfstests (mostly) work with the in-kernel
AFS client. It has to allow for a number of features of AFS, in
particular:

(*) AFS has its own permissions service that makes use of authentication
tokens obtained from such as kerberos and uses this in combination
with ACLs to determine file access rights. This overrides the use of
UNIX permissions and using su to impersonate another user doesn't
work.

(*) AFS sets the inode UID field to the user ID associated with the
authentication token, not the client's fsuid when creating.

(*) AFS doesn't support SUID/SGID/SVTX bits and doesn't support SGID/GID
propagation.

(*) For AFS, the DIO alignment is 1 (don't have to deal with DMA). This
causes posix_memalign() to fail.

I've added fixes/workarounds for the above. There are also three -g quick
tests that fail still. generic/258 and generic/634 fail because they try
to use dates that the server refuses to handle (and gives EOVERFLOW for),
and generic/478 fails because AFS file locking can't lock ranges.

A kernel patch[1] is required to make generic/035 work.

David

Link: https://lore.kernel.org/r/162194384460.3999479.7605572278074191079.stgit@warthog.procyon.org.uk/ [1]
---
David Howells (9):
Add AFS support
generic/294, afs: Allow for mknod subtest failing if mknod not supported
generic/314, afs: Allow for a filesystem that doesn't honour SGID inheritance
generic/317, afs: Allow for a filesystem not to honour the local uid/gid
generic/123, generic/128, afs: Allow for an fs that does its own perm management
Add the ability to require O_TMPFILE to be supported for a test
afs: Indicate the minimum DIO alignment is 1
generic/465: Fix handling of DIO alignment < sizeof(long)
Fix other posix_memalign() alignment issues

common/rc | 48 +++++++++++++++++++
doc/requirement-checking.txt | 39 +++++++++++++++
.../aio-dio-append-write-read-race.c | 7 +--
src/aio-dio-regress/aiocp.c | 2 +
src/aio-dio-regress/aiodio_sparse2.c | 3 +-
src/dio-interleaved.c | 5 +-
tests/generic/123 | 1 +
tests/generic/128 | 1 +
tests/generic/294 | 8 ++++
tests/generic/294.cfg | 1 +
tests/generic/294.out | 5 --
tests/generic/294.out.mknod | 6 +++
tests/generic/294.out.nomknod | 7 +++
tests/generic/314 | 1 +
tests/generic/317 | 1 +
tests/generic/531 | 1 +
16 files changed, 126 insertions(+), 10 deletions(-)
create mode 100644 tests/generic/294.cfg
delete mode 100644 tests/generic/294.out
create mode 100644 tests/generic/294.out.mknod
create mode 100644 tests/generic/294.out.nomknod