]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftest/mm: skip if fallocate() is unsupported in gup_longterm
authorMark Brown <broonie@kernel.org>
Fri, 13 Jun 2025 11:44:07 +0000 (12:44 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 10 Jul 2025 05:42:11 +0000 (22:42 -0700)
Currently gup_longterm assumes that filesystems support fallocate() and
uses that to allocate space in files, however this is an optional feature
and is in particular not implemented by NFSv3 which is commonly used in CI
systems leading to spurious failures.  Check for lack of support and
report a skip instead for that case.

Link: https://lkml.kernel.org/r/20250613-selftest-mm-gup-longterm-fallocate-nfs-v1-1-758a104c175f@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: David Hildenbrand <david@redhat.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/mm/gup_longterm.c

index 29047d2e0c49fa033acce16b71372df62164e55a..268dadb8ce438537e8b8ff12b351d83df69a021d 100644 (file)
@@ -114,7 +114,15 @@ static void do_test(int fd, size_t size, enum test_type type, bool shared)
        }
 
        if (fallocate(fd, 0, 0, size)) {
-               if (size == pagesize) {
+               /*
+                * Some filesystems (eg, NFSv3) don't support
+                * fallocate(), report this as a skip rather than a
+                * test failure.
+                */
+               if (errno == EOPNOTSUPP) {
+                       ksft_print_msg("fallocate() not supported by filesystem\n");
+                       result = KSFT_SKIP;
+               } else if (size == pagesize) {
                        ksft_print_msg("fallocate() failed (%s)\n", strerror(errno));
                        result = KSFT_FAIL;
                } else {