mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
792514c384
Current test expects test_lower to fail with: truncate(test_lower) should have failed While it is sort of okay to fail like that (the above expectation basically acknowledges this weirdness in the overlayfs implementation), it is by no means the only correct behavior: it is also correct for the test to succeed (i.e. truncation fails with ETXTBSY). So add an option to t_truncate_self.c that allows both success and failure, but obviously not SIGSEGV, which is what a we'd get in a real failure mode. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> Reviewed-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
75 lines
2.0 KiB
Bash
Executable File
75 lines
2.0 KiB
Bash
Executable File
#! /bin/bash
|
|
# 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.
|
|
#-----------------------------------------------------------------------
|
|
# Copyright (c) 2016 Red Hat Inc. All Rights Reserved.
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it would be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write the Free Software Foundation,
|
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
#-----------------------------------------------------------------------
|
|
#
|
|
|
|
seq=`basename $0`
|
|
seqres=$RESULT_DIR/$seq
|
|
echo "QA output created by $seq"
|
|
|
|
here=`pwd`
|
|
tmp=/tmp/$$
|
|
status=1 # failure is the default!
|
|
trap "_cleanup; exit \$status" 0 1 2 3 15
|
|
|
|
_cleanup()
|
|
{
|
|
cd /
|
|
rm -f $tmp.*
|
|
}
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common/rc
|
|
. ./common/filter
|
|
|
|
rm -f $seqres.full
|
|
|
|
# real QA test starts here
|
|
_supported_fs overlay
|
|
_supported_os Linux
|
|
_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
|