Files
apfstests/tests/overlay/017
T
Amir Goldstein c2c9d7ef1a overlay/017: silence test output
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>
2017-05-01 14:08:03 +08:00

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