From: Theodore Ts'o Date: Thu, 22 Dec 2016 19:53:46 +0000 (-0500) Subject: overlay: stress test changes to top and bottom layers simultaneously X-Git-Tag: v2022.05.01~2255 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=030fd2aea20fac4f9d588912ac9b0b6ac800b203;p=users%2Fhch%2Fxfstests-dev.git overlay: stress test changes to top and bottom layers simultaneously Introduce a test which runs fsstress on the top and bottom overlayfs directories simultaneously to find potential races that plagued wrapfs derived file systems. [eguan: add copyright info and fix minor code style issue] Signed-off-by: Theodore Ts'o Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- diff --git a/tests/overlay/019 b/tests/overlay/019 new file mode 100755 index 000000000..41ce63b8f --- /dev/null +++ b/tests/overlay/019 @@ -0,0 +1,95 @@ +#! /bin/bash +# FS QA Test 019 +# +# Run fsstress on lower dir and top dir at the same time +# +#----------------------------------------------------------------------- +# Copyright (c) 2016 Google, 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 + +# remove previous $seqres.full before test +rm -f $seqres.full + +# real QA test starts here +_supported_fs overlay +_supported_os Linux +_require_scratch + +# Remove all files from previous tests +_scratch_mkfs + +lowerdir=$SCRATCH_DEV/$OVERLAY_LOWER_DIR +mkdir -p $lowerdir + +_scratch_mount + +echo "Silence is golden" + +d_low=$lowerdir/fsstress +d_top=$SCRATCH_MNT/fsstress +mkdir -p $d_low $d_top + +echo $FSSTRESS_PROG -s 42 -d $d_low -p 4 -n 1000 -l100 -v > $seqres.full.1 +$FSSTRESS_PROG -s 42 -d $d_low -p 4 -n 1000 -l100 -v >> $seqres.full.1 2>&1 & + +echo $FSSTRESS_PROG -s 42 -d $d_top -p 4 -n 1000 -l100 -v > $seqres.full.2 +$FSSTRESS_PROG -s 42 -d $d_top -p 4 -n 1000 -l100 -v >> $seqres.full.2 2>&1 & + +ret=0 +if ! wait %1; then + echo "--------------------------------------" >>$seqres.full.1 + echo "fsstress on lower directory returned $? - see $seqres.full.1" + echo "--------------------------------------" >>$seqres.full.1 + ret=1 +fi + +if ! wait %2; then + echo "--------------------------------------" >>$seqres.full.2 + echo "fsstress on overlay directory returned $? - see $seqres.full.2" + echo "--------------------------------------" >>$seqres.full.2 + ret=1 +fi + +cat $seqres.full.1 $seqres.full.2 > $seqres.full +rm $seqres.full.1 $seqres.full.2 + +if [ "$ret" -eq 1 ]; then + status=1 +else + status=0 +fi + +exit $status diff --git a/tests/overlay/019.out b/tests/overlay/019.out new file mode 100644 index 000000000..163484bca --- /dev/null +++ b/tests/overlay/019.out @@ -0,0 +1,2 @@ +QA output created by 019 +Silence is golden diff --git a/tests/overlay/group b/tests/overlay/group index 74822cbfe..66f780ff5 100644 --- a/tests/overlay/group +++ b/tests/overlay/group @@ -21,3 +21,4 @@ 016 auto quick copyup 017 auto quick copyup 018 auto quick copyup +019 auto stress