[PATCH] fstests: vfstest: skip rejected tmpfile creation

Qu Wenruo <[email protected]> Fri, 17 Jul 2026 16:37:17 +0930
Newsgroups org.kernel.vger.fstests,org.kernel.vger.linux-btrfs
Message-ID <[email protected]>
Since kernel commit 539dce114465 ("fs: refuse O_TMPFILE creation with an
unmapped fsuid or fsgid"), tmpfile creation can be rejected with
EOVERFLOW, so also skip that error number to avoid false alerts like the
following:

 FSTYP         -- ext4
 PLATFORM      -- Linux/x86_64 btrfs-vm 7.2.0-rc3-custom+ #411 SMP PREEMPT_DYNAMIC Fri Jul 17 16:24:34 ACST 2026
 MKFS_OPTIONS  -- -F /dev/mapper/test-scratch1
 MOUNT_OPTIONS -- -o acl,user_xattr /dev/mapper/test-scratch1 /mnt/scratch

 generic/633  1s ... - output mismatch (see /home/adam/xfstests/results//generic/633.out.bad)
    --- tests/generic/633.out	2022-05-11 11:25:30.816666664 +0930
    +++ /home/adam/xfstests/results//generic/633.out.bad	2026-07-17 16:25:45.033967541 +0930
    @@ -1,2 +1,4 @@
     QA output created by 633
     Silence is golden
    +utils.c: 948: openat_tmpfile_supported - Value too large for defined data type - failure: create
    +utils.c: 948: openat_tmpfile_supported - Value too large for defined data type - failure: create
    ...
    (Run 'diff -u /home/adam/xfstests/tests/generic/633.out /home/adam/xfstests/results//generic/633.out.bad'  to see the entire diff)
 Ran: generic/633
 Failures: generic/633
 Failed 1 of 1 tests

Signed-off-by: Qu Wenruo <[email protected]>
---
 src/vfs/utils.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/vfs/utils.c b/src/vfs/utils.c
index 0b435afe..d2922cc3 100644
--- a/src/vfs/utils.c
+++ b/src/vfs/utils.c
@@ -941,7 +941,11 @@ bool openat_tmpfile_supported(int dirfd)
 
 	fd = openat(dirfd, ".", O_TMPFILE | O_RDWR, S_IXGRP | S_ISGID);
 	if (fd == -1) {
-		if (errno == ENOTSUP) {
+		/*
+		 * Kernel commit 539dce114465 ("fs: refuse O_TMPFILE creation
+		 * with an unmapped fsuid or fsgid") will reject such operation.
+		 */
+		if (errno == ENOTSUP || errno == EOVERFLOW) {
 			errno = 0; /* Don't report misleading errno. */
 			return false;
 		} else {
-- 
2.51.2