Since kernel commit 2a010c412853 ("fs: don't block i_writecount during exec"), truncating an executable file while it is being executed is allowed. Therefore, the test t_truncate_self now fails, so remove it. Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> --- Zorro, This is a fix for a test regression since v6.11-rc1. My fix is to deprecate the test, because the change of behavior is desired (at least until a non test user complains). Thanks, Amir. .gitignore | 1 - src/Makefile | 2 +- src/t_truncate_self.c | 26 -------------------------- tests/overlay/013 | 41 ----------------------------------------- tests/overlay/013.out | 2 -- 5 files changed, 1 insertion(+), 71 deletions(-) delete mode 100644 src/t_truncate_self.c delete mode 100755 tests/overlay/013 delete mode 100644 tests/overlay/013.out diff --git a/.gitignore b/.gitignore index 36083e9d..94f6b564 100644 --- a/.gitignore +++ b/.gitignore @@ -171,7 +171,6 @@ tags /src/t_snapshot_deleted_subvolume /src/t_stripealign /src/t_truncate_cmtime -/src/t_truncate_self /src/test-nextquota /src/testx /src/trunc diff --git a/src/Makefile b/src/Makefile index b3da59a0..52299b4c 100644 --- a/src/Makefile +++ b/src/Makefile @@ -13,7 +13,7 @@ TARGETS = dirstress fill fill2 getpagesize holes lstat64 \ godown resvtest writemod writev_on_pagefault makeextents itrash rename \ multi_open_unlink unwritten_sync genhashnames t_holes \ t_mmap_writev t_truncate_cmtime dirhash_collide t_rename_overwrite \ - holetest t_truncate_self af_unix t_mmap_stale_pmd \ + holetest af_unix t_mmap_stale_pmd \ t_mmap_cow_race t_mmap_fallocate fsync-err t_mmap_write_ro \ t_ext4_dax_journal_corruption t_ext4_dax_inline_corruption \ t_ofd_locks t_mmap_collision mmap-write-concurrent \ diff --git a/src/t_truncate_self.c b/src/t_truncate_self.c deleted file mode 100644 index a11f7d5a..00000000 --- a/src/t_truncate_self.c +++ /dev/null @@ -1,26 +0,0 @@ -#include <stdio.h> -#include <string.h> -#include <errno.h> -#include <unistd.h> -#include <libgen.h> - -int main(int argc, char *argv[]) -{ - const char *progname = basename(argv[0]); - int ret; - - ret = truncate(argv[0], 4096); - if (ret != -1) { - if (argc == 2 && strcmp(argv[1], "--may-succeed") == 0) - return 0; - fprintf(stderr, "truncate(%s) should have failed\n", - progname); - return 1; - } - if (errno != ETXTBSY) { - perror(progname); - return 1; - } - - return 0; -} diff --git a/tests/overlay/013 b/tests/overlay/013 deleted file mode 100755 index 73c72c30..00000000 --- a/tests/overlay/013 +++ /dev/null @@ -1,41 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2016 Red Hat Inc. All Rights Reserved. -# -# FS QA Test 013 -# -# Test truncate running executable binaries from lower and upper dirs. -# truncate(2) should return ETXTBSY, not other errno nor segfault -# -# Commit 03bea6040932 ("ovl: get_write_access() in truncate") fixed this issue. -. ./common/preamble -_begin_fstest auto quick copyup - -# Import common functions. -. ./common/filter - -_require_scratch -_require_test_program "t_truncate_self" - -# remove all files from previous runs -_scratch_mkfs - -# copy test program to lower and upper dir -lowerdir=$OVL_BASE_SCRATCH_MNT/$OVL_LOWER -upperdir=$OVL_BASE_SCRATCH_MNT/$OVL_UPPER -mkdir -p $lowerdir -mkdir -p $upperdir -cp $here/src/t_truncate_self $lowerdir/test_lower -cp $here/src/t_truncate_self $upperdir/test_upper - -_scratch_mount - -# run test program from lower and upper dir -# test programs truncate themselfs, all should fail with ETXTBSY -$SCRATCH_MNT/test_lower --may-succeed -$SCRATCH_MNT/test_upper - -# success, all done -echo "Silence is golden" -status=0 -exit diff --git a/tests/overlay/013.out b/tests/overlay/013.out deleted file mode 100644 index 3e66423b..00000000 --- a/tests/overlay/013.out +++ /dev/null @@ -1,2 +0,0 @@ -QA output created by 013 -Silence is golden -- 2.34.1