selftests/mm: skip gup_longterm tests on weird filesystems
authorBrendan Jackman <jackmanb@google.com>
Tue, 11 Mar 2025 13:18:19 +0000 (13:18 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 17 Mar 2025 05:06:39 +0000 (22:06 -0700)
Some filesystems don't support ftruncate()ing unlinked files.  They return
ENOENT.  In that case, skip the test.

Link: https://lkml.kernel.org/r/20250311-mm-selftests-v4-8-dec210a658f5@google.com
Signed-off-by: Brendan Jackman <jackmanb@google.com>
Cc: Dev Jain <dev.jain@arm.com>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Mateusz Guzik <mjguzik@gmail.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/mm/gup_longterm.c

index 15335820656b1c143b440b8a1065a025378e22a2..03271442aae5aed060fd44010df552a2eedcdafc 100644 (file)
@@ -96,7 +96,15 @@ static void do_test(int fd, size_t size, enum test_type type, bool shared)
        int ret;
 
        if (ftruncate(fd, size)) {
-               ksft_test_result_fail("ftruncate() failed (%s)\n", strerror(errno));
+               if (errno == ENOENT) {
+                       /*
+                        * This can happen if the file has been unlinked and the
+                        * filesystem doesn't support truncating unlinked files.
+                        */
+                       ksft_test_result_skip("ftruncate() failed with ENOENT\n");
+               } else {
+                       ksft_test_result_fail("ftruncate() failed (%s)\n", strerror(errno));
+               }
                return;
        }