[PATCH 4/9] generic/317, afs: Allow for a filesystem not to honour the local uid/gid

David Howells
2021-05-25T13:35:01Z

Each AFS cell has it's own set of user IDs that is uses internally, in its
ACL system and in its protection management protocol. The user ID used by
the fileserver is selected from the set belonging to the fileserver's cell
according to the authentication token associated with an RPC operation -
and this is set as a file's user ID when it is created.

This means that tests that expect to set a UID and see the same UID still
set afterwards will fail.

Add a "_require_use_local_uidgid" clause to indicate that a test expects
internal UID/GID information to be seen in the stat output and should be
skipped if AFS's case.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: linux-afs@lists.infradead.org
---

common/rc | 9 +++++++++
doc/requirement-checking.txt | 8 ++++++++
tests/generic/317 | 1 +
3 files changed, 18 insertions(+)

diff --git a/common/rc b/common/rc
index 4d4b0280..a04433da 100644
--- a/common/rc
+++ b/common/rc
@@ -4622,6 +4622,15 @@ _require_sgid_inheritance()
esac
}

+_require_use_local_uidgid()
+{
+ case $FSTYP in
+ afs)
+ _notrun "$FSTYP doesn't honour local uid and gid"
+ ;;
+ esac
+}
+
init_rc

################################################################################
diff --git a/doc/requirement-checking.txt b/doc/requirement-checking.txt
index 6efc8dc8..c945e16a 100644
--- a/doc/requirement-checking.txt
+++ b/doc/requirement-checking.txt
@@ -19,6 +19,7 @@ they have. This is done with _require_<xxx> macros, which may take parameters.
_require_mknod
_has_mknod
_require_sgid_inheritance
+ _require_use_local_uidgid

(3) System call requirements.

@@ -113,6 +114,13 @@ _require_sgid_inheritance
of the SGID bit and the GID from a marked directory. The test will be
skipped if not supported.

+_require_use_local_uidgid
+
+ The test requires that the $TEST_DEV filesystem sets the uid and gid of a
+ newly created file to the creating process's fsuid and fsgid. Remote
+ filesystems, for example, may choose other settings or not even have these
+ concepts available. The test will be skipped if not supported.
+

========================
SYSTEM CALL REQUIREMENTS
diff --git a/tests/generic/317 b/tests/generic/317
index 289dfabe..112e2e97 100755
--- a/tests/generic/317
+++ b/tests/generic/317
@@ -46,6 +46,7 @@ _require_user
_require_ugid_map
_require_userns
_require_chown
+_require_use_local_uidgid
qa_user_id=`id -u $qa_user`

_filter_output()