Message ID | 20240830194546.860173-1-amir73il@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | overlay: deprecate test t_truncate_self | expand |
On Fri, Aug 30, 2024 at 09:45:46PM +0200, Amir Goldstein wrote: > 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@gmail.com> > --- > > 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). Makes sense to me, Reviewed-by: Zorro Lang <zlang@redhat.com> > > 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 >
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
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@gmail.com> --- 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