mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
e714acc0ef
One of the big cpu time consumers when running xfsqa on UML is forking of new processes. when looping lots of times, using 'expr' to calculate the loop counter increment means we fork at least once every loop. using shell builtins means that we don't fork and many tests run substantially faster. Some tests are even runnable with this modification. e.g. 110 went from taking 4500s to run down to 9s with the loop iterators changed to avoid forking. Signed-off-by: Dave Chinner <david@fromorbit.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
100 lines
2.1 KiB
Bash
Executable File
100 lines
2.1 KiB
Bash
Executable File
#! /bin/sh
|
|
# FS QA Test No. 064
|
|
#
|
|
# test multilevel dump and restores with hardlinks
|
|
#
|
|
#-----------------------------------------------------------------------
|
|
# Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved.
|
|
#-----------------------------------------------------------------------
|
|
#
|
|
# creator
|
|
owner=tes@sgi.com
|
|
|
|
seq=`basename $0`
|
|
echo "QA output created by $seq"
|
|
|
|
here=`pwd`
|
|
tmp=/tmp/$$
|
|
status=1 # failure is the default!
|
|
trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common.rc
|
|
. ./common.filter
|
|
. ./common.dump
|
|
|
|
|
|
_ls_size_filter()
|
|
{
|
|
#
|
|
# Print size ($5) and fname ($9).
|
|
# The size is significant since we add to the file as part
|
|
# of a file change for the incremental.
|
|
#
|
|
# Filter out the housekeeping files of xfsrestore
|
|
#
|
|
$AWK_PROG 'NF == 9 { print $5, $9 }' |\
|
|
egrep -v 'dumpdir|housekeeping|dirattr|dirextattr|namreg|state|tree'
|
|
}
|
|
|
|
# real QA test starts here
|
|
_supported_fs xfs
|
|
_supported_os IRIX Linux
|
|
|
|
_create_dumpdir_hardlinks 9
|
|
|
|
echo "Do the incremental dumps"
|
|
i=0
|
|
while [ $i -le 9 ]; do
|
|
if [ $i -gt 0 ]; then
|
|
sleep 2
|
|
_modify_level $i
|
|
fi
|
|
|
|
_stable_fs
|
|
sleep 2
|
|
|
|
echo "********* level $i ***********" >>$seq.full
|
|
date >>$seq.full
|
|
find $SCRATCH_MNT -exec $here/src/lstat64 {} \; | sed 's/(00.*)//' >$tmp.dates.$i
|
|
if [ $i -gt 0 ]; then
|
|
let level_1=$i-1
|
|
diff -c $tmp.dates.$level_1 $tmp.dates.$i >>$seq.full
|
|
else
|
|
cat $tmp.dates.$i >>$seq.full
|
|
fi
|
|
|
|
dump_file=$tmp.df.level$i
|
|
_do_dump_file -l $i
|
|
let i=$i+1
|
|
done
|
|
|
|
echo "Listing of what files we start with:"
|
|
ls -l $dump_dir | _ls_size_filter
|
|
|
|
echo "Look at what files are contained in the inc. dump"
|
|
i=0
|
|
while [ $i -le 9 ]; do
|
|
echo ""
|
|
echo "restoring from df.level$i"
|
|
dump_file=$tmp.df.level$i
|
|
_do_restore_toc
|
|
let i=$i+1
|
|
done
|
|
|
|
echo "Do the cumulative restores"
|
|
i=0
|
|
while [ $i -le 9 ]; do
|
|
dump_file=$tmp.df.level$i
|
|
echo ""
|
|
echo "restoring from df.level$i"
|
|
_do_restore_file_cum -l $i
|
|
echo "ls -l restore_dir"
|
|
ls -lR $restore_dir | _ls_size_filter | _check_quota_file
|
|
let i=$i+1
|
|
done
|
|
|
|
# success, all done
|
|
status=0
|
|
exit
|