mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
c2c9d7ef1a
Change test to output golden silence on success. We are going to run the same check several times, so instead of cloning the test output, cloning the silence will be more conveniet. Generalize cleanup of temp files for the same reason. Signed-off-by: Amir Goldstein <amir73il@gmail.com> Reviewed-by: Eryu Guan <eguan@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
103 lines
2.6 KiB
Bash
Executable File
103 lines
2.6 KiB
Bash
Executable File
#! /bin/bash
|
|
# FSQA Test No. 017
|
|
#
|
|
# Test unstable inode number
|
|
#
|
|
# This simple test demonstrates a known issue with overlayfs:
|
|
# - stat file A shows inode number X
|
|
# - modify A to trigger copy up
|
|
# - stat file A shows inode number Y != X
|
|
#
|
|
# Also test if d_ino of readdir entries changes after copy up.
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
#
|
|
# Copyright (C) 2016 CTERA Networks. All Rights Reserved.
|
|
# Author: Amir Goldstein <amir73il@gmail.com>
|
|
#
|
|
# 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"
|
|
|
|
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
|
|
|
|
# real QA test starts here
|
|
_supported_fs overlay
|
|
_supported_os Linux
|
|
_require_scratch
|
|
|
|
rm -f $seqres.full
|
|
|
|
_scratch_mkfs >>$seqres.full 2>&1
|
|
|
|
# Create our test files.
|
|
# Not dealing with hardlinks here, because there is more to test
|
|
# then stable inode number.
|
|
# Hardlinks will get a test of their own.
|
|
lowerdir=$OVL_BASE_SCRATCH_MNT/$OVL_LOWER
|
|
mkdir -p $lowerdir
|
|
mkdir $lowerdir/dir
|
|
touch $lowerdir/file
|
|
ln -s $lowerdir/file $lowerdir/symlink
|
|
mknod $lowerdir/chrdev c 1 1
|
|
mknod $lowerdir/blkdev b 1 1
|
|
mknod $lowerdir/fifo p
|
|
|
|
|
|
_scratch_mount
|
|
|
|
|
|
rm -f $tmp.*
|
|
|
|
# Test stable stat(2) st_ino
|
|
|
|
# Record inode numbers before and after copy up
|
|
for f in dir file symlink chrdev blkdev fifo; do
|
|
ls -id $SCRATCH_MNT/$f >> $tmp.before
|
|
# chown -h modifies all those file types
|
|
chown -h 100 $SCRATCH_MNT/$f
|
|
ls -id $SCRATCH_MNT/$f >> $tmp.after
|
|
done
|
|
|
|
# Test stable readdir(3)/getdents(2) d_ino
|
|
|
|
# find by inode number - expect to find file by inode number
|
|
cat $tmp.before | while read ino f; do
|
|
find $SCRATCH_MNT/ -maxdepth 1 -inum $ino | grep -q $f || \
|
|
echo "$f not found by ino $ino"
|
|
done
|
|
|
|
# Compare before..after - expect silence
|
|
diff $tmp.before $tmp.after
|
|
|
|
echo "Silence is golden"
|
|
status=0
|
|
exit
|