xfstests: move generic tests out of top level dir
authorDave Chinner <dchinner@redhat.com>
Fri, 15 Mar 2013 12:27:56 +0000 (12:27 +0000)
committerRich Johnston <rjohnston@sgi.com>
Tue, 26 Mar 2013 16:43:49 +0000 (11:43 -0500)
And into tests/generic.  Tests were found simply by grepping for the
__supported_fs field in the tests.

Output starts to look like:

$ sudo ./check -g quick -r
FSTYP         -- xfs (debug)
PLATFORM      -- Linux/x86_64 test-1 3.5.0-rc5-dgc+
MKFS_OPTIONS  -- -f -bsize=4096 /dev/vdb
MOUNT_OPTIONS -- /dev/vdb /mnt/scratch

./242    1s
./183    2s
generic/236      1s
generic/014      1s
generic/258      0s
./096    1s
generic/245      0s
^C
Ran: ./242 ./183 generic/236 generic/014 generic/258 ./096 generic/245
Passed all 7 tests

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Phil White <pwhite@sgi.com>
[rjohnston@sgi.com added TOT changes]
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
430 files changed:
001 [deleted file]
001.out [deleted file]
002 [deleted file]
002.out [deleted file]
005 [deleted file]
005.out [deleted file]
006 [deleted file]
006.out [deleted file]
007 [deleted file]
007.out [deleted file]
010 [deleted file]
010.out [deleted file]
011 [deleted file]
011.out [deleted file]
013 [deleted file]
013.out [deleted file]
014 [deleted file]
014.out [deleted file]
015 [deleted file]
015.out [deleted file]
020 [deleted file]
020.out [deleted file]
053 [deleted file]
053.out [deleted file]
062 [deleted file]
062.out [deleted file]
068 [deleted file]
068.out [deleted file]
069 [deleted file]
069.out [deleted file]
070 [deleted file]
070.out [deleted file]
074 [deleted file]
074.out [deleted file]
075 [deleted file]
075.out [deleted file]
076 [deleted file]
076.out [deleted file]
077 [deleted file]
077.out [deleted file]
079 [deleted file]
079.out [deleted file]
083 [deleted file]
083.out [deleted file]
088 [deleted file]
088.out.irix [deleted file]
088.out.linux [deleted file]
089 [deleted file]
089.out [deleted file]
091 [deleted file]
091.out [deleted file]
093 [deleted file]
093.out [deleted file]
097 [deleted file]
097.out.udf [deleted file]
097.out.xfs [deleted file]
099 [deleted file]
099.out [deleted file]
100 [deleted file]
100.out [deleted file]
105 [deleted file]
105.out [deleted file]
112 [deleted file]
112.out [deleted file]
113 [deleted file]
113.out [deleted file]
117 [deleted file]
117.out [deleted file]
120 [deleted file]
120.out [deleted file]
123 [deleted file]
123.out [deleted file]
124 [deleted file]
124.out [deleted file]
125 [deleted file]
125.out [deleted file]
126 [deleted file]
126.out [deleted file]
127 [deleted file]
127.out [deleted file]
128 [deleted file]
128.out [deleted file]
129 [deleted file]
129.out [deleted file]
130 [deleted file]
130.out [deleted file]
131 [deleted file]
131.out [deleted file]
132 [deleted file]
132.out [deleted file]
133 [deleted file]
133.out [deleted file]
135 [deleted file]
135.out [deleted file]
141 [deleted file]
141.out [deleted file]
169 [deleted file]
169.out [deleted file]
184 [deleted file]
184.out [deleted file]
192 [deleted file]
192.out [deleted file]
193 [deleted file]
193.out [deleted file]
198 [deleted file]
198.out [deleted file]
204 [deleted file]
204.out [deleted file]
207 [deleted file]
207.out [deleted file]
208 [deleted file]
208.out [deleted file]
209 [deleted file]
209.out [deleted file]
210 [deleted file]
210.out [deleted file]
211 [deleted file]
211.out [deleted file]
212 [deleted file]
212.out [deleted file]
213 [deleted file]
213.out [deleted file]
214 [deleted file]
214.out [deleted file]
215 [deleted file]
215.out [deleted file]
219 [deleted file]
219.out [deleted file]
221 [deleted file]
221.out [deleted file]
223 [deleted file]
223.out [deleted file]
224 [deleted file]
224.out [deleted file]
225 [deleted file]
225.out [deleted file]
226 [deleted file]
226.out [deleted file]
228 [deleted file]
228.out [deleted file]
230 [deleted file]
230.out [deleted file]
231 [deleted file]
231.out [deleted file]
232 [deleted file]
232.out [deleted file]
233 [deleted file]
233.out [deleted file]
234 [deleted file]
234.out [deleted file]
235 [deleted file]
235.out [deleted file]
236 [deleted file]
236.out [deleted file]
237 [deleted file]
237.out [deleted file]
239 [deleted file]
239.out [deleted file]
240 [deleted file]
240.out [deleted file]
241 [deleted file]
241.out [deleted file]
245 [deleted file]
245.out [deleted file]
246 [deleted file]
246.out [deleted file]
247 [deleted file]
247.out [deleted file]
248 [deleted file]
248.out [deleted file]
249 [deleted file]
249.out [deleted file]
251 [deleted file]
251.out [deleted file]
255 [deleted file]
255.out [deleted file]
256 [deleted file]
256.out [deleted file]
257 [deleted file]
257.out [deleted file]
258 [deleted file]
258.out [deleted file]
260 [deleted file]
260.out [deleted file]
263 [deleted file]
263.out [deleted file]
269 [deleted file]
269.out [deleted file]
270 [deleted file]
270.out [deleted file]
273 [deleted file]
273.out [deleted file]
274 [deleted file]
274.out [deleted file]
275 [deleted file]
275.out [deleted file]
277 [deleted file]
277.out [deleted file]
280 [deleted file]
280.out [deleted file]
285 [deleted file]
285.out [deleted file]
286 [deleted file]
286.out [deleted file]
288 [deleted file]
288.out [deleted file]
294 [deleted file]
294.out [deleted file]
299 [deleted file]
299.out [deleted file]
300 [deleted file]
300.out [deleted file]
306 [deleted file]
306.out [deleted file]
group
tests/generic/001 [new file with mode: 0755]
tests/generic/001.out [new file with mode: 0644]
tests/generic/002 [new file with mode: 0755]
tests/generic/002.out [new file with mode: 0644]
tests/generic/005 [new file with mode: 0755]
tests/generic/005.out [new file with mode: 0644]
tests/generic/006 [new file with mode: 0755]
tests/generic/006.out [new file with mode: 0644]
tests/generic/007 [new file with mode: 0755]
tests/generic/007.out [new file with mode: 0644]
tests/generic/010 [new file with mode: 0755]
tests/generic/010.out [new file with mode: 0644]
tests/generic/011 [new file with mode: 0755]
tests/generic/011.out [new file with mode: 0644]
tests/generic/013 [new file with mode: 0755]
tests/generic/013.out [new file with mode: 0644]
tests/generic/014 [new file with mode: 0755]
tests/generic/014.out [new file with mode: 0644]
tests/generic/015 [new file with mode: 0755]
tests/generic/015.out [new file with mode: 0644]
tests/generic/020 [new file with mode: 0755]
tests/generic/020.out [new file with mode: 0644]
tests/generic/053 [new file with mode: 0755]
tests/generic/053.out [new file with mode: 0644]
tests/generic/062 [new file with mode: 0755]
tests/generic/062.out [new file with mode: 0644]
tests/generic/068 [new file with mode: 0755]
tests/generic/068.out [new file with mode: 0644]
tests/generic/069 [new file with mode: 0755]
tests/generic/069.out [new file with mode: 0644]
tests/generic/070 [new file with mode: 0755]
tests/generic/070.out [new file with mode: 0644]
tests/generic/074 [new file with mode: 0755]
tests/generic/074.out [new file with mode: 0644]
tests/generic/075 [new file with mode: 0755]
tests/generic/075.out [new file with mode: 0644]
tests/generic/076 [new file with mode: 0755]
tests/generic/076.out [new file with mode: 0644]
tests/generic/077 [new file with mode: 0755]
tests/generic/077.out [new file with mode: 0644]
tests/generic/079 [new file with mode: 0755]
tests/generic/079.out [new file with mode: 0644]
tests/generic/083 [new file with mode: 0755]
tests/generic/083.out [new file with mode: 0644]
tests/generic/088 [new file with mode: 0755]
tests/generic/088.out.irix [new file with mode: 0644]
tests/generic/088.out.linux [new file with mode: 0644]
tests/generic/089 [new file with mode: 0755]
tests/generic/089.out [new file with mode: 0644]
tests/generic/091 [new file with mode: 0755]
tests/generic/091.out [new file with mode: 0644]
tests/generic/093 [new file with mode: 0755]
tests/generic/093.out [new file with mode: 0644]
tests/generic/097 [new file with mode: 0755]
tests/generic/097.out.udf [new file with mode: 0644]
tests/generic/097.out.xfs [new file with mode: 0644]
tests/generic/099 [new file with mode: 0755]
tests/generic/099.out [new file with mode: 0644]
tests/generic/100 [new file with mode: 0755]
tests/generic/100.out [new file with mode: 0644]
tests/generic/105 [new file with mode: 0755]
tests/generic/105.out [new file with mode: 0644]
tests/generic/112 [new file with mode: 0755]
tests/generic/112.out [new file with mode: 0644]
tests/generic/113 [new file with mode: 0755]
tests/generic/113.out [new file with mode: 0644]
tests/generic/117 [new file with mode: 0755]
tests/generic/117.out [new file with mode: 0644]
tests/generic/120 [new file with mode: 0755]
tests/generic/120.out [new file with mode: 0644]
tests/generic/123 [new file with mode: 0755]
tests/generic/123.out [new file with mode: 0644]
tests/generic/124 [new file with mode: 0755]
tests/generic/124.out [new file with mode: 0644]
tests/generic/125 [new file with mode: 0755]
tests/generic/125.out [new file with mode: 0644]
tests/generic/126 [new file with mode: 0755]
tests/generic/126.out [new file with mode: 0644]
tests/generic/127 [new file with mode: 0755]
tests/generic/127.out [new file with mode: 0644]
tests/generic/128 [new file with mode: 0755]
tests/generic/128.out [new file with mode: 0644]
tests/generic/129 [new file with mode: 0755]
tests/generic/129.out [new file with mode: 0644]
tests/generic/130 [new file with mode: 0755]
tests/generic/130.out [new file with mode: 0644]
tests/generic/131 [new file with mode: 0755]
tests/generic/131.out [new file with mode: 0644]
tests/generic/132 [new file with mode: 0755]
tests/generic/132.out [new file with mode: 0644]
tests/generic/133 [new file with mode: 0755]
tests/generic/133.out [new file with mode: 0644]
tests/generic/135 [new file with mode: 0755]
tests/generic/135.out [new file with mode: 0644]
tests/generic/141 [new file with mode: 0755]
tests/generic/141.out [new file with mode: 0644]
tests/generic/169 [new file with mode: 0755]
tests/generic/169.out [new file with mode: 0644]
tests/generic/184 [new file with mode: 0755]
tests/generic/184.out [new file with mode: 0644]
tests/generic/192 [new file with mode: 0755]
tests/generic/192.out [new file with mode: 0644]
tests/generic/193 [new file with mode: 0755]
tests/generic/193.out [new file with mode: 0644]
tests/generic/198 [new file with mode: 0755]
tests/generic/198.out [new file with mode: 0644]
tests/generic/204 [new file with mode: 0755]
tests/generic/204.out [new file with mode: 0644]
tests/generic/207 [new file with mode: 0755]
tests/generic/207.out [new file with mode: 0644]
tests/generic/208 [new file with mode: 0755]
tests/generic/208.out [new file with mode: 0644]
tests/generic/209 [new file with mode: 0755]
tests/generic/209.out [new file with mode: 0644]
tests/generic/210 [new file with mode: 0755]
tests/generic/210.out [new file with mode: 0644]
tests/generic/211 [new file with mode: 0755]
tests/generic/211.out [new file with mode: 0644]
tests/generic/212 [new file with mode: 0755]
tests/generic/212.out [new file with mode: 0644]
tests/generic/213 [new file with mode: 0755]
tests/generic/213.out [new file with mode: 0644]
tests/generic/214 [new file with mode: 0755]
tests/generic/214.out [new file with mode: 0644]
tests/generic/215 [new file with mode: 0755]
tests/generic/215.out [new file with mode: 0644]
tests/generic/219 [new file with mode: 0755]
tests/generic/219.out [new file with mode: 0644]
tests/generic/221 [new file with mode: 0755]
tests/generic/221.out [new file with mode: 0644]
tests/generic/223 [new file with mode: 0755]
tests/generic/223.out [new file with mode: 0644]
tests/generic/224 [new file with mode: 0755]
tests/generic/224.out [new file with mode: 0644]
tests/generic/225 [new file with mode: 0755]
tests/generic/225.out [new file with mode: 0644]
tests/generic/226 [new file with mode: 0755]
tests/generic/226.out [new file with mode: 0644]
tests/generic/228 [new file with mode: 0755]
tests/generic/228.out [new file with mode: 0644]
tests/generic/230 [new file with mode: 0755]
tests/generic/230.out [new file with mode: 0644]
tests/generic/231 [new file with mode: 0755]
tests/generic/231.out [new file with mode: 0644]
tests/generic/232 [new file with mode: 0755]
tests/generic/232.out [new file with mode: 0644]
tests/generic/233 [new file with mode: 0755]
tests/generic/233.out [new file with mode: 0644]
tests/generic/234 [new file with mode: 0755]
tests/generic/234.out [new file with mode: 0644]
tests/generic/235 [new file with mode: 0755]
tests/generic/235.out [new file with mode: 0644]
tests/generic/236 [new file with mode: 0755]
tests/generic/236.out [new file with mode: 0644]
tests/generic/237 [new file with mode: 0755]
tests/generic/237.out [new file with mode: 0644]
tests/generic/239 [new file with mode: 0755]
tests/generic/239.out [new file with mode: 0644]
tests/generic/240 [new file with mode: 0755]
tests/generic/240.out [new file with mode: 0644]
tests/generic/241 [new file with mode: 0755]
tests/generic/241.out [new file with mode: 0644]
tests/generic/245 [new file with mode: 0755]
tests/generic/245.out [new file with mode: 0644]
tests/generic/246 [new file with mode: 0755]
tests/generic/246.out [new file with mode: 0644]
tests/generic/247 [new file with mode: 0755]
tests/generic/247.out [new file with mode: 0644]
tests/generic/248 [new file with mode: 0755]
tests/generic/248.out [new file with mode: 0644]
tests/generic/249 [new file with mode: 0755]
tests/generic/249.out [new file with mode: 0644]
tests/generic/251 [new file with mode: 0755]
tests/generic/251.out [new file with mode: 0644]
tests/generic/255 [new file with mode: 0755]
tests/generic/255.out [new file with mode: 0644]
tests/generic/256 [new file with mode: 0755]
tests/generic/256.out [new file with mode: 0644]
tests/generic/257 [new file with mode: 0755]
tests/generic/257.out [new file with mode: 0644]
tests/generic/258 [new file with mode: 0755]
tests/generic/258.out [new file with mode: 0644]
tests/generic/260 [new file with mode: 0755]
tests/generic/260.out [new file with mode: 0644]
tests/generic/263 [new file with mode: 0755]
tests/generic/263.out [new file with mode: 0644]
tests/generic/269 [new file with mode: 0755]
tests/generic/269.out [new file with mode: 0644]
tests/generic/270 [new file with mode: 0755]
tests/generic/270.out [new file with mode: 0644]
tests/generic/273 [new file with mode: 0755]
tests/generic/273.out [new file with mode: 0644]
tests/generic/274 [new file with mode: 0755]
tests/generic/274.out [new file with mode: 0644]
tests/generic/275 [new file with mode: 0755]
tests/generic/275.out [new file with mode: 0644]
tests/generic/277 [new file with mode: 0755]
tests/generic/277.out [new file with mode: 0644]
tests/generic/280 [new file with mode: 0755]
tests/generic/280.out [new file with mode: 0644]
tests/generic/285 [new file with mode: 0644]
tests/generic/285.out [new file with mode: 0644]
tests/generic/286 [new file with mode: 0644]
tests/generic/286.out [new file with mode: 0644]
tests/generic/288 [new file with mode: 0644]
tests/generic/288.out [new file with mode: 0644]
tests/generic/294 [new file with mode: 0644]
tests/generic/294.out [new file with mode: 0644]
tests/generic/299 [new file with mode: 0644]
tests/generic/299.out [new file with mode: 0644]
tests/generic/300 [new file with mode: 0644]
tests/generic/300.out [new file with mode: 0644]
tests/generic/306 [new file with mode: 0644]
tests/generic/306.out [new file with mode: 0644]
tests/generic/group

diff --git a/001 b/001
deleted file mode 100755 (executable)
index b9997f3..0000000
--- a/001
+++ /dev/null
@@ -1,319 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 001
-#
-# Random file copier to produce chains of identical files so the head
-# and the tail can be diff'd at the end of each iteration.
-#
-# Exercises creat, write and unlink for a variety of directory sizes, and
-# checks for data corruption.
-#
-# run [config]
-#
-# config has one line per file with filename and byte size, else use
-# the default one below.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2001 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-tmp=/tmp/$$
-here=`pwd`
-status=1
-done_cleanup=false
-trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-verbose=true
-verify=$here/verify_fill
-
-if [ $# -eq 0 ]
-then
-    # use the default config
-    #
-    cat <<End-of-File >$tmp.config
-# pathname     size in bytes
-#
-small          10
-big            102400
-sub/small      10
-sub/big                102400
-#
-sub/a          1
-sub/b          2
-sub/c          4
-sub/d          8
-sub/e          16
-sub/f          32
-sub/g          64
-sub/h          128
-sub/i          256
-sub/j          512
-sub/k          1024
-sub/l          2048
-sub/m          4096
-sub/n          8192
-#
-sub/a00                100
-sub/b00                200
-sub/c00                400
-sub/d00                800
-sub/e00                1600
-sub/f00                3200
-sub/g00                6400
-sub/h00                12800
-sub/i00                25600
-sub/j00                51200
-sub/k00                102400
-sub/l00                204800
-sub/m00                409600
-sub/n00                819200
-#
-sub/a000       1000
-sub/e000       16000
-sub/h000       128000
-sub/k000       1024000
-End-of-File
-elif [ $# -eq 1 ]
-then
-    if [ -f $1 ]
-    then
-       cp $1 $tmp.config
-    else
-       echo "Error: cannot open config \"$1\""
-       exit 1
-    fi
-else
-    echo "Usage: run [config]"
-    exit 1
-fi
-
-ncopy=200              # number of file copies in the chain step
-udf_fsize=20240                # number of sectors for UDF
-
-_setup()
-{
-    if mkdir -p $testdir/$$
-    then
-       :
-    else
-       echo "Error: cannot mkdir \"$testdir/$$\""
-       exit 1
-    fi
-    cd $testdir/$$
-
-    $verbose && echo -n "setup "
-    sed -e '/^#/d' $tmp.config \
-    | while read file nbytes
-    do
-       dir=`dirname $file`
-       if [ "$dir" != "." ]
-       then
-           if [ ! -d $dir ]
-           then
-               if mkdir $dir
-               then
-                   :
-               else
-                   $verbose && echo
-                   echo "Error: cannot mkdir \"$dir\""
-                   exit 1
-               fi
-           fi
-       fi
-       rm -f $file
-       if $here/src/fill $file $file $nbytes
-       then
-           :
-       else
-           $verbose && echo
-           echo "Error: cannot create \"$file\""
-           exit 1
-       fi
-       $verbose && echo -n "."
-    done
-    $verbose && echo
-}
-
-_mark_iteration()
-{
-    $verbose && echo -n "mark_iteration "
-    sed -e '/^#/d' $tmp.config \
-    | while read file nbytes
-    do
-       if [ ! -f $file ]
-       then
-           $verbose && echo
-           echo "Error: $file vanished!"
-           touch $tmp.bad
-           continue
-       fi
-       sed -e "s/ [0-9][0-9]* / $1 /" <$file >$file.tmp
-       mv $file.tmp $file
-       $verbose && echo -n "."
-    done
-    $verbose && echo
-}
-
-# for each file, make a number of copies forming a chain like foo.0,
-# foo.1, foo.2, ... foo.N
-#
-# files are chosen at random, so the lengths of the chains are different
-#
-# then rename foo.N to foo.last and remove all of the other files in
-# the chain
-#
-_chain()
-{
-    $AWK_PROG -v full_file=$here/$seq.full -v verify=$verify <$tmp.config '
-BEGIN  { nfile = 0 }
-/^\#/  { next }
-       { file[nfile] = $1
-         size[nfile] = $2
-         link[nfile] = 0
-         nfile++
-         total_size += $2
-       }
-END    { srand('$iter')
-         for (i=0; i < '$ncopy'; i++) {
-           # choose a file at random, and add one copy to that chain
-           j = -1
-           while (j < 0 || j >= nfile)
-               j = int(rand() * nfile)
-           if (link[j] == 0) {
-               # previous should already exist and next one should not exist
-               printf "if [ ! -f %s ]; then echo \"%s missing!\"; exit; fi\n",file[j],file[j]
-               printf "if [ -f %s.0 ]; then echo \"%s.0 already present!\"; exit; fi\n",file[j],file[j]
-               printf "cp %s %s.0 || exit 1\n",file[j],file[j]
-               printf "ls -i %s.0\n", file[j] >full_file;
-               total_size += size[j]
-               printf "# total size = %d\n", total_size 
-           }
-           else {
-               # previous should already exist and next one should not exist
-               printf "if [ ! -f %s.%d ]; then echo \"%s.%d missing!\"; exit; fi\n",file[j],link[j]-1,file[j],link[j]-1
-               printf "if [ -f %s.%d ]; then echo \"%s.%d already present!\"; exit; fi\n",file[j],link[j],file[j],link[j]
-               printf "cp %s.%d %s.%d || exit 1\n",file[j],link[j]-1,file[j],link[j]
-               printf "ls -i %s.%d\n", file[j], link[j] >full_file;
-               total_size += size[j]
-               printf "# total size = %d\n", total_size 
-           }
-           link[j]++
-         }
-         # close all the chains, 
-         # if have at least one copy then move the last copy to "file[j].last"
-         # and remove all of the other files except the head of the chain
-         for (j=0; j<nfile; j++) {
-           if (link[j] > 0) {
-               printf "mv %s.%d %s.last\n",file[j],link[j]-1,file[j]
-               printf "ls -i %s.last\n", file[j] >full_file;
-           }
-           for (i=0; i<link[j]-1; i++) {
-               printf "rm -f %s.%d\n",file[j],i
-           }
-         }
-       }' \
-       | tee -a $here/$seq.full | sh
-}
-
-_check()
-{
-    rm -f $tmp.bad
-    $verbose && echo -n "check "
-    sed -e '/^#/d' $tmp.config \
-    | while read file nbytes
-    do
-       # the file is never removed so it should exist
-       if [ ! -f $file ]
-       then
-           $verbose && echo
-           echo "Error: $file vanished!"
-           touch $tmp.bad
-           continue
-       fi
-       # checks that the file and its last copy are the same
-       if [ -f $file.last ]
-       then
-           if cmp $file $file.last >/dev/null 2>&1
-           then
-               $verbose && echo -n "."
-           else
-               $verbose && echo
-               echo "Error: corruption for $file ..."
-               diff -c $file $file.last
-               touch $tmp.bad
-           fi
-       else
-           $verbose && echo -n "."
-       fi
-    done
-    $verbose && echo
-}
-
-_cleanup()
-{
-    # cleanup
-    #
-    if $done_cleanup
-    then
-       :
-    elif [ $status -eq 0 ]
-    then
-       $verbose && echo "cleanup"
-       cd /
-       rm -rf $testdir/$$
-       _cleanup_testdir
-       done_cleanup=true
-    fi
-}
-
-rm -f $here/$seq.full
-status=0
-_cleanup
-status=1
-done_cleanup=false
-
-_setup_testdir
-_setup
-
-# do the test
-#
-for iter in 1 2 3 4 5
-do
-    echo -n "iter $iter chain ... "
-    echo "iter $iter" >> $here/$seq.full
-    _chain
-    _check
-    if [ -f $tmp.bad ]
-    then
-       echo "Fatal error: test abandoned without changes"
-       exit 1
-    fi
-done
-
-status=0
-exit
diff --git a/001.out b/001.out
deleted file mode 100644 (file)
index e843a58..0000000
--- a/001.out
+++ /dev/null
@@ -1,9 +0,0 @@
-QA output created by 001
-cleanup
-setup ....................................
-iter 1 chain ... check ....................................
-iter 2 chain ... check ....................................
-iter 3 chain ... check ....................................
-iter 4 chain ... check ....................................
-iter 5 chain ... check ....................................
-cleanup
diff --git a/002 b/002
deleted file mode 100755 (executable)
index db63fa0..0000000
--- a/002
+++ /dev/null
@@ -1,80 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 002
-#
-# simple inode link count test for a regular file
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2001 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-tmp=/tmp/$$
-here=`pwd`
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    rm -f $tmp.*
-    _cleanup_testdir
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_setup_testdir
-
-echo "Silence is goodness ..."
-
-# ensure target directory exists
-mkdir `dirname $testdir/$tmp` 2>/dev/null
-
-touch $testdir/$tmp.1
-for l in 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-do
-    ln $testdir/$tmp.1 $testdir/$tmp.$l
-    x=`src/lstat64 $testdir/$tmp.1 | sed -n -e '/ Links: /s/.*Links: *//p'`
-    if [ "$l" -ne $x ]
-    then
-       echo "Arrgh, created link #$l and lstat64 looks like ..."
-       src/lstat64 $testdir/$tmp.1
-       status=1
-    fi
-done
-
-for l in 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-do
-    x=`src/lstat64 $testdir/$tmp.1 | sed -n -e '/ Links: /s/.*Links: *//p'`
-    if [ "$l" -ne $x ]
-    then
-       echo "Arrgh, about to remove link #$l and lstat64 looks like ..."
-       src/lstat64 $testdir/$tmp.1
-       status=1
-    fi
-    rm -f $testdir/$tmp.$l
-done
-
-# success, all done
-exit
diff --git a/002.out b/002.out
deleted file mode 100644 (file)
index 11426b5..0000000
--- a/002.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 002
-Silence is goodness ...
diff --git a/005 b/005
deleted file mode 100755 (executable)
index 27da3d3..0000000
--- a/005
+++ /dev/null
@@ -1,99 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 005
-#
-# Test symlinks & ELOOP
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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
-#
-#-----------------------------------------------------------------------
-#
-
-#
-# Note1: On Linux, ELOOP limit used to be 32 but changed to 8, and lately
-# its become 5.  Who knows what it might be next.
-# Note2: On IRIX, the limit is around the 30 mark.
-# 
-# What we are looking for here is: no panic due to blowing the stack;
-# and that the ELOOP error code is returned at some point (the actual
-# limit point is unimportant, just checking that we do hit it).
-# 
-
-seq=`basename $0`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd $testdir
-    rm -f symlink_{0,1,2,3,4}{0,1,2,3,4,5,6,7,8,9} symlink_self empty_file
-    cd /
-    _cleanup_testdir
-}
-
-_touch()
-{
-    # On IRIX: Too many symbolic links in path name traversal
-    # On Linux: Too many levels of symbolic links
-    touch $@ 2>&1 | grep -q 'Too many.*symbolic links'
-    if [ $? -eq 0 ]; then
-       echo "ELOOP returned.  Good."
-    else
-       echo "No ELOOP?  Unexpected!"
-    fi
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-
-# IRIX UDF does not support symlinks
-if [ $FSTYP == 'udf' ]; then
-    _supported_os Linux
-else
-    _supported_os Linux IRIX
-fi
-
-_setup_testdir
-
-cd $testdir
-
-o=empty_file
-touch $o
-for f in symlink_{0,1,2,3,4}{0,1,2,3,4,5,6,7,8,9}
-do
-    ln -s $o $f
-    o=$f
-done
-
-ln -s symlink_self symlink_self
-
-echo "*** touch deep symlinks"
-echo ""
-_touch symlink_{0,1,2,3,4}{0,1,2,3,4,5,6,7,8,9}
-echo ""
-echo "*** touch recusive symlinks"
-echo ""
-_touch symlink_self
-
-exit
diff --git a/005.out b/005.out
deleted file mode 100644 (file)
index b3ccffa..0000000
--- a/005.out
+++ /dev/null
@@ -1,8 +0,0 @@
-QA output created by 005
-*** touch deep symlinks
-
-ELOOP returned.  Good.
-
-*** touch recusive symlinks
-
-ELOOP returned.  Good.
diff --git a/006 b/006
deleted file mode 100755 (executable)
index 1437b46..0000000
--- a/006
+++ /dev/null
@@ -1,78 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 006
-#
-# permname
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2001 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -f $tmp.*
-    rm -rf $testdir/permname.$$
-    _cleanup_testdir
-}
-
-_count()
-{
-    $AWK_PROG '
-        BEGIN   { count = 0 }
-                { count ++ }
-        END     { print count " files created" }
-    '
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_setup_testdir
-
-mkdir $testdir/permname.$$
-
-echo ""
-echo "single thread permname"
-echo "----------------------"
-mkdir $testdir/permname.$$/a
-cd $testdir/permname.$$/a
-$here/src/permname -c 4 -l 6 -p 1 || echo "permname returned $?"
-find . | _count
-
-echo ""
-echo "multi thread permname"
-echo "----------------------"
-mkdir $testdir/permname.$$/b
-cd $testdir/permname.$$/b
-$here/src/permname -c 4 -l 6 -p 4 || echo "permname returned $?"
-find . | _count
-
-exit
diff --git a/006.out b/006.out
deleted file mode 100644 (file)
index ce17a49..0000000
--- a/006.out
+++ /dev/null
@@ -1,11 +0,0 @@
-QA output created by 006
-
-single thread permname
-----------------------
-alpha size = 4, name length = 6, total files = 4096, nproc=1
-4097 files created
-
-multi thread permname
-----------------------
-alpha size = 4, name length = 6, total files = 4096, nproc=4
-4097 files created
diff --git a/007 b/007
deleted file mode 100755 (executable)
index 2bb981f..0000000
--- a/007
+++ /dev/null
@@ -1,74 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 007
-#
-# drive the src/nametest program
-# which does a heap of open(create)/unlink/stat
-# and checks that error codes make sense with its
-# memory of the files created.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2001 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -f $tmp.*
-    rm -rf $testdir/$seq
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_setup_testdir
-
-status=1 # default failure 
-sourcefile=$tmp.nametest
-seed=1
-iterations=100000
-num_filenames=100
-
-# need to create an input file with a list of
-# filenames on each line 
-i=1
-while [ $i -le $num_filenames ]; do
-  echo "nametest.$i" >>$sourcefile
-  let i=$i+1
-done
-
-mkdir $testdir/$seq
-cd $testdir/$seq
-$here/src/nametest -l $sourcefile -s $seed -i $iterations -z
-
-# success, all done
-status=0
-exit
diff --git a/007.out b/007.out
deleted file mode 100644 (file)
index 514b44a..0000000
--- a/007.out
+++ /dev/null
@@ -1,22 +0,0 @@
-QA output created by 007
-.Seed = 1 (use "-s 1" to re-execute this test)
-.......................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-.........................................................................
-....................................................
-creates:  18736 OK,  18802 EEXIST  ( 37538 total, 50% EEXIST)
-removes:  18675 OK,  19927 ENOENT  ( 38602 total, 51% ENOENT)
-lookups:  12000 OK,  11860 ENOENT  ( 23860 total, 49% ENOENT)
-total  :  49411 OK,  50589 w/error (100000 total, 50% w/error)
-
-cleanup:     61 removes
diff --git a/010 b/010
deleted file mode 100755 (executable)
index 245f407..0000000
--- a/010
+++ /dev/null
@@ -1,69 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 010
-#
-# dbtest
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2002 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -f $tmp.*
-    rm -f $testdir/DBtest*.{pag,dir}
-    _cleanup_testdir
-}
-
-# filter random number output from dbtest
-#
-_filter_dbtest()
-{
-    sed \
-        -e '/were [0-9][0-9]* duplicate/s//were BLEEP duplicate/' \
-        -e '/using [0-9][0-9]* as seed/s//using BLEEP as seed/'
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-[ -x $here/src/dbtest ] || _notrun "dbtest was not built for this platform"
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_setup_testdir
-
-rm -f $seq.full
-
-cd $testdir
-
-$here/src/dbtest -l 5 -n 1000 2>&1 | tee -a $here/$seq.full | _filter_dbtest
-
-# success, all done
-exit
diff --git a/010.out b/010.out
deleted file mode 100644 (file)
index 56a3ccb..0000000
--- a/010.out
+++ /dev/null
@@ -1,58 +0,0 @@
-QA output created by 010
-dbtest v1.0
-
-Creating database containing 1000 records...
-       performing lookups for 5 iterations...
-       using BLEEP as seed for srandom()...
-
-       
-There were BLEEP duplicate checksums generated
-
-Performing lookups on database...
-
-       Sequential lookups...
-
-
-       Random lookups...
-
-Lookups succeeded...
-
-Performing lookups on database...
-
-       Sequential lookups...
-
-
-       Random lookups...
-
-Lookups succeeded...
-
-Performing lookups on database...
-
-       Sequential lookups...
-
-
-       Random lookups...
-
-Lookups succeeded...
-
-Performing lookups on database...
-
-       Sequential lookups...
-
-
-       Random lookups...
-
-Lookups succeeded...
-
-Performing lookups on database...
-
-       Sequential lookups...
-
-
-       Random lookups...
-
-Lookups succeeded...
-
-Cleaning up database...
-       
-There were BLEEP duplicate checksums generated
diff --git a/011 b/011
deleted file mode 100755 (executable)
index 4ede2d8..0000000
--- a/011
+++ /dev/null
@@ -1,86 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 011
-#
-# dirstress
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2001 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-out=""
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -f $tmp.*
-    [ -n "$out" ] && rm -rf $out
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_setup_testdir
-
-out=$testdir/dirstress.$$
-
-rm -f $seq.full
-
-_test()
-{
-    test="$1"
-    args="$2"
-    count="$3"
-    
-    echo "*** TEST $test $args -f <count>"
-    if ! $here/src/dirstress -d $out -f $count $args >$tmp.out 2>&1
-    then
-        echo "    dirstress failed"
-        echo "*** TEST $test -d $out -f $count $args" >>$seq.full
-        cat $tmp.out >>$seq.full
-        status=1
-    fi
-}
-
-# dirstress doesn't check returns - this is a crash & burn test.
-if ! mkdir $out
-then
-    echo "!! couldn't mkdir $out"
-    status=1
-    exit
-fi
-
-count=1000
-_test 1 "-p 1 -n 1" $count
-_test 2 "-p 5 -n 1" $count
-_test 3 "-p 5 -n 5" $count
-
-# if error
-exit
diff --git a/011.out b/011.out
deleted file mode 100644 (file)
index 546a4db..0000000
--- a/011.out
+++ /dev/null
@@ -1,4 +0,0 @@
-QA output created by 011
-*** TEST 1 -p 1 -n 1 -f <count>
-*** TEST 2 -p 5 -n 1 -f <count>
-*** TEST 3 -p 5 -n 5 -f <count>
diff --git a/013 b/013
deleted file mode 100755 (executable)
index 0879a2a..0000000
--- a/013
+++ /dev/null
@@ -1,136 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 013
-#
-# fsstress
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2002 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    # we might get here with a RO FS
-    mount -o remount,rw $TEST_DEV >/dev/null 2>&1
-    # now remove fsstress directory.
-    # N.B. rm(1) on IRIX can find problems when building up a long pathname
-    # such that what it has is greater the 1024 chars and will
-    # stop and complain - so get rid of complaint
-    # Ref. pv#935754
-    rm -rf $testdir/fsstress.$$.* 2>&1 | grep -v 'Path too long'
-    _cleanup_testdir
-}
-
-_filesize()
-{
-    ls -l $1 | $AWK_PROG '{print "    filesize = " $5}'
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_do_test()
-{
-    _n="$1"
-    _param="$2"
-    _count="$3"
-
-    out=$testdir/fsstress.$$.$_n
-    rm -rf $out
-    if ! mkdir $out
-    then
-        echo "    failed to mkdir $out"
-        status=1
-        exit
-    fi
-
-    echo ""
-    echo "-----------------------------------------------"
-    echo "fsstress.$_n : $_param"
-    echo "-----------------------------------------------"
-    # -m limits number of users/groups so check doesn't fail (malloc) later
-    dbgoutfile=$seq.full
-    if ! $FSSTRESS_PROG $_param $FSSTRESS_AVOID -v -m 8 -n $_count -d $out >>$dbgoutfile 2>&1
-    then
-        echo "    fsstress (count=$_count) returned $? - see $seq.full"
-        echo "--------------------------------------"       >>$here/$seq.full
-        echo "$_n - output from fsstress:"                  >>$here/$seq.full
-        echo "--------------------------------------"       >>$here/$seq.full
-        echo "<NOT LOGGED>"                                 >>$here/$seq.full
-        #cat $tmp.out                                       >>$here/$seq.full
-        status=1
-    fi
-
-    _check_test_fs
-}
-
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_setup_testdir
-
-rm -f $here/$seq.full
-echo "brevity is wit..."
-
-count=1000
-procs=20
-
-_check_test_fs
-
-# the default
-
-_do_test 1 "-r" $count
-
-# and the default with multiprocess
-
-_do_test 2 "-p $procs -r" $count
-
-# from Glen's notes
-
-_do_test 3 "-p 4 -z -f rmdir=10 -f link=10 -f creat=10 -f mkdir=10 -f rename=30 -f stat=30 -f unlink=30 -f truncate=20" $count
-
-# if all ok by here then probably don't need $seq.full
-rm -f $seq.full
-
-exit
-
-# Test with error injection:
-#
-# (error injection)
-# fsstress -n 1000 -d $scratch -p 4 -z -f rmdir=10 -f link=10 -f creat=10 \
-#          -f mkdir=10 -f rename=30 -f stat=30 -f unlink=30 -f truncate=20 \
-#          -e 1
-#
-# Error values 1 - 6 test IFLUSH
-#         1 - corrupt buffer being flushed to di_core.di_magic
-#         2 - corrupt inode being flushed i_d.di_magic
-#         3 - corrupt S_IFREG format check
-#         4 - corrupt S_IFDIR format check
-#         5 - corrupt i_d.di_nextents
-#         6 - corrupt i_d.di_forkoff > sb_inodesize
diff --git a/013.out b/013.out
deleted file mode 100644 (file)
index 127cc86..0000000
--- a/013.out
+++ /dev/null
@@ -1,14 +0,0 @@
-QA output created by 013
-brevity is wit...
-
------------------------------------------------
-fsstress.1 : -r
------------------------------------------------
-
------------------------------------------------
-fsstress.2 : -p 20 -r
------------------------------------------------
-
------------------------------------------------
-fsstress.3 : -p 4 -z -f rmdir=10 -f link=10 -f creat=10 -f mkdir=10 -f rename=30 -f stat=30 -f unlink=30 -f truncate=20
------------------------------------------------
diff --git a/014 b/014
deleted file mode 100755 (executable)
index 93caaa6..0000000
--- a/014
+++ /dev/null
@@ -1,72 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 014
-#
-# truncfile
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2001 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -f $tmp.*
-    rm -rf $testdir/truncfile.$$.*
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_supported_fs generic
-_supported_os IRIX Linux
-
-_require_sparse_files
-_setup_testdir
-
-# ensure EOF preallocation doesn't massively extend the runtime of this test
-# by limiting the amount of preallocation and therefore the amount of blocks
-# zeroed during the truncfile test run.
-if [ "$FSTYP" == "xfs" ]; then
-       umount $TEST_DIR
-       _test_mount -o allocsize=64k
-fi
-
-echo "brevity is wit..."
-
-echo "------"
-echo "test 1"
-echo "------"
-if ! src/truncfile -c 10000 $testdir/truncfile.$$.0 >$tmp.out 2>&1
-then
-    out=`cat $tmp.out`
-    echo "truncfile returned $? : \"$out\""
-else
-    echo "OK"
-fi
-
-exit
diff --git a/014.out b/014.out
deleted file mode 100644 (file)
index fae7d03..0000000
--- a/014.out
+++ /dev/null
@@ -1,6 +0,0 @@
-QA output created by 014
-brevity is wit...
-------
-test 1
-------
-OK
diff --git a/015 b/015
deleted file mode 100755 (executable)
index 52ab251..0000000
--- a/015
+++ /dev/null
@@ -1,125 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 015
-#
-# check out-of-space behaviour
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2002 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # success is the default!
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_cleanup()
-{
-       umount $SCRATCH_MNT
-}
-
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_free()
-{
-    _df_dir $SCRATCH_MNT | $AWK_PROG '{ print $5 }'
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_require_scratch
-_require_no_large_scratch_dev
-
-_scratch_mkfs_sized `expr 50 \* 1024 \* 1024` >/dev/null 2>&1 \
-    || _fail "mkfs failed"
-_scratch_mount || _fail "mount failed"
-out=$SCRATCH_MNT/fillup.$$
-rm -f $seq.full
-
-free0=`_free`
-if [ -z "$free0" ]
-then
-    echo "   *** failed to get free space (0)"
-    exit 1
-fi
-echo "free space at start $free0" >> $seq.full
-
-echo "fill disk:"      # well, filesystem really - not disk
-
-POSIXLY_CORRECT=yes dd if=/dev/zero of=$out bs=1024k 2>&1 | _filter_dd
-
-echo "check free space:"
-
-free1=`_free`
-if [ -z "$free1" ]
-then
-    echo "   *** failed to get free space (1)"
-    exit 1
-fi
-echo "free space after fill $free1" >> $seq.full
-
-if [ ! -e $out ]
-then
-    echo "   *** file not created"
-    exit 1
-fi
-
-if [ ! -s $out ]
-then
-    echo "   *** file created with zero length"
-    ls -l $out
-    exit 1
-fi
-
-echo "delete fill:"
-
-if ! rm $out
-then
-    echo "   *** file not deleted"
-    exit 1
-fi
-
-if [ -e $out ]
-then
-    echo "   *** file still exists"
-    ls -l $out
-    exit 1
-fi
-
-echo "check free space:"
-
-free2=`_free`
-if [ -z "$free2" ]
-then
-    echo "   *** failed to get free space (2)"
-    exit 1
-fi
-echo "free space after delete $free2" >> $seq.full
-
-echo -n "   !!! "
-_within_tolerance "free space" $free2 $free0 1% -v
-
-status=0
-exit
diff --git a/015.out b/015.out
deleted file mode 100644 (file)
index 729287f..0000000
--- a/015.out
+++ /dev/null
@@ -1,7 +0,0 @@
-QA output created by 015
-fill disk:
-   !!! disk full (expected)
-check free space:
-delete fill:
-check free space:
-   !!! free space is in range
diff --git a/020 b/020
deleted file mode 100755 (executable)
index 2bd1d9f..0000000
--- a/020
+++ /dev/null
@@ -1,184 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 020
-#
-# extended attributes
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2002 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; rm -f $tmp.* $testfile; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-_cleanup()
-{
-    _cleanup_testdir
-}
-
-_filter()
-{
-    sed "s#$testdir[^ :]*#<TESTFILE>#g; 
-            s#$tmp[^ :]*#<TMPFILE>#g" $1
-}
-
-_attr()
-{
-    $ATTR_PROG $* 2>$tmp.err >$tmp.out
-    exit=$?
-    _filter $tmp.out
-    _filter $tmp.err 1>&2
-    return $exit
-}
-
-_getfattr()
-{
-    $GETFATTR_PROG $* 2>$tmp.err >$tmp.out
-    exit=$?
-    _filter $tmp.out
-    _filter $tmp.err 1>&2
-    return $exit
-}
-
-_attr_list()
-{
-    file=$1
-    
-    echo "   *** print attributes"
-    if ! _getfattr -d -e text --absolute-names $file
-    then
-        echo "      !!! error return"
-        return 1
-    fi
-}
-
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_attrs
-
-_setup_testdir
-
-rm -f $seq.full
-
-testfile=$testdir/attribute_$$
-
-echo "*** list non-existant file"
-_attr_list $testfile
-
-echo "*** list empty file"
-touch $testfile
-_attr_list $testfile
-
-echo "*** query non-existant attribute"
-_attr -g "nonexistant" $testfile 2>&1
-
-echo "*** one attribute"
-echo "fish" | _attr -s fish $testfile
-_attr_list $testfile
-
-echo "*** replace attribute"
-echo "fish3" | _attr -s fish $testfile
-_attr_list $testfile
-
-echo "*** add attribute"
-echo "fish2" | _attr -s snrub $testfile
-_attr_list $testfile
-
-echo "*** remove attribute"
-_attr -r fish $testfile
-_attr_list $testfile
-
-echo "*** add lots of attributes"
-v=0
-
-while [ $v -lt $MAX_ATTRS ]
-do
-    echo -n "value_$v" | attr -s "attribute_$v" $testfile >>$seq.full
-    if [ $? -ne 0 ]
-    then
-        echo "!!! failed to add \"attribute_$v\""
-        exit 1
-    fi
-    
-    let "v = v + 1"
-done
-
-echo "*** check"
-# don't print it all out...
-getfattr --absolute-names $testfile \
-    | tee -a $seq.full \
-    | $AWK_PROG '
-       /^#/ { next }
-       /^[     ]*$/ { next }
-        { l++ } 
-       END {print "   *** " (l - 1) " attribute(s)" }' \
-    | sed s/$MAX_ATTRS/MAX_ATTRS/
-
-echo "*** remove lots of attributes"
-v=0
-while [ $v -lt $MAX_ATTRS ]
-do
-    if ! $ATTR_PROG -r "attribute_$v" $testfile >>$seq.full
-    then
-        echo "!!! failed to remove \"attribute_$v\""
-        exit 1
-    fi
-    
-    let "v = v + 1"
-done
-
-_attr_list $testfile
-
-echo "*** really long value"
-dd if=/dev/zero bs=1 count=$MAX_ATTRVAL_SIZE 2>/dev/null \
-    | _attr -s "long_attr" $testfile >/dev/null
-
-OCTAL_SIZE=`echo "obase=8; $MAX_ATTRVAL_SIZE" | bc`
-_attr -q -g "long_attr" $testfile | od -t x1 | sed -e "s/^0*$OCTAL_SIZE$/ATTRSIZE/"    
-_attr -r "long_attr" $testfile >/dev/null
-
-
-echo "*** set/get/remove really long names (expect failure)"
-short="XXXXXXXXXX"
-long="$short$short$short$short$short$short$short$short$short$short"
-vlong="$long$long$long"
-
-_attr -s $vlong -V fish $testfile 2>&1 >/dev/null
-_attr -g $vlong $testfile 2>&1 >/dev/null
-_attr -r $vlong $testfile 2>&1 >/dev/null
-
-echo "*** check final"
-
-_attr_list $testfile
-
-echo "*** delete"
-rm -f $testfile
-
-exit
diff --git a/020.out b/020.out
deleted file mode 100644 (file)
index 7e3e65b..0000000
--- a/020.out
+++ /dev/null
@@ -1,65 +0,0 @@
-QA output created by 020
-*** list non-existant file
-   *** print attributes
-getfattr: <TESTFILE>: No such file or directory
-      !!! error return
-*** list empty file
-   *** print attributes
-*** query non-existant attribute
-attr_get: No data available
-Could not get "nonexistant" for <TESTFILE>
-*** one attribute
-Attribute "fish" set to a 5 byte value for <TESTFILE>:
-fish
-
-   *** print attributes
-# file: <TESTFILE>
-user.fish="fish\012"
-
-*** replace attribute
-Attribute "fish" set to a 6 byte value for <TESTFILE>:
-fish3
-
-   *** print attributes
-# file: <TESTFILE>
-user.fish="fish3\012"
-
-*** add attribute
-Attribute "snrub" set to a 6 byte value for <TESTFILE>:
-fish2
-
-   *** print attributes
-# file: <TESTFILE>
-user.fish="fish3\012"
-user.snrub="fish2\012"
-
-*** remove attribute
-   *** print attributes
-# file: <TESTFILE>
-user.snrub="fish2\012"
-
-*** add lots of attributes
-*** check
-   *** MAX_ATTRS attribute(s)
-*** remove lots of attributes
-   *** print attributes
-# file: <TESTFILE>
-user.snrub="fish2\012"
-
-*** really long value
-0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-*
-ATTRSIZE
-*** set/get/remove really long names (expect failure)
-attr_set: Invalid argument
-Could not set "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" for <TESTFILE>
-attr_get: Invalid argument
-Could not get "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" for <TESTFILE>
-attr_remove: Invalid argument
-Could not remove "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" for <TESTFILE>
-*** check final
-   *** print attributes
-# file: <TESTFILE>
-user.snrub="fish2\012"
-
-*** delete
diff --git a/053 b/053
deleted file mode 100755 (executable)
index 388c9b4..0000000
--- a/053
+++ /dev/null
@@ -1,90 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 053
-#
-# xfs_repair breaks acls
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2002 Silicon Graphics, 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`
-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.attr
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_scratch
-_require_acls
-_acl_setup_ids
-_do_die_on_error=y
-test=$SCRATCH_MNT/test
-
-# make filesystem on scratch using the defaults
-_do 'make filesystem on $SCRATCH_DEV' '_scratch_mkfs'
-_do 'mount filesytem' '_scratch_mount'
-
-# create test files and set acls
-acls="
-u::r--,g::rwx,o::rw-
-u::r-x,g::---,o::---
-u::---,g::r-x,o::---
-u::---,g::---,o::r-x
-u::---,g::r-x,o::rwx
-u::---,g::---,o::---,u:$acl2:r-x,m::rwx
-u::rwx,g::r-x,o::r--
-u::---,g::---,o::---,g:$acl2:r-x,m::-w-"
-
-i=0
-for acl in $acls
-do
-  _do "touch $test.$i"
-  _do "chacl $acl $test.$i"
-  let i=$i+1
-done
-
-list_acls()
-{
-  i=0
-  for acl in $acls
-  do
-    chacl -l $test.$i | _acl_filter_id | sed -e "s!$SCRATCH_MNT!\$SCRATCH_MNT!"
-    let i=$i+1
-  done
-}
-
-echo "acls before repair:"
-list_acls
-_do 'unmount $SCRATCH_DEV' 'umount $SCRATCH_DEV'
-_do 'repair filesystem' '_check_scratch_fs'
-_do 'mount filesytem' '_scratch_mount'
-echo "acls after repair: "
-list_acls
-
-# success, all done
-status=0; exit
diff --git a/053.out b/053.out
deleted file mode 100644 (file)
index cd71cbb..0000000
--- a/053.out
+++ /dev/null
@@ -1,24 +0,0 @@
-QA output created by 053
-make filesystem on $SCRATCH_DEV... done
-mount filesytem... done
-acls before repair:
-$SCRATCH_MNT/test.0 [u::r--,g::rwx,o::rw-]
-$SCRATCH_MNT/test.1 [u::r-x,g::---,o::---]
-$SCRATCH_MNT/test.2 [u::---,g::r-x,o::---]
-$SCRATCH_MNT/test.3 [u::---,g::---,o::r-x]
-$SCRATCH_MNT/test.4 [u::---,g::r-x,o::rwx]
-$SCRATCH_MNT/test.5 [u::---,u:id2:r-x,g::---,m::rwx,o::---]
-$SCRATCH_MNT/test.6 [u::rwx,g::r-x,o::r--]
-$SCRATCH_MNT/test.7 [u::---,g::---,g:id2:r-x,m::-w-,o::---]
-unmount $SCRATCH_DEV... done
-repair filesystem... done
-mount filesytem... done
-acls after repair: 
-$SCRATCH_MNT/test.0 [u::r--,g::rwx,o::rw-]
-$SCRATCH_MNT/test.1 [u::r-x,g::---,o::---]
-$SCRATCH_MNT/test.2 [u::---,g::r-x,o::---]
-$SCRATCH_MNT/test.3 [u::---,g::---,o::r-x]
-$SCRATCH_MNT/test.4 [u::---,g::r-x,o::rwx]
-$SCRATCH_MNT/test.5 [u::---,u:id2:r-x,g::---,m::rwx,o::---]
-$SCRATCH_MNT/test.6 [u::rwx,g::r-x,o::r--]
-$SCRATCH_MNT/test.7 [u::---,g::---,g:id2:r-x,m::-w-,o::---]
diff --git a/062 b/062
deleted file mode 100755 (executable)
index 5a6081e..0000000
--- a/062
+++ /dev/null
@@ -1,219 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 062
-#
-# Exercises the getfattr/setfattr tools
-# Derived from tests originally written by Andreas Gruenbacher for ext2
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2002 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-_cleanup()
-{
-        cd /
-       echo; echo "*** unmount"
-       umount $SCRATCH_MNT 2>/dev/null
-       rm -f $tmp.*
-}
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-getfattr()
-{
-    $GETFATTR_PROG --absolute-names -dh $@ 2>&1 | _filter_scratch
-}
-
-setfattr()
-{
-    $SETFATTR_PROG $@ 2>&1 | _filter_scratch
-}
-
-_create_test_bed()
-{
-       echo "*** create test bed"
-       touch $SCRATCH_MNT/reg
-       mkdir -p $SCRATCH_MNT/dir
-       ln -s $SCRATCH_MNT/dir $SCRATCH_MNT/lnk
-       mkdir $SCRATCH_MNT/dev
-       mknod $SCRATCH_MNT/dev/b b 0 0
-       mknod $SCRATCH_MNT/dev/c c 0 0
-       mknod $SCRATCH_MNT/dev/p p
-       # sanity check
-       find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch | grep -v "lost+found"
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_scratch
-_require_attrs
-
-rm -f $tmp.backup1 $tmp.backup2 $seq.full
-
-# real QA test starts here
-_scratch_mkfs > /dev/null 2>&1 || _fail "mkfs failed"
-_scratch_mount || _fail "mount failed"
-_create_test_bed
-
-# In kernels before 3.0, getxattr() fails with EPERM for an attribute which
-# cannot exist.  Later kernels fail with ENODATA.  Accept both results.
-invalid_attribute_filter() {
-       sed -e "s:\(No such attribute\|Operation not permitted\):No such attribute or operation not permitted:"
-}
-
-if [ "$USE_ATTR_SECURE" = yes ]; then
-    ATTR_MODES="user security trusted"
-else
-    ATTR_MODES="user trusted"
-fi
-for nsp in $ATTR_MODES; do
-       for inode in reg dir lnk dev/b dev/c dev/p; do
-
-               echo; echo "=== TYPE $inode; NAMESPACE $nsp"; echo
-               echo "*** set/get one initially empty attribute"
-    
-               setfattr -h -n $nsp.name $SCRATCH_MNT/$inode
-               getfattr -m $nsp $SCRATCH_MNT/$inode
-
-               echo "*** overwrite empty, set several new attributes"
-               setfattr -h -n $nsp.name -v 0xbabe $SCRATCH_MNT/$inode
-               setfattr -h -n $nsp.name2 -v 0xdeadbeef $SCRATCH_MNT/$inode
-               setfattr -h -n $nsp.name3 -v 0xdeface $SCRATCH_MNT/$inode
-
-               echo "*** fetch several attribute names and values (hex)"
-               getfattr -m $nsp -e hex $SCRATCH_MNT/$inode
-
-               echo "*** fetch several attribute names and values (base64)"
-               getfattr -m $nsp -e base64 $SCRATCH_MNT/$inode
-               
-               echo "*** shrink value of an existing attribute"
-               setfattr -h -n $nsp.name2 -v 0xdeaf $SCRATCH_MNT/$inode
-               getfattr -m $nsp -e hex $SCRATCH_MNT/$inode
-
-               echo "*** grow value of existing attribute"
-               setfattr -h -n $nsp.name2 -v 0xdecade $SCRATCH_MNT/$inode
-               getfattr -m $nsp -e hex $SCRATCH_MNT/$inode
-               
-               echo "*** set an empty value for second attribute"
-               setfattr -h -n $nsp.name2 $SCRATCH_MNT/$inode
-               getfattr -m $nsp -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 | invalid_attribute_filter
-
-               echo "*** overwrite empty value"
-               setfattr -h -n $nsp.name2 -v 0xcafe $SCRATCH_MNT/$inode
-               getfattr -m $nsp -e hex -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 | invalid_attribute_filter
-
-               echo "*** remove attribute"
-               setfattr -h -x $nsp.name2 $SCRATCH_MNT/$inode
-               getfattr -m $nsp -e hex -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 | invalid_attribute_filter
-
-               echo "*** final list (strings, type=$inode, nsp=$nsp)"
-               getfattr -m '.' -e hex $SCRATCH_MNT/$inode
-       
-       done
-done
-
-
-# 
-# Test the directory descent code
-# 
-echo; echo
-
-_extend_test_bed()
-{
-       echo "*** extend test bed"
-       # must set some descents' attributes to be useful
-       mkdir -p $SCRATCH_MNT/here/up/ascend
-       mkdir -p $SCRATCH_MNT/descend/down/here
-       find $SCRATCH_MNT/descend | xargs setfattr -n user.x -v yz
-       find $SCRATCH_MNT/descend | xargs setfattr -n user.1 -v 23
-       find $SCRATCH_MNT/here | xargs setfattr -n trusted.a -v bc
-       find $SCRATCH_MNT/here | xargs setfattr -n trusted.9 -v 87
-       # whack a symlink in the middle, just to be difficult
-       ln -s $SCRATCH_MNT/here/up $SCRATCH_MNT/descend/and
-       # dump out our new starting point
-       find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch | grep -v "lost+found"
-}
-
-_extend_test_bed
-
-echo
-echo "*** directory descent with us following symlinks"
-getfattr -h -L -R -m '.' -e hex $SCRATCH_MNT | _sort_getfattr_output
-
-echo
-echo "*** directory descent without following symlinks"
-getfattr -h -P -R -m '.' -e hex $SCRATCH_MNT | _sort_getfattr_output
-
-
-# 
-# Test the backup/restore code
-# 
-echo; echo
-
-_backup()
-{
-       # NB: no filtering of scratch here... (need to restore too)
-       $GETFATTR_PROG --absolute-names -dh -R -m '.' $SCRATCH_MNT >$1
-       echo BACKUP $1 >>$seq.full
-       cat $1 >> $seq.full
-       [ ! -s $1 ] && echo "warning: $1 (backup file) is empty"
-}
-
-echo "*** backup everything"
-_backup $tmp.backup1
-
-echo "*** clear out the scratch device"
-rm -fr $SCRATCH_MNT/*
-echo "AFTER REMOVE" >>$seq.full
-getfattr -L -R -m '.' $SCRATCH_MNT >>$seq.full
-
-echo "*** reset test bed with no extended attributes"
-_create_test_bed
-_extend_test_bed
-
-echo "*** restore everything"
-setfattr -h --restore=$tmp.backup1
-_backup $tmp.backup2
-
-echo "AFTER RESTORE" >>$seq.full
-getfattr -L -R -m '.' $SCRATCH_MNT >>$seq.full
-
-echo "*** compare before and after backups"
-diff $tmp.backup1 $tmp.backup2
-if [ $? -ne 0 ]; then
-       echo "urk, failed - creating $seq.backup1 and $seq.backup2"
-       cp $tmp.backup1 $seq.backup1 && cp $tmp.backup2 $seq.backup2
-       status=1
-       exit
-fi
-
-# success, all done
-status=0
-exit
diff --git a/062.out b/062.out
deleted file mode 100644 (file)
index 8cc3c65..0000000
--- a/062.out
+++ /dev/null
@@ -1,654 +0,0 @@
-QA output created by 062
-*** create test bed
-SCRATCH_MNT
-SCRATCH_MNT/dev
-SCRATCH_MNT/dev/b
-SCRATCH_MNT/dev/c
-SCRATCH_MNT/dev/p
-SCRATCH_MNT/dir
-SCRATCH_MNT/lnk
-SCRATCH_MNT/reg
-
-=== TYPE reg; NAMESPACE user
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/reg
-user.name
-
-*** overwrite empty, set several new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT/reg
-user.name=0xbabe
-user.name2=0xdeadbeef
-user.name3=0xdeface
-
-*** fetch several attribute names and values (base64)
-# file: SCRATCH_MNT/reg
-user.name=0sur4=
-user.name2=0s3q2+7w==
-user.name3=0s3vrO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT/reg
-user.name=0xbabe
-user.name2=0xdeaf
-user.name3=0xdeface
-
-*** grow value of existing attribute
-# file: SCRATCH_MNT/reg
-user.name=0xbabe
-user.name2=0xdecade
-user.name3=0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/reg
-user.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/reg
-user.name2=0xcafe
-
-*** remove attribute
-SCRATCH_MNT/reg: user.name2: No such attribute or operation not permitted
-*** final list (strings, type=reg, nsp=user)
-# file: SCRATCH_MNT/reg
-user.name=0xbabe
-user.name3=0xdeface
-
-
-=== TYPE dir; NAMESPACE user
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/dir
-user.name
-
-*** overwrite empty, set several new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT/dir
-user.name=0xbabe
-user.name2=0xdeadbeef
-user.name3=0xdeface
-
-*** fetch several attribute names and values (base64)
-# file: SCRATCH_MNT/dir
-user.name=0sur4=
-user.name2=0s3q2+7w==
-user.name3=0s3vrO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT/dir
-user.name=0xbabe
-user.name2=0xdeaf
-user.name3=0xdeface
-
-*** grow value of existing attribute
-# file: SCRATCH_MNT/dir
-user.name=0xbabe
-user.name2=0xdecade
-user.name3=0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/dir
-user.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/dir
-user.name2=0xcafe
-
-*** remove attribute
-SCRATCH_MNT/dir: user.name2: No such attribute or operation not permitted
-*** final list (strings, type=dir, nsp=user)
-# file: SCRATCH_MNT/dir
-user.name=0xbabe
-user.name3=0xdeface
-
-
-=== TYPE lnk; NAMESPACE user
-
-*** set/get one initially empty attribute
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-*** overwrite empty, set several new attributes
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-*** fetch several attribute names and values (hex)
-*** fetch several attribute names and values (base64)
-*** shrink value of an existing attribute
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-*** grow value of existing attribute
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-*** set an empty value for second attribute
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-SCRATCH_MNT/lnk: user.name2: No such attribute or operation not permitted
-*** overwrite empty value
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-SCRATCH_MNT/lnk: user.name2: No such attribute or operation not permitted
-*** remove attribute
-setfattr: SCRATCH_MNT/lnk: Operation not permitted
-SCRATCH_MNT/lnk: user.name2: No such attribute or operation not permitted
-*** final list (strings, type=lnk, nsp=user)
-
-=== TYPE dev/b; NAMESPACE user
-
-*** set/get one initially empty attribute
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-*** overwrite empty, set several new attributes
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-*** fetch several attribute names and values (hex)
-*** fetch several attribute names and values (base64)
-*** shrink value of an existing attribute
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-*** grow value of existing attribute
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-*** set an empty value for second attribute
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-SCRATCH_MNT/dev/b: user.name2: No such attribute or operation not permitted
-*** overwrite empty value
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-SCRATCH_MNT/dev/b: user.name2: No such attribute or operation not permitted
-*** remove attribute
-setfattr: SCRATCH_MNT/dev/b: Operation not permitted
-SCRATCH_MNT/dev/b: user.name2: No such attribute or operation not permitted
-*** final list (strings, type=dev/b, nsp=user)
-
-=== TYPE dev/c; NAMESPACE user
-
-*** set/get one initially empty attribute
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-*** overwrite empty, set several new attributes
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-*** fetch several attribute names and values (hex)
-*** fetch several attribute names and values (base64)
-*** shrink value of an existing attribute
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-*** grow value of existing attribute
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-*** set an empty value for second attribute
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-SCRATCH_MNT/dev/c: user.name2: No such attribute or operation not permitted
-*** overwrite empty value
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-SCRATCH_MNT/dev/c: user.name2: No such attribute or operation not permitted
-*** remove attribute
-setfattr: SCRATCH_MNT/dev/c: Operation not permitted
-SCRATCH_MNT/dev/c: user.name2: No such attribute or operation not permitted
-*** final list (strings, type=dev/c, nsp=user)
-
-=== TYPE dev/p; NAMESPACE user
-
-*** set/get one initially empty attribute
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-*** overwrite empty, set several new attributes
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-*** fetch several attribute names and values (hex)
-*** fetch several attribute names and values (base64)
-*** shrink value of an existing attribute
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-*** grow value of existing attribute
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-*** set an empty value for second attribute
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-SCRATCH_MNT/dev/p: user.name2: No such attribute or operation not permitted
-*** overwrite empty value
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-SCRATCH_MNT/dev/p: user.name2: No such attribute or operation not permitted
-*** remove attribute
-setfattr: SCRATCH_MNT/dev/p: Operation not permitted
-SCRATCH_MNT/dev/p: user.name2: No such attribute or operation not permitted
-*** final list (strings, type=dev/p, nsp=user)
-
-=== TYPE reg; NAMESPACE trusted
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/reg
-trusted.name
-
-*** overwrite empty, set several new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT/reg
-trusted.name=0xbabe
-trusted.name2=0xdeadbeef
-trusted.name3=0xdeface
-
-*** fetch several attribute names and values (base64)
-# file: SCRATCH_MNT/reg
-trusted.name=0sur4=
-trusted.name2=0s3q2+7w==
-trusted.name3=0s3vrO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT/reg
-trusted.name=0xbabe
-trusted.name2=0xdeaf
-trusted.name3=0xdeface
-
-*** grow value of existing attribute
-# file: SCRATCH_MNT/reg
-trusted.name=0xbabe
-trusted.name2=0xdecade
-trusted.name3=0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/reg
-trusted.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/reg
-trusted.name2=0xcafe
-
-*** remove attribute
-SCRATCH_MNT/reg: trusted.name2: No such attribute or operation not permitted
-*** final list (strings, type=reg, nsp=trusted)
-# file: SCRATCH_MNT/reg
-trusted.name=0xbabe
-trusted.name3=0xdeface
-user.name=0xbabe
-user.name3=0xdeface
-
-
-=== TYPE dir; NAMESPACE trusted
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/dir
-trusted.name
-
-*** overwrite empty, set several new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT/dir
-trusted.name=0xbabe
-trusted.name2=0xdeadbeef
-trusted.name3=0xdeface
-
-*** fetch several attribute names and values (base64)
-# file: SCRATCH_MNT/dir
-trusted.name=0sur4=
-trusted.name2=0s3q2+7w==
-trusted.name3=0s3vrO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT/dir
-trusted.name=0xbabe
-trusted.name2=0xdeaf
-trusted.name3=0xdeface
-
-*** grow value of existing attribute
-# file: SCRATCH_MNT/dir
-trusted.name=0xbabe
-trusted.name2=0xdecade
-trusted.name3=0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/dir
-trusted.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/dir
-trusted.name2=0xcafe
-
-*** remove attribute
-SCRATCH_MNT/dir: trusted.name2: No such attribute or operation not permitted
-*** final list (strings, type=dir, nsp=trusted)
-# file: SCRATCH_MNT/dir
-trusted.name=0xbabe
-trusted.name3=0xdeface
-user.name=0xbabe
-user.name3=0xdeface
-
-
-=== TYPE lnk; NAMESPACE trusted
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/lnk
-trusted.name
-
-*** overwrite empty, set several new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT/lnk
-trusted.name=0xbabe
-trusted.name2=0xdeadbeef
-trusted.name3=0xdeface
-
-*** fetch several attribute names and values (base64)
-# file: SCRATCH_MNT/lnk
-trusted.name=0sur4=
-trusted.name2=0s3q2+7w==
-trusted.name3=0s3vrO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT/lnk
-trusted.name=0xbabe
-trusted.name2=0xdeaf
-trusted.name3=0xdeface
-
-*** grow value of existing attribute
-# file: SCRATCH_MNT/lnk
-trusted.name=0xbabe
-trusted.name2=0xdecade
-trusted.name3=0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/lnk
-trusted.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/lnk
-trusted.name2=0xcafe
-
-*** remove attribute
-SCRATCH_MNT/lnk: trusted.name2: No such attribute or operation not permitted
-*** final list (strings, type=lnk, nsp=trusted)
-# file: SCRATCH_MNT/lnk
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-
-=== TYPE dev/b; NAMESPACE trusted
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/dev/b
-trusted.name
-
-*** overwrite empty, set several new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT/dev/b
-trusted.name=0xbabe
-trusted.name2=0xdeadbeef
-trusted.name3=0xdeface
-
-*** fetch several attribute names and values (base64)
-# file: SCRATCH_MNT/dev/b
-trusted.name=0sur4=
-trusted.name2=0s3q2+7w==
-trusted.name3=0s3vrO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT/dev/b
-trusted.name=0xbabe
-trusted.name2=0xdeaf
-trusted.name3=0xdeface
-
-*** grow value of existing attribute
-# file: SCRATCH_MNT/dev/b
-trusted.name=0xbabe
-trusted.name2=0xdecade
-trusted.name3=0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/dev/b
-trusted.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/dev/b
-trusted.name2=0xcafe
-
-*** remove attribute
-SCRATCH_MNT/dev/b: trusted.name2: No such attribute or operation not permitted
-*** final list (strings, type=dev/b, nsp=trusted)
-# file: SCRATCH_MNT/dev/b
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-
-=== TYPE dev/c; NAMESPACE trusted
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/dev/c
-trusted.name
-
-*** overwrite empty, set several new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT/dev/c
-trusted.name=0xbabe
-trusted.name2=0xdeadbeef
-trusted.name3=0xdeface
-
-*** fetch several attribute names and values (base64)
-# file: SCRATCH_MNT/dev/c
-trusted.name=0sur4=
-trusted.name2=0s3q2+7w==
-trusted.name3=0s3vrO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT/dev/c
-trusted.name=0xbabe
-trusted.name2=0xdeaf
-trusted.name3=0xdeface
-
-*** grow value of existing attribute
-# file: SCRATCH_MNT/dev/c
-trusted.name=0xbabe
-trusted.name2=0xdecade
-trusted.name3=0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/dev/c
-trusted.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/dev/c
-trusted.name2=0xcafe
-
-*** remove attribute
-SCRATCH_MNT/dev/c: trusted.name2: No such attribute or operation not permitted
-*** final list (strings, type=dev/c, nsp=trusted)
-# file: SCRATCH_MNT/dev/c
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-
-=== TYPE dev/p; NAMESPACE trusted
-
-*** set/get one initially empty attribute
-# file: SCRATCH_MNT/dev/p
-trusted.name
-
-*** overwrite empty, set several new attributes
-*** fetch several attribute names and values (hex)
-# file: SCRATCH_MNT/dev/p
-trusted.name=0xbabe
-trusted.name2=0xdeadbeef
-trusted.name3=0xdeface
-
-*** fetch several attribute names and values (base64)
-# file: SCRATCH_MNT/dev/p
-trusted.name=0sur4=
-trusted.name2=0s3q2+7w==
-trusted.name3=0s3vrO
-
-*** shrink value of an existing attribute
-# file: SCRATCH_MNT/dev/p
-trusted.name=0xbabe
-trusted.name2=0xdeaf
-trusted.name3=0xdeface
-
-*** grow value of existing attribute
-# file: SCRATCH_MNT/dev/p
-trusted.name=0xbabe
-trusted.name2=0xdecade
-trusted.name3=0xdeface
-
-*** set an empty value for second attribute
-# file: SCRATCH_MNT/dev/p
-trusted.name2
-
-*** overwrite empty value
-# file: SCRATCH_MNT/dev/p
-trusted.name2=0xcafe
-
-*** remove attribute
-SCRATCH_MNT/dev/p: trusted.name2: No such attribute or operation not permitted
-*** final list (strings, type=dev/p, nsp=trusted)
-# file: SCRATCH_MNT/dev/p
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-
-
-*** extend test bed
-SCRATCH_MNT
-SCRATCH_MNT/descend
-SCRATCH_MNT/descend/and
-SCRATCH_MNT/descend/down
-SCRATCH_MNT/descend/down/here
-SCRATCH_MNT/dev
-SCRATCH_MNT/dev/b
-SCRATCH_MNT/dev/c
-SCRATCH_MNT/dev/p
-SCRATCH_MNT/dir
-SCRATCH_MNT/here
-SCRATCH_MNT/here/up
-SCRATCH_MNT/here/up/ascend
-SCRATCH_MNT/lnk
-SCRATCH_MNT/reg
-
-*** directory descent with us following symlinks
-# file: SCRATCH_MNT/descend
-user.1=0x3233
-user.x=0x797a
-
-# file: SCRATCH_MNT/descend/and/ascend
-trusted.9=0x3837
-trusted.a=0x6263
-
-# file: SCRATCH_MNT/descend/down
-user.1=0x3233
-user.x=0x797a
-
-# file: SCRATCH_MNT/descend/down/here
-user.1=0x3233
-user.x=0x797a
-
-# file: SCRATCH_MNT/dev/b
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-# file: SCRATCH_MNT/dev/c
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-# file: SCRATCH_MNT/dev/p
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-# file: SCRATCH_MNT/dir
-trusted.name=0xbabe
-trusted.name3=0xdeface
-user.name=0xbabe
-user.name3=0xdeface
-
-# file: SCRATCH_MNT/here
-trusted.9=0x3837
-trusted.a=0x6263
-
-# file: SCRATCH_MNT/here/up
-trusted.9=0x3837
-trusted.a=0x6263
-
-# file: SCRATCH_MNT/here/up/ascend
-trusted.9=0x3837
-trusted.a=0x6263
-
-# file: SCRATCH_MNT/lnk
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-# file: SCRATCH_MNT/reg
-trusted.name=0xbabe
-trusted.name3=0xdeface
-user.name=0xbabe
-user.name3=0xdeface
-
-
-*** directory descent without following symlinks
-# file: SCRATCH_MNT/descend
-user.1=0x3233
-user.x=0x797a
-
-# file: SCRATCH_MNT/descend/down
-user.1=0x3233
-user.x=0x797a
-
-# file: SCRATCH_MNT/descend/down/here
-user.1=0x3233
-user.x=0x797a
-
-# file: SCRATCH_MNT/dev/b
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-# file: SCRATCH_MNT/dev/c
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-# file: SCRATCH_MNT/dev/p
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-# file: SCRATCH_MNT/dir
-trusted.name=0xbabe
-trusted.name3=0xdeface
-user.name=0xbabe
-user.name3=0xdeface
-
-# file: SCRATCH_MNT/here
-trusted.9=0x3837
-trusted.a=0x6263
-
-# file: SCRATCH_MNT/here/up
-trusted.9=0x3837
-trusted.a=0x6263
-
-# file: SCRATCH_MNT/here/up/ascend
-trusted.9=0x3837
-trusted.a=0x6263
-
-# file: SCRATCH_MNT/lnk
-trusted.name=0xbabe
-trusted.name3=0xdeface
-
-# file: SCRATCH_MNT/reg
-trusted.name=0xbabe
-trusted.name3=0xdeface
-user.name=0xbabe
-user.name3=0xdeface
-
-
-
-*** backup everything
-*** clear out the scratch device
-*** reset test bed with no extended attributes
-*** create test bed
-SCRATCH_MNT
-SCRATCH_MNT/dev
-SCRATCH_MNT/dev/b
-SCRATCH_MNT/dev/c
-SCRATCH_MNT/dev/p
-SCRATCH_MNT/dir
-SCRATCH_MNT/lnk
-SCRATCH_MNT/reg
-*** extend test bed
-SCRATCH_MNT
-SCRATCH_MNT/descend
-SCRATCH_MNT/descend/and
-SCRATCH_MNT/descend/down
-SCRATCH_MNT/descend/down/here
-SCRATCH_MNT/dev
-SCRATCH_MNT/dev/b
-SCRATCH_MNT/dev/c
-SCRATCH_MNT/dev/p
-SCRATCH_MNT/dir
-SCRATCH_MNT/here
-SCRATCH_MNT/here/up
-SCRATCH_MNT/here/up/ascend
-SCRATCH_MNT/lnk
-SCRATCH_MNT/reg
-*** restore everything
-*** compare before and after backups
-
-*** unmount
diff --git a/068 b/068
deleted file mode 100755 (executable)
index 4f10a54..0000000
--- a/068
+++ /dev/null
@@ -1,137 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 068
-#
-# Test case to reproduce xfs_freeze hang under filsystem load.
-# The fail case for this test is a hang on an xfs_freeze.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2005 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-
-ITERATIONS=10
-
-_cleanup()
-{
-    cd /
-    _cleanup_testdir
-
-    trap 0 1 2 3 15
-    exit $status
-}
-
-trap "_cleanup" 0 1 2 3 15
-
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux IRIX
-
-_require_scratch
-_require_freeze
-
-echo "*** init FS"
-
-rm -f $seq.full
-umount $SCRATCH_DEV >/dev/null 2>&1
-echo "*** MKFS ***"                         >>$seq.full
-echo ""                                     >>$seq.full
-_scratch_mkfs                               >>$seq.full 2>&1 \
-    || _fail "mkfs failed"
-_scratch_mount                              >>$seq.full 2>&1 \
-    || _fail "mount failed"
-
-touch $tmp.running
-
-
-# start fsstress loop in a background block
-{
-    STRESS_DIR="$SCRATCH_MNT/fsstress_test_dir"
-    mkdir "$STRESS_DIR"
-
-    procs=2
-    nops=200
-    while [ -f "$tmp.running" ]
-      do
-      # We do both read & write IO - not only is this more realistic,
-      # but it also potentially tests atime updates
-      FSSTRESS_ARGS=`_scale_fsstress_args -d $STRESS_DIR -p $procs -n $nops $FSSTRESS_AVOID`
-      $FSSTRESS_PROG $FSSTRESS_ARGS > /dev/null 2>&1
-    done
-
-    rm -r $STRESS_DIR/*
-    rmdir $STRESS_DIR
-} &
-
-# start fstest -m loop in a background block; this gets us mmap coverage
-{
-    FSTEST_DIR="$SCRATCH_MNT/fstest_test_dir"
-    mkdir "$FSTEST_DIR"
-
-    procs=2
-    while [ -f "$tmp.running" ]
-      do
-      src/fstest -m -p $FSTEST_DIR  -n $procs -f 4 > /dev/null 2>&1
-    done
-
-    rm -rf $FSTEST_DIR/*
-    rmdir $FSTEST_DIR
-} &
-
-i=0
-let ITERATIONS=$ITERATIONS-1
-
-echo | tee -a $seq.full
-while [ $i -le $ITERATIONS ]
-do
-        echo "*** iteration: $i" | tee -a $seq.full
-       echo "*** freezing \$SCRATCH_MNT" | tee -a $seq.full
-       xfs_freeze -f "$SCRATCH_MNT" | tee -a $seq.full
-       [ $? != 0 ] && echo xfs_freeze -f "$SCRATCH_MNT" failed | \
-           tee -a $seq.full
-       sleep 2
-
-       echo "*** thawing  \$SCRATCH_MNT" | tee -a $seq.full
-       xfs_freeze -u "$SCRATCH_MNT" | tee -a $seq.full
-       [ $? != 0 ] && echo xfs_freeze -u "$SCRATCH_MNT" failed | \
-           tee -a $seq.full
-       sleep 2
-
-       echo  | tee -a $seq.full
-       let i=$i+1
-done
-
-# stop fsstress iterations
-rm $tmp.running
-
-# wait for fsstresses to finish
-wait
-
-_check_scratch_fs
-
-exit 1
diff --git a/068.out b/068.out
deleted file mode 100644 (file)
index 363d0e9..0000000
--- a/068.out
+++ /dev/null
@@ -1,43 +0,0 @@
-QA output created by 068
-*** init FS
-
-*** iteration: 0
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
-*** iteration: 1
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
-*** iteration: 2
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
-*** iteration: 3
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
-*** iteration: 4
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
-*** iteration: 5
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
-*** iteration: 6
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
-*** iteration: 7
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
-*** iteration: 8
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
-*** iteration: 9
-*** freezing $SCRATCH_MNT
-*** thawing  $SCRATCH_MNT
-
diff --git a/069 b/069
deleted file mode 100755 (executable)
index 3451715..0000000
--- a/069
+++ /dev/null
@@ -1,79 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 069
-#
-# Test out writes with O_APPEND flag sets.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2002 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_require_scratch
-rm -f $seq.full
-
-umount $SCRATCH_DEV >/dev/null 2>&1
-
-echo "*** mkfs"
-_scratch_mkfs >/dev/null 2>&1 || _fail "mkfs failed"
-
-echo "*** mount FS"
-_scratch_mount >/dev/null || _fail "mount failed"
-
-cd $SCRATCH_MNT
-
-sizes="1 20 300 40000 3000000 12345"
-for size in $sizes ; do
-       $here/src/append_writer $size &
-       echo $! $size >> pids
-done
-
-cd $here
-
-wait
-ls -lh $SCRATCH_MNT >> $seq.full
-echo "*** PIDs file" >> $seq.full
-cat $SCRATCH_MNT/pids >> $seq.full
-
-cat $SCRATCH_MNT/pids | while read pid size
-do
-       echo "*** checking file with $size integers"
-       echo checking pid=$pid size=$size >> $seq.full
-       $here/src/append_reader $SCRATCH_MNT/testfile.$pid
-       status=$?
-       [ $status -ne 0 ] && \
-               echo "maybe corrupt O_APPEND to $SCRATCH_MOUNT/testfile.$pid!"
-       echo status: $status >> $seq.full
-done
-
-# success, all done
-exit
diff --git a/069.out b/069.out
deleted file mode 100644 (file)
index 0d7b23c..0000000
--- a/069.out
+++ /dev/null
@@ -1,9 +0,0 @@
-QA output created by 069
-*** mkfs
-*** mount FS
-*** checking file with 1 integers
-*** checking file with 20 integers
-*** checking file with 300 integers
-*** checking file with 40000 integers
-*** checking file with 3000000 integers
-*** checking file with 12345 integers
diff --git a/070 b/070
deleted file mode 100755 (executable)
index 02fe142..0000000
--- a/070
+++ /dev/null
@@ -1,67 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 070
-#
-# fsstress incarnation testing extended attributes writes
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2001 Silicon Graphics, 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`
-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.*
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_require_attrs
-
-_setup_testdir
-
-FSSTRESS_ARGS=`_scale_fsstress_args \
-       -d $testdir/fsstress \
-       -f allocsp=0 \
-       -f freesp=0 \
-       -f bulkstat=0 \
-       -f bulkstat1=0 \
-       -f resvsp=0 \
-       -f unresvsp=0 \
-       -f attr_set=100 \
-       -f attr_remove=100 \
-        -p 1 -n 10000 -S c`
-$FSSTRESS_PROG $FSSTRESS_ARGS >$seq.full 2>&1
-
-status=$?
-exit
diff --git a/070.out b/070.out
deleted file mode 100644 (file)
index 4875ffb..0000000
--- a/070.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 070
diff --git a/074 b/074
deleted file mode 100755 (executable)
index 0e5e820..0000000
--- a/074
+++ /dev/null
@@ -1,185 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 074
-#
-# fstest
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2003 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -rf $testdir/fstest.$$.* $tmp.*
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_do_test()
-{
-    _n="$1"
-    _param="$2"
-
-    out=$testdir/fstest.$$.$_n
-    rm -rf $out
-    if ! mkdir $out
-    then
-        echo "    failed to mkdir $out"
-        status=1
-        exit
-    fi
-
-    _filter_param=`echo "$_param" | sed\
-       -e 's/-n [0-9][0-9]*/-n children/' \
-       -e 's/-l [0-9][0-9]*/-l loops/' \
-       -e 's/-f [0-9][0-9]*/-f files/'`
-    
-    echo ""
-    echo "-----------------------------------------------"
-    echo "fstest.$_n : $_filter_param"
-    echo "-----------------------------------------------"
-    if ! $here/src/fstest $_param -p $out >>$seq.full
-    then
-        echo "    fstest ($_param) returned $? - see $seq.full"
-        status=1
-       exit
-    fi
-
-    _check_test_fs
-}
-
-_usage()
-{
-    echo "$0: [-f files] [-l loops] [-n children]"
-}
-
-_process_args()
-{
-    while getopts "f:l:n:?" c $@
-    do
-        case $c
-        in
-            f)
-                numfiles=$OPTARG
-               param_type="$param_type, overidde -f"
-                ;;
-            l)
-                numloops=$OPTARG
-               param_type="$param_type, overidde -l"
-                ;;
-            n)
-                numchildren=$OPTARG
-               param_type="$param_type, overidde -n"
-                ;;
-           ?)
-               _usage
-               exit    
-               ;;
-       esac
-    done
-}
-
-
-# real QA test starts here
-rm -f $here/$seq.full
-
-_supported_fs generic
-_supported_os IRIX Linux
-
-#
-# set params
-# These params can take a while on different CPUs/OSs
-# so we set them differently for different machines
-#
-if [ $HOSTOS == "IRIX" ]; then 
-    if uname -R | grep -iq debug; then 
-        # e.g. getting around 37secs for 1,1,1 on IP30 debug
-       numchildren=2
-       numloops=1
-       numfiles=2
-        param_type="IRIX debug"
-    else
-        # getting around 1 sec 1,1,1 - 10secs 1,10,1 on IP30 nondebug
-       numloops=2
-       numfiles=3
-       numchildren=3
-        param_type="IRIX nondebug"
-    fi
-elif [ $HOSTOS == "Linux" ]; then
-    if uname -a | grep -q SMP; then
-        numloops=10
-        numfiles=5
-        numchildren=3
-        param_type="Linux SMP"
-    else
-        numloops=2
-        numfiles=3
-        numchildren=3
-        param_type="Linux UP"
-    fi
-else
-    numloops=1
-    numfiles=1
-    numchildren=1
-    param_type="Default"
-fi
-
-# can override the params here
-_process_args "$@"
-
-echo "Params are for $param_type" >>$seq.full
-echo "Params: n = $numchildren l = $numloops f = $numfiles" >>$seq.full
-
-_setup_testdir
-
-_check_test_fs
-
-# Options:
-# -F                    generate files with holes  (default=no)
-# -n num_children       set number of child processes (default=1)
-# -f num_files          set number of files (default=1)
-# -s file_size          set file sizes (default=1MiB)
-# -b block_size         set block (IO) size (default=1024)
-# -l loops              set loop count (default=100)
-# -m                    use mmap (default=no)
-# -S                    use synchronous IO (default=no)
-# -P                    preallocate space (default=no)
-
-size10=`expr 10 \* 1024 \* 1024`       # 10 megabytes
-size30=`expr 30 \* 1024 \* 1024`       # 30 megabytes
-
-_do_test 0 "-l $numloops"
-
-_do_test 1 "-l $numloops -s $size10 -b 8192 -m"
-
-_do_test 2 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512"
-
-_do_test 3 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512 -m"
-
-_do_test 4 "-n $numchildren -F -l $numloops -f $numfiles -s $size10 -b 512 -mS"
diff --git a/074.out b/074.out
deleted file mode 100644 (file)
index 1d67810..0000000
--- a/074.out
+++ /dev/null
@@ -1,21 +0,0 @@
-QA output created by 074
-
------------------------------------------------
-fstest.0 : -l loops
------------------------------------------------
-
------------------------------------------------
-fstest.1 : -l loops -s 10485760 -b 8192 -m
------------------------------------------------
-
------------------------------------------------
-fstest.2 : -n children -F -l loops -f files -s 31457280 -b 512
------------------------------------------------
-
------------------------------------------------
-fstest.3 : -n children -F -l loops -f files -s 31457280 -b 512 -m
------------------------------------------------
-
------------------------------------------------
-fstest.4 : -n children -F -l loops -f files -s 10485760 -b 512 -mS
------------------------------------------------
diff --git a/075 b/075
deleted file mode 100755 (executable)
index de581b6..0000000
--- a/075
+++ /dev/null
@@ -1,161 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 075
-#
-# fsx (non-AIO variant)
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2003 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -rf $testdir/fsx.* $tmp.*
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_do_test()
-{
-    _n="$1"
-    _param="$2"
-
-    out=$testdir/fsx
-    rm -rf $out
-    if ! mkdir $out
-    then
-       echo "    failed to mkdir $out"
-       status=1
-       exit
-    fi
-
-    _filter_param=`echo "$_param" | sed\
-       -e 's/-N [0-9][0-9]*/-N numops/' \
-       -e 's/-l [0-9][0-9]*/-l filelen/'`
-
-    echo ""
-    echo "-----------------------------------------------"
-    echo "fsx.$_n : $_filter_param"
-    echo "-----------------------------------------------"
-
-    if [ "$FSTYP" != "xfs" ]
-    then
-       if [ "$_n" = "1" -o "$_n" = "3" ]
-       then
-           # HACK: only xfs handles preallocation (-x) so just skip this test
-           return
-       fi
-    fi
-
-    # This cd and use of -P gets full debug on $here (not TEST_DEV)
-    cd $out
-    if ! $here/ltp/fsx $_param -P $here $seq.$_n &>/dev/null
-    then
-       echo "    fsx ($_param) failed, $? - compare $seq.$_n.{good,bad,fsxlog}"
-       mv $out/$seq.$_n $here/$seq.$_n.full
-       od -xAx $here/$seq.$_n.full > $here/$seq.$_n.bad
-       od -xAx $here/$seq.$_n.fsxgood > $here/$seq.$_n.good
-       status=1
-       exit
-    fi
-
-    cd $here
-    _check_test_fs
-}
-
-_usage()
-{
-    echo "$0: [-l filelen] [-n numops1] [-N numops2]"
-}
-
-_process_args()
-{
-    while getopts "l:n:N:?" c $@
-    do
-        case $c
-        in
-            l)
-                filelen=$OPTARG
-               param_type="$param_type, overidde -l"
-                ;;
-            N)
-                numops2=$OPTARG
-               param_type="$param_type, overidde -N"
-                ;;
-            n)
-                numops1=$OPTARG
-               param_type="$param_type, overidde -n"
-                ;;
-           ?)
-               _usage
-               exit    
-               ;;
-       esac
-    done
-}
-
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-size10=`expr 10 \* 1024 \* 1024`       # 10 megabytes
-filelen=$size10
-numops1=1000
-numops2=10000
-
-# can override the params here
-_process_args "$@"
-
-echo "Params are for $param_type" >>$seq.full
-echo "Params: n = $numops1 N = $numops2 l = $filelen" >>$seq.full
-
-_setup_testdir
-
-rm -f $here/$seq.full
-echo "brevity is wit..."
-
-_check_test_fs
-
-# Options:
-# -d: debug output for all operations
-# -l flen: the upper bound on file size (default 262144)
-# -o oplen: the upper bound on operation size
-# -N numops: total # operations to do (default infinity)
-# -P: save .fsxlog and .fsxgood files in dirpath (default ./)
-# -S seed: for random # generator (default 1) 0 gets timestamp
-# -x: pre-allocate file space, exercising unwritten extents
-
-_do_test 0 "-d -N $numops1 -S 0"
-_do_test 1 "-d -N $numops1 -S 0 -x"
-_do_test 2 "-d -N $numops2 -l $filelen -S 0"
-_do_test 3 "-d -N $numops2 -l $filelen -S 0 -x"
-
-rm -f $seq.*.fsx{good,log}
-exit 0
diff --git a/075.out b/075.out
deleted file mode 100644 (file)
index 1f81cdf..0000000
--- a/075.out
+++ /dev/null
@@ -1,18 +0,0 @@
-QA output created by 075
-brevity is wit...
-
------------------------------------------------
-fsx.0 : -d -N numops -S 0
------------------------------------------------
-
------------------------------------------------
-fsx.1 : -d -N numops -S 0 -x
------------------------------------------------
-
------------------------------------------------
-fsx.2 : -d -N numops -l filelen -S 0
------------------------------------------------
-
------------------------------------------------
-fsx.3 : -d -N numops -l filelen -S 0 -x
------------------------------------------------
diff --git a/076 b/076
deleted file mode 100755 (executable)
index 11a0792..0000000
--- a/076
+++ /dev/null
@@ -1,83 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 076
-#
-# Test blockdev reads in parallel with filesystem reads/writes
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1
-
-_lets_get_pidst()
-{
-       if [ -n "$pid" ]; then
-               kill -TERM $pid 2>/dev/null
-               pid=""
-               wait 2>/dev/null
-       fi
-}
-
-_cleanup()
-{
-       echo "*** unmount"
-       umount $SCRATCH_MNT 2>/dev/null
-       _lets_get_pidst
-}
-trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_require_scratch
-
-echo "*** init fs"
-
-rm -f $seq.full
-umount $SCRATCH_DEV >/dev/null 2>&1
-echo "*** MKFS ***"                         >>$seq.full
-echo ""                                     >>$seq.full
-_scratch_mkfs                               >>$seq.full 2>&1 \
-       || _fail "mkfs failed"
-_scratch_mount                              >>$seq.full 2>&1 \
-       || _fail "mount failed"
-
-echo "*** test concurrent block/fs access"
-
-cat $SCRATCH_DEV >/dev/null &
-pid=$!
-
-FSSTRESS_ARGS=`_scale_fsstress_args -p 2 -n 2000 $FSSTRESS_AVOID`
-echo "run fsstress with args: $FSSTRESS_ARGS" >>$seq.full
-$FSSTRESS_PROG $FSSTRESS_ARGS >>$seq.full
-_lets_get_pidst
-_check_scratch_fs
-
-echo "*** done"
-status=0
-exit
diff --git a/076.out b/076.out
deleted file mode 100644 (file)
index 54a8f70..0000000
--- a/076.out
+++ /dev/null
@@ -1,5 +0,0 @@
-QA output created by 076
-*** init fs
-*** test concurrent block/fs access
-*** done
-*** unmount
diff --git a/077 b/077
deleted file mode 100755 (executable)
index 2b86a37..0000000
--- a/077
+++ /dev/null
@@ -1,84 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 077
-#
-# Check use of ACLs (extended attributes) on a full filesystem
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2003 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1
-# Something w/ enough data to fill 50M of fs...
-filler=/lib/modules/
-
-_cleanup()
-{
-       cd /
-       echo "*** unmount"
-       umount $SCRATCH_MNT 2>/dev/null
-}
-trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-[ ! -d $filler ] && _notrun "No directory to source files from"
-
-_require_attrs
-_require_acls
-_require_user
-
-echo "*** create filesystem"
-
-rm -f $seq.full
-umount $SCRATCH_DEV >/dev/null 2>&1
-echo "*** MKFS ***"                         >>$seq.full
-echo ""                                     >>$seq.full
-SIZE=`expr 50 \* 1024 \* 1024`
-_scratch_mkfs_sized $SIZE                   >>$seq.full 2>&1 \
-       || _fail "mkfs failed"
-_scratch_mount                              >>$seq.full 2>&1 \
-       || _fail "mount failed"
-mkdir $SCRATCH_MNT/subdir
-
-echo "*** set default ACL"
-setfacl -R -dm u:fsgqa:rwx,g::rwx,o::r-x,m::rwx $SCRATCH_MNT/subdir
-
-echo "*** populate filesystem, pass #1" | tee -a $seq.full
-cp -rf $filler $SCRATCH_MNT/subdir >$seq.full 2>&1
-
-echo "*** populate filesystem, pass #2" | tee -a $seq.full
-cp -rf $filler $SCRATCH_MNT/subdir >$seq.full 2>&1
-
-_check_scratch_fs
-
-echo "*** all done"
-rm -f $seq.full
-status=0
-exit
diff --git a/077.out b/077.out
deleted file mode 100644 (file)
index eae7226..0000000
--- a/077.out
+++ /dev/null
@@ -1,7 +0,0 @@
-QA output created by 077
-*** create filesystem
-*** set default ACL
-*** populate filesystem, pass #1
-*** populate filesystem, pass #2
-*** all done
-*** unmount
diff --git a/079 b/079
deleted file mode 100755 (executable)
index 048b220..0000000
--- a/079
+++ /dev/null
@@ -1,68 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 079
-#
-# Run the t_immutable test program for immutable/append-only files.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2003 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-timmutable=$here/src/t_immutable
-tmp=/tmp/$$
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    echo "*** cleaning up"
-    $timmutable -r $SCRATCH_MNT/$seq
-    umount $SCRATCH_MNT
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-_supported_fs generic
-_supported_os Linux
-
-_require_attrs
-_require_scratch
-
-[ -x $timmutable ] || _notrun "t_immutable was not built for this platform"
-
-# real QA test starts here
-_scratch_mkfs >/dev/null 2>&1 || _fail "mkfs failed"
-_scratch_mount || _fail "mount failed"
-
-echo "*** starting up"
-$timmutable -c $SCRATCH_MNT/$seq >$tmp.out 2>&1
-if grep -q 'Operation not supported' $tmp.out; then
-    rm -f $tmp.out
-    _notrun "Setting immutable/append flag not supported"
-fi
-cat $tmp.out
-rm -f $tmp.out
-status=$?
-exit
diff --git a/079.out b/079.out
deleted file mode 100644 (file)
index b3daaa6..0000000
--- a/079.out
+++ /dev/null
@@ -1,7 +0,0 @@
-QA output created by 079
-*** starting up
-testing immutable...PASS.
-testing append-only...PASS.
-testing immutable as non-root...PASS.
-testing append-only as non-root...PASS.
-*** cleaning up
diff --git a/083 b/083
deleted file mode 100755 (executable)
index 1a5913a..0000000
--- a/083
+++ /dev/null
@@ -1,101 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 083
-#
-# Exercise filesystem full behaviour - run numerous fsstress
-# processes in write mode on a small filesystem.  NB: delayed
-# allocate flushing is quite deadlock prone at the filesystem
-# full boundary due to the fact that we will retry allocation
-# several times after flushing, before giving back ENOSPC.
-#
-# Note that this test will intentionally cause console msgs of form:
-#     dksc0d1s4: Process [fsstress] ran out of disk space
-#     dksc0d1s4: Process [fsstress] ran out of disk space
-#     dksc0d1s4: Process [fsstress] ran out of disk space
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2003 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1
-
-_cleanup()
-{
-       echo "*** unmount"
-       umount $SCRATCH_MNT 2>/dev/null
-       rm -f $tmp.*
-}
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_require_scratch
-_require_no_large_scratch_dev
-
-rm -f $seq.full
-
-workout()
-{
-       fsz=$1
-       ags=$2
-       procs=$3
-       nops=$4
-
-       umount $SCRATCH_DEV >/dev/null 2>&1
-       echo "*** mkfs -dsize=$fsz,agcount=$ags"    >>$seq.full
-       echo ""                                     >>$seq.full
-       if [ $FSTYP = xfs ]
-       then
-               _scratch_mkfs_xfs -dsize=$fsz,agcount=$ags  >>$seq.full 2>&1 \
-                       || _fail "size=$fsz,agcount=$ags mkfs failed"
-       else
-               _scratch_mkfs_sized $fsz >>$seq.full 2>&1 \
-                       || _fail "size=$fsz mkfs failed"
-       fi
-       _scratch_mount                              >>$seq.full 2>&1 \
-               || _fail "mount failed"
-
-       # -w ensures that the only ops are ones which cause write I/O
-       FSSTRESS_ARGS=`_scale_fsstress_args -d $SCRATCH_MNT -w -p $procs -n $nops $FSSTRESS_AVOID`
-       $FSSTRESS_PROG $FSSTRESS_ARGS >>$seq.full
-       _check_scratch_fs
-}
-
-echo "*** test out-of-space handling for random write operations"
-
-filesize=`expr 100 \* 1024 \* 1024`
-agcount=6
-numprocs=15
-numops=1500
-
-workout $filesize $agcount $numprocs $numops
-
-echo "*** done"
-status=0
-exit
diff --git a/083.out b/083.out
deleted file mode 100644 (file)
index 025afe3..0000000
--- a/083.out
+++ /dev/null
@@ -1,4 +0,0 @@
-QA output created by 083
-*** test out-of-space handling for random write operations
-*** done
-*** unmount
diff --git a/088 b/088
deleted file mode 100755 (executable)
index b6266ef..0000000
--- a/088
+++ /dev/null
@@ -1,55 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 088
-#
-# test out CAP_DAC_OVERRIDE and CAP_DAC_SEARCH code in 
-# xfs_iaccess(ip,mode,cr)
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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`
-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
-
-_filter()
-{
-    _filter_test_dir | sed -e '/----------/d'
-}
-
-# link correct .out file
-_link_out_file $seq.out
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-path=$TEST_DIR/t_access
-src/t_access_root $path | tee $seq.full | _filter
-
-# success, all done
-status=0
-exit
diff --git a/088.out.irix b/088.out.irix
deleted file mode 100644 (file)
index f31ecf9..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-QA output created by 088
-access(TEST_DIR/t_access, 0) returns 0
-access(TEST_DIR/t_access, R_OK) returns 0
-access(TEST_DIR/t_access, W_OK) returns 0
-access(TEST_DIR/t_access, X_OK) returns 0
-access(TEST_DIR/t_access, R_OK | W_OK) returns 0
-access(TEST_DIR/t_access, R_OK | X_OK) returns 0
-access(TEST_DIR/t_access, W_OK | X_OK) returns 0
-access(TEST_DIR/t_access, R_OK | W_OK | X_OK) returns 0
diff --git a/088.out.linux b/088.out.linux
deleted file mode 100644 (file)
index 317c13f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-QA output created by 088
-access(TEST_DIR/t_access, 0) returns 0
-access(TEST_DIR/t_access, R_OK) returns 0
-access(TEST_DIR/t_access, W_OK) returns 0
-access(TEST_DIR/t_access, X_OK) returns -1
-access(TEST_DIR/t_access, R_OK | W_OK) returns 0
-access(TEST_DIR/t_access, R_OK | X_OK) returns -1
-access(TEST_DIR/t_access, W_OK | X_OK) returns -1
-access(TEST_DIR/t_access, R_OK | W_OK | X_OK) returns -1
diff --git a/089 b/089
deleted file mode 100755 (executable)
index 2653183..0000000
--- a/089
+++ /dev/null
@@ -1,91 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 089
-#
-# Emulate the way Linux mount manipulates /etc/mtab to attempt to
-# reproduce a possible bug in rename (see src/t_mtab.c).
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-mtab_output=$TEST_DIR/mtab_output
-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
-
-addentries()
-{
-       count=$1
-       pattern="%0$2d"
-
-       while [ $count -gt 0 ]; do
-               touch `printf $pattern $count`
-               let count=$count-1
-       done
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-rm -f $seq.full
-[ "X$TEST_DIR" = "X" ] && exit 1
-cd $TEST_DIR
-rm -fr test
-mkdir test || exit 1
-cd $TEST_DIR/test
-mount > t_mtab
-
-mtab()
-{
-       rm -f $mtab_output
-       $here/src/t_mtab 50 $mtab_output &
-       $here/src/t_mtab 50 $mtab_output &
-       $here/src/t_mtab 50 $mtab_output &
-       wait
-       cat $mtab_output
-
-       $here/src/t_mtab 10000
-
-       echo directory entries:
-       ls | grep mtab
-       echo directory entries >> $here/$seq.full
-       ls -li >> $here/$seq.full
-}
-
-# directory with only a few entries
-mtab
-
-# directory with a hundred more entries, each 4chars wide
-addentries 100 4
-mtab
-
-# directory with a thousand more entries, each 8chars wide
-addentries 1000 8
-mtab
-
-status=0
-exit
diff --git a/089.out b/089.out
deleted file mode 100644 (file)
index b61a70b..0000000
--- a/089.out
+++ /dev/null
@@ -1,19 +0,0 @@
-QA output created by 089
-completed 50 iterations
-completed 50 iterations
-completed 50 iterations
-completed 10000 iterations
-directory entries:
-t_mtab
-completed 50 iterations
-completed 50 iterations
-completed 50 iterations
-completed 10000 iterations
-directory entries:
-t_mtab
-completed 50 iterations
-completed 50 iterations
-completed 50 iterations
-completed 10000 iterations
-directory entries:
-t_mtab
diff --git a/091 b/091
deleted file mode 100755 (executable)
index ad82b8e..0000000
--- a/091
+++ /dev/null
@@ -1,88 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 091
-#
-# fsx exercising direct IO -- sub-block sizes and concurrent buffered IO
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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`
-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
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-rm -f $seq.full
-
-run_fsx()
-{
-       echo fsx $@ | tee -a $seq.full
-       args=`echo $@ | sed -e "s/ BSIZE / $bsize /g" -e "s/ PSIZE / $psize /g"`
-       rm -f $TEST_DIR/junk
-       $here/ltp/fsx $args $TEST_DIR/junk >>$seq.full 2>&1
-       if [ $? -ne 0 ]; then
-               cat $seq.full
-               exit 1
-       fi
-}
-
-psize=`$here/src/feature -s`
-bsize=`blockdev --getss $TEST_DEV`
-kernel=`uname -r  | sed -e 's/\(2\..\).*/\1/'`
-
-# 2.4 Linux kernels support bsize aligned direct I/O only
-[ "$HOSTOS" = "Linux" -a "$kernel" = "2.4" ] && bsize=$psize
-
-# fsx usage:
-# 
-# -N numops: total # operations to do 
-# -l flen: the upper bound on file size 
-# -o oplen: the upper bound on operation size (64k default)
-# -r readbdy: $psize would make reads page aligned (on i386)
-# -t truncbdy: $psize would make truncates page aligned (on i386)
-# -w writebdy: $psize would make writes page aligned (on i386)
-# 
-# -Z: O_DIRECT (use -R, -W, -r and -w too)
-# -R: mapped read operations DISabled
-# -W: mapped write operations DISabled
-
-#run_fsx -N 10000            -l 500000 -r $psize -t $psize -w $psize -Z -R -W
- run_fsx -N 10000            -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
- run_fsx -N 10000  -o 8192   -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
-#run_fsx -N 10000  -o 16384  -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -R -W
- run_fsx -N 10000  -o 32768  -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
-#run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -R -W
- run_fsx -N 10000  -o 8192   -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
-#run_fsx -N 10000  -o 16384  -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -R -W
- run_fsx -N 10000  -o 32768  -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
-#run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -W
- run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W
-
-status=0
-exit
diff --git a/091.out b/091.out
deleted file mode 100644 (file)
index 31bd25d..0000000
--- a/091.out
+++ /dev/null
@@ -1,7 +0,0 @@
-QA output created by 091
-fsx -N 10000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
-fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
-fsx -N 10000 -o 32768 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
-fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
-fsx -N 10000 -o 32768 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
-fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W
diff --git a/093 b/093
deleted file mode 100755 (executable)
index 881a833..0000000
--- a/093
+++ /dev/null
@@ -1,162 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 093
-#
-# Test out for IRIX the removal of file capabilities when
-# writing to the file (when it doesn't have CAP_FSETID & CAP_SETFCAP)
-# i.e. not root.
-# Test out fix for pv#901019
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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`
-
-here=`pwd`
-tmp=/tmp/$$
-runas=$here/src/runas
-status=1       # FAILure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-_cleanup()
-{
-    [ -n "$testdir" ] && rm -f $file
-    _cleanup_testdir
-}
-
-_testfilter()
-{
-    sed -e "s#$testdir#TESTDIR#g"
-}
-
-_filefilter()
-{
-    sed -e "s#$tmp##" -e "s#$file#file#"
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX
-
-_require_attrs
-
-[ -x $runas ] || _notrun "$runas executable not found"
-
-rm -f $seq.full
-
-_setup_testdir
-_need_to_be_root
-
-echo "QA output created by $seq"
-echo ""
-file=$testdir/$seq.file
-
-user=`grep ':all=:all=' /etc/capability | tail -1 | $AWK_PROG -F: '{print $1}'`
-uid=`_cat_passwd | grep $user | $AWK_PROG -F: '{print $3}'`
-
-cat >$tmp.append <<EOF
-#!/bin/bash
-echo data >>$file
-EOF
-chmod ugo+x $tmp.append
-
-echo "touch file"
-touch $file
-chmod ugo+w $file 
-
-echo "chcap on file"
-chcap CAP_CHOWN+p $file
-
-echo "ls -P on file"
-ls -P $file | _testfilter
-
-echo "append to file as root"
-$tmp.append
-
-echo "ls -P on file"
-ls -P $file | _testfilter
-
-echo "cat file"
-echo "----"
-cat $file
-echo "----"
-
-echo "append to file as user without caps"
-# in particular user doesn't have FSETID or SETFCAP
-$runas -u $uid $tmp.append
-
-echo "cat file"
-echo "----"
-cat $file
-echo "----"
-
-echo "ls -P on file"
-ls -P $file | _testfilter
-
-# try again when it doesn't have the EA
-echo "append to file as user without caps a 2nd time"
-$runas -u $uid $tmp.append
-
-echo "ls -P on file"
-ls -P $file | _testfilter
-
-echo "cat file"
-echo "----"
-cat $file
-echo "----"
-
-echo "only let root write to file"
-chmod 700 $file
-chown root $file 
-
-echo "as non-root try to append to file"
-$runas -u $uid $tmp.append 2>&1 | _filefilter
-
-echo "restore perms on file"
-chmod 777 $file
-
-echo "set a root EA on file"
-${ATTR_PROG} -R -s test -V testval $file | _filefilter
-
-echo "list EA on file"
-${ATTR_PROG} -R -l $file | _filefilter
-
-echo "as non-root try to append to file"
-$runas -u $uid $tmp.append 2>&1 | _filefilter
-
-echo "list EA on file"
-${ATTR_PROG} -R -l $file | _filefilter
-
-chown $uid $file
-chmod ugo+w $testdir
-echo "as non-root call writemod"
-$runas -u $uid src/writemod $file 2>&1 | _filefilter
-
-echo "cat file"
-echo "----"
-cat $file
-echo "----"
-
-# success, all done
-status=0
-exit
diff --git a/093.out b/093.out
deleted file mode 100644 (file)
index 0113a48..0000000
Binary files a/093.out and /dev/null differ
diff --git a/097 b/097
deleted file mode 100755 (executable)
index d3174e4..0000000
--- a/097
+++ /dev/null
@@ -1,257 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 097. Modifed from UDFQA test 033.
-#
-# simple attr tests for EAs:
-#  - set
-#  - get
-#  - list
-#  - remove
-# Basic testing.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-TARGET_DIR=
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    rm -f $tmp.*
-    cd $TARGET_DIR
-    rm -f foo
-}
-
-_umount_and_mount()
-{
-    cd /
-    umount $TARGET_DIR
-    if [ "$FSTYP" == "xfs" ]; then
-       _test_mount
-    else
-       _scratch_mount
-    fi
-    
-    cd $TARGET_DIR
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# link correct .out file
-# This is done bacause udf and xfs print attrs in different orders.
-rm -rf $seq.out
-if [ "$FSTYP" == "xfs" ]; then
-    ln -s $seq.out.xfs $seq.out
-else
-    ln -s $seq.out.udf $seq.out
-fi
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX
-
-_require_scratch
-_require_attrs
-
-_setup_testdir 
-
-TARGET_DIR=$SCRATCH_MNT
-[ "$FSTYP" == "xfs" ] && TARGET_DIR=$TEST_DIR
-cd $TARGET_DIR
-
-echo "create file foo"
-rm -f foo 
-touch foo
-
-echo "should be no EAs for foo:"
-${ATTR_PROG} -l foo
-
-echo "set EA <noise,woof>:"
-${ATTR_PROG} -s noise -V woof foo
-
-echo "set EA <colour,blue>:"
-${ATTR_PROG} -s colour -V blue foo
-
-echo "set EA <size,small>:"
-${ATTR_PROG} -s size -V small foo
-
-echo "list the EAs for foo: noise, colour, size" 
-${ATTR_PROG} -l foo
-
-echo "check the list again for foo"
-${ATTR_PROG} -l foo
-
-echo "unmount the FS and see if EAs are persistent"
-_umount_and_mount
-
-echo "check the list again for foo after umount/mount"
-${ATTR_PROG} -l foo
-
-echo "get the value of the noise EA"
-${ATTR_PROG} -g noise foo
-
-echo "get the value of the colour EA which was removed earlier"
-${ATTR_PROG} -g colour foo
-
-echo "get the value of the size EA"
-${ATTR_PROG} -g size foo
-
-echo "remove the colour EA on foo"
-${ATTR_PROG} -r colour foo
-
-echo "list EAs for foo: noise, size"
-${ATTR_PROG} -l foo
-
-echo "get the value of the noise EA"
-${ATTR_PROG} -g noise foo
-
-echo "get the value of the colour EA which was removed earlier"
-${ATTR_PROG} -g colour foo
-
-echo "get the value of the size EA"
-${ATTR_PROG} -g size foo
-
-echo "list all the EAs again: noise, size"
-${ATTR_PROG} -l foo
-
-echo "change the value of the size EA from small to huge"
-${ATTR_PROG} -s size -V huge foo
-
-echo "get the size EA which should now have value huge"
-${ATTR_PROG} -g size foo
-
-echo "list EAs: noise, size"
-${ATTR_PROG} -l foo
-
-echo "remove the size EA from foo"
-${ATTR_PROG} -r size foo
-
-echo "list EAs: noise (size EA has been removed)"
-${ATTR_PROG} -l foo
-
-echo "get the noise EA: woof"
-${ATTR_PROG} -g noise foo
-
-echo "try removing non-existent EA named woof"
-${ATTR_PROG} -r woof foo
-
-echo "try removing already removed EA size"
-${ATTR_PROG} -r size foo
-
-echo "list EAs: noise"
-${ATTR_PROG} -l foo
-
-echo "try removing already removed EA colour"
-${ATTR_PROG} -r colour foo
-
-echo "list EAs: noise"
-${ATTR_PROG} -l foo
-
-echo "remove remaining EA noise"
-${ATTR_PROG} -r noise foo
-
-echo "list EAs: should be no EAs left now"
-${ATTR_PROG} -l foo
-
-echo "unmount the FS and see if EAs are persistent"
-_umount_and_mount
-
-echo "list EAs: should still be no EAs left"
-${ATTR_PROG} -l foo
-
-echo ""
-echo "*** Test out the root namespace ***"
-echo ""
-
-echo "set EA <root:colour,marone>:"
-${ATTR_PROG} -R -s colour -V marone foo
-
-echo "set EA <user:colour,beige>:"
-${ATTR_PROG} -s colour -V beige foo
-
-echo "set EA <user:vomit,pizza>:"
-${ATTR_PROG} -s vomit -V pizza foo
-
-echo "set EA <root:noise,whack>:"
-${ATTR_PROG} -R -s noise -V whack foo
-
-echo "list root EAs: <root:colour,noise>:"
-${ATTR_PROG} -R -l foo
-
-echo "list user EAs: <user:colour,vomit>:"
-${ATTR_PROG} -l foo
-
-echo "get root EA colour: marone"
-${ATTR_PROG} -R -g colour foo
-
-echo "get root EA noise: whack"
-${ATTR_PROG} -R -g noise foo
-
-echo "get root EA vomit which is a user EA => find nothing"
-${ATTR_PROG} -R -g vomit foo
-
-echo ""
-echo "unmount the FS and see if EAs are persistent"
-echo ""
-_umount_and_mount
-
-echo "get root EA colour: marone"
-${ATTR_PROG} -R -g colour foo
-
-echo "get root EA noise: whack"
-${ATTR_PROG} -R -g noise foo
-
-echo "get user EA vomit: pizza" 
-${ATTR_PROG} -g vomit foo
-
-echo "remove the root colour EA"
-${ATTR_PROG} -R -r colour foo
-
-echo "list root EAs: <root:noise>:"
-${ATTR_PROG} -R -l foo
-
-echo "list user EAs: <user:colour,vomit>:"
-${ATTR_PROG} -l foo
-
-echo "remove the final root EA noise"
-${ATTR_PROG} -R -r noise foo
-
-echo "list root EAs: none"
-${ATTR_PROG} -R -l foo
-
-cd /
-_cleanup_testdir
-
-# Check the filesystem
-_check_scratch_fs
-
-# optional stuff if your test has verbose output to help resolve problems
-#echo
-#echo "If failure, check $seq.full (this) and $seq.full.ok (reference)"
-
-# success, all done
-status=0
-exit
diff --git a/097.out.udf b/097.out.udf
deleted file mode 100644 (file)
index 1d36ff7..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-QA output created by 097
-create file foo
-should be no EAs for foo:
-set EA <noise,woof>:
-Attribute "noise" set to a 4 byte value for foo:
-woof
-set EA <colour,blue>:
-Attribute "colour" set to a 4 byte value for foo:
-blue
-set EA <size,small>:
-Attribute "size" set to a 5 byte value for foo:
-small
-list the EAs for foo: noise, colour, size
-Attribute "noise" has a 4 byte value for foo
-Attribute "colour" has a 4 byte value for foo
-Attribute "size" has a 5 byte value for foo
-check the list again for foo
-Attribute "noise" has a 4 byte value for foo
-Attribute "colour" has a 4 byte value for foo
-Attribute "size" has a 5 byte value for foo
-unmount the FS and see if EAs are persistent
-check the list again for foo after umount/mount
-Attribute "noise" has a 4 byte value for foo
-Attribute "colour" has a 4 byte value for foo
-Attribute "size" has a 5 byte value for foo
-get the value of the noise EA
-Attribute "noise" had a 4 byte value for foo:
-woof
-get the value of the colour EA which was removed earlier
-Attribute "colour" had a 4 byte value for foo:
-blue
-get the value of the size EA
-Attribute "size" had a 5 byte value for foo:
-small
-remove the colour EA on foo
-list EAs for foo: noise, size
-Attribute "noise" has a 4 byte value for foo
-Attribute "size" has a 5 byte value for foo
-get the value of the noise EA
-Attribute "noise" had a 4 byte value for foo:
-woof
-get the value of the colour EA which was removed earlier
-attr_get: Attribute not found
-Could not get "colour" for foo
-get the value of the size EA
-Attribute "size" had a 5 byte value for foo:
-small
-list all the EAs again: noise, size
-Attribute "noise" has a 4 byte value for foo
-Attribute "size" has a 5 byte value for foo
-change the value of the size EA from small to huge
-Attribute "size" set to a 4 byte value for foo:
-huge
-get the size EA which should now have value huge
-Attribute "size" had a 4 byte value for foo:
-huge
-list EAs: noise, size
-Attribute "noise" has a 4 byte value for foo
-Attribute "size" has a 4 byte value for foo
-remove the size EA from foo
-list EAs: noise (size EA has been removed)
-Attribute "noise" has a 4 byte value for foo
-get the noise EA: woof
-Attribute "noise" had a 4 byte value for foo:
-woof
-try removing non-existent EA named woof
-attr_remove: Attribute not found
-Could not remove "woof" for foo
-try removing already removed EA size
-attr_remove: Attribute not found
-Could not remove "size" for foo
-list EAs: noise
-Attribute "noise" has a 4 byte value for foo
-try removing already removed EA colour
-attr_remove: Attribute not found
-Could not remove "colour" for foo
-list EAs: noise
-Attribute "noise" has a 4 byte value for foo
-remove remaining EA noise
-list EAs: should be no EAs left now
-unmount the FS and see if EAs are persistent
-list EAs: should still be no EAs left
-
-*** Test out the root namespace ***
-
-set EA <root:colour,marone>:
-Attribute "colour" set to a 6 byte value for foo:
-marone
-set EA <user:colour,beige>:
-Attribute "colour" set to a 5 byte value for foo:
-beige
-set EA <user:vomit,pizza>:
-Attribute "vomit" set to a 5 byte value for foo:
-pizza
-set EA <root:noise,whack>:
-Attribute "noise" set to a 5 byte value for foo:
-whack
-list root EAs: <root:colour,noise>:
-Attribute "colour" has a 6 byte value for foo
-Attribute "noise" has a 5 byte value for foo
-list user EAs: <user:colour,vomit>:
-Attribute "colour" has a 5 byte value for foo
-Attribute "vomit" has a 5 byte value for foo
-get root EA colour: marone
-Attribute "colour" had a 6 byte value for foo:
-marone
-get root EA noise: whack
-Attribute "noise" had a 5 byte value for foo:
-whack
-get root EA vomit which is a user EA => find nothing
-attr_get: Attribute not found
-Could not get "vomit" for foo
-
-unmount the FS and see if EAs are persistent
-
-get root EA colour: marone
-Attribute "colour" had a 6 byte value for foo:
-marone
-get root EA noise: whack
-Attribute "noise" had a 5 byte value for foo:
-whack
-get user EA vomit: pizza
-Attribute "vomit" had a 5 byte value for foo:
-pizza
-remove the root colour EA
-list root EAs: <root:noise>:
-Attribute "noise" has a 5 byte value for foo
-list user EAs: <user:colour,vomit>:
-Attribute "colour" has a 5 byte value for foo
-Attribute "vomit" has a 5 byte value for foo
-remove the final root EA noise
-list root EAs: none
diff --git a/097.out.xfs b/097.out.xfs
deleted file mode 100644 (file)
index 0024bf2..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-QA output created by 097
-create file foo
-should be no EAs for foo:
-set EA <noise,woof>:
-Attribute "noise" set to a 4 byte value for foo:
-woof
-set EA <colour,blue>:
-Attribute "colour" set to a 4 byte value for foo:
-blue
-set EA <size,small>:
-Attribute "size" set to a 5 byte value for foo:
-small
-list the EAs for foo: noise, colour, size
-Attribute "size" has a 5 byte value for foo
-Attribute "noise" has a 4 byte value for foo
-Attribute "colour" has a 4 byte value for foo
-check the list again for foo
-Attribute "size" has a 5 byte value for foo
-Attribute "noise" has a 4 byte value for foo
-Attribute "colour" has a 4 byte value for foo
-unmount the FS and see if EAs are persistent
-check the list again for foo after umount/mount
-Attribute "size" has a 5 byte value for foo
-Attribute "noise" has a 4 byte value for foo
-Attribute "colour" has a 4 byte value for foo
-get the value of the noise EA
-Attribute "noise" had a 4 byte value for foo:
-woof
-get the value of the colour EA which was removed earlier
-Attribute "colour" had a 4 byte value for foo:
-blue
-get the value of the size EA
-Attribute "size" had a 5 byte value for foo:
-small
-remove the colour EA on foo
-list EAs for foo: noise, size
-Attribute "size" has a 5 byte value for foo
-Attribute "noise" has a 4 byte value for foo
-get the value of the noise EA
-Attribute "noise" had a 4 byte value for foo:
-woof
-get the value of the colour EA which was removed earlier
-attr_get: Attribute not found
-Could not get "colour" for foo
-get the value of the size EA
-Attribute "size" had a 5 byte value for foo:
-small
-list all the EAs again: noise, size
-Attribute "size" has a 5 byte value for foo
-Attribute "noise" has a 4 byte value for foo
-change the value of the size EA from small to huge
-Attribute "size" set to a 4 byte value for foo:
-huge
-get the size EA which should now have value huge
-Attribute "size" had a 4 byte value for foo:
-huge
-list EAs: noise, size
-Attribute "noise" has a 4 byte value for foo
-Attribute "size" has a 4 byte value for foo
-remove the size EA from foo
-list EAs: noise (size EA has been removed)
-Attribute "noise" has a 4 byte value for foo
-get the noise EA: woof
-Attribute "noise" had a 4 byte value for foo:
-woof
-try removing non-existent EA named woof
-attr_remove: Attribute not found
-Could not remove "woof" for foo
-try removing already removed EA size
-attr_remove: Attribute not found
-Could not remove "size" for foo
-list EAs: noise
-Attribute "noise" has a 4 byte value for foo
-try removing already removed EA colour
-attr_remove: Attribute not found
-Could not remove "colour" for foo
-list EAs: noise
-Attribute "noise" has a 4 byte value for foo
-remove remaining EA noise
-list EAs: should be no EAs left now
-unmount the FS and see if EAs are persistent
-list EAs: should still be no EAs left
-
-*** Test out the root namespace ***
-
-set EA <root:colour,marone>:
-Attribute "colour" set to a 6 byte value for foo:
-marone
-set EA <user:colour,beige>:
-Attribute "colour" set to a 5 byte value for foo:
-beige
-set EA <user:vomit,pizza>:
-Attribute "vomit" set to a 5 byte value for foo:
-pizza
-set EA <root:noise,whack>:
-Attribute "noise" set to a 5 byte value for foo:
-whack
-list root EAs: <root:colour,noise>:
-Attribute "noise" has a 5 byte value for foo
-Attribute "colour" has a 6 byte value for foo
-list user EAs: <user:colour,vomit>:
-Attribute "vomit" has a 5 byte value for foo
-Attribute "colour" has a 5 byte value for foo
-get root EA colour: marone
-Attribute "colour" had a 6 byte value for foo:
-marone
-get root EA noise: whack
-Attribute "noise" had a 5 byte value for foo:
-whack
-get root EA vomit which is a user EA => find nothing
-attr_get: Attribute not found
-Could not get "vomit" for foo
-
-unmount the FS and see if EAs are persistent
-
-get root EA colour: marone
-Attribute "colour" had a 6 byte value for foo:
-marone
-get root EA noise: whack
-Attribute "noise" had a 5 byte value for foo:
-whack
-get user EA vomit: pizza
-Attribute "vomit" had a 5 byte value for foo:
-pizza
-remove the root colour EA
-list root EAs: <root:noise>:
-Attribute "noise" has a 5 byte value for foo
-list user EAs: <user:colour,vomit>:
-Attribute "vomit" has a 5 byte value for foo
-Attribute "colour" has a 5 byte value for foo
-remove the final root EA noise
-list root EAs: none
diff --git a/099 b/099
deleted file mode 100755 (executable)
index edd88a9..0000000
--- a/099
+++ /dev/null
@@ -1,342 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 099. Modified from UDFQA test 036.
-#
-# ACL test
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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
-#
-#-----------------------------------------------------------------------
-#
-#_acl_list
-# modifier
-
-seq=`basename $0`
-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
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-runas=$here/src/runas
-
-TARGET_DIR=$SCRATCH_MNT
-[ "$FSTYP" == "xfs" ] && TARGET_DIR=$TEST_DIR
-
-_cleanup()
-{
-    rm -f $tmp.*
-    cd $TARGET_DIR
-    rm -rf $seq.dir1
-    cd /
-}
-
-# -----
-# minimal access ACL has ACEs: USER_OBJ, GROUP_OBJ, OTHER_OBJ
-# This is set with chacl(1) and can be changed by chmod(1).
-#
-# Test that this is being set for ACL and for std unix permissions
-# Test that we can get back the same ACL.
-# Test std permissions for rwx.
-# -----
-#
-# Test out default ACLs and that the ACL is being PASSed
-# onto the children of the dir.
-#
-# -----
-# Test out access check for extended ACLs.
-# -> 3 extra ACEs: MASK, GROUP, USER
-# -> the GROUP compares with egid of process _and_ the supplementary
-#    groups (as found in /etc/group)
-#
-# Test that mask works for USER, GROUP, GROUP_OBJ
-# Test that the ACE type priority is working
-#   -> this would be done by simultaneously matching on ACEs
-#   -> interesting if it allows user to specify ACEs in any order
-#
-rm -f $seq.full
-
-#-------------------------------------------------------
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX
-
-_acl_setup_ids
-_require_acls
-
-[ -x $runas ] || _notrun "$runas executable not found"
-
-# get dir
-#export FILE_SYS=xfs
-_require_scratch
-_setup_testdir
-
-cd $TARGET_DIR
-rm -rf $seq.dir1 # in case file is left over from previous runs.
-mkdir $seq.dir1
-cd $seq.dir1
-
-echo ""
-echo "=== Test minimal ACE ==="
-
-echo "Setup file"
-# Note: as this is a shell script,
-#       will need read and execute permission set
-#       in order to execute it.
-touch file1
-cat <<EOF >file1
-#!/bin/bash
-echo "Test was executed"
-EOF
-chmod u=rwx file1
-chmod g=rw- file1
-chmod o=r-- file1
-chown $acl1.$acl2 file1
-_acl_ls file1
-
-echo ""
-echo "--- Test get and set of ACL ---"
-echo "Note: IRIX interface gave an empty ACL - Linux outputs an ACL"
-_acl_list file1
-echo "Try using single colon separator"
-echo "Note: IRIX interface FAILs because of single colon - Linux one allows it" 
-chacl u::r--,g::rwx,o:rw- file1 2>&1
-echo "Expect to PASS" 
-chacl u::r--,g::rwx,o::rw- file1 2>&1
-_acl_list file1
-
-echo ""
-echo "--- Test sync of ACL with std permissions ---"
-_acl_ls file1
-chmod u+w file1
-_acl_ls file1
-_acl_list file1
-
-echo ""
-echo "--- Test owner permissions ---"
-chacl u::r-x,g::---,o::--- file1 2>&1
-_acl_list file1
-# change to owner
-echo "Expect to PASS" 
-$runas -u $acl1 -g $acl1 ./file1 2>&1
-echo "Expect to FAIL" 
-$runas -u $acl2 -g $acl2 ./file1 2>&1
-
-echo ""
-echo "--- Test group permissions ---"
-chacl u::---,g::r-x,o::--- file1 2>&1
-_acl_list file1
-echo "Expect to FAIL - acl1 is owner" 
-$runas -u $acl1 -g $acl1 ./file1 2>&1
-echo "Expect to PASS - acl2 matches group" 
-$runas -u $acl2 -g $acl2 ./file1 2>&1
-echo "Expect to PASS - acl2 matches sup group" 
-$runas -u $acl2 -g $acl3 -s $acl2 ./file1 2>&1
-echo "Expect to FAIL - acl3 is not in group" 
-$runas -u $acl3 -g $acl3 ./file1 2>&1
-
-echo ""
-echo "--- Test other permissions ---"
-chacl u::---,g::---,o::r-x file1 2>&1
-_acl_list file1
-echo "Expect to FAIL - acl1 is owner" 
-$runas -u $acl1 -g $acl1 ./file1 2>&1
-echo "Expect to FAIL - acl2 is in group" 
-$runas -u $acl2 -g $acl2 ./file1 2>&1
-echo "Expect to FAIL - acl2 is in sup. group" 
-$runas -u $acl2 -g $acl3 -s $acl2 ./file1 2>&1
-echo "Expect to PASS - acl3 is not owner or in group" 
-$runas -u $acl3 -g $acl3 ./file1 2>&1
-
-#-------------------------------------------------------
-
-echo ""
-echo "=== Test Extended ACLs ==="
-
-echo ""
-echo "--- Test adding a USER ACE ---"
-echo "Expect to FAIL as no MASK provided"
-chacl u::---,g::---,o::---,u:$acl2:r-x file1 2>&1 | _acl_filter_id
-echo "Ensure that ACL has not been changed"
-_acl_list file1
-echo "Expect to PASS - USER ACE matches user"
-chacl u::---,g::---,o::---,u:$acl2:r-x,m::rwx file1 2>&1
-_acl_list file1
-$runas -u $acl2 -g $acl2 ./file1 2>&1
-echo "Expect to FAIL - USER ACE does not match user"
-$runas -u $acl3 -g $acl3 ./file1 2>&1
-
-echo ""
-echo "--- Test adding a GROUP ACE ---"
-echo "Expect to FAIL as no MASK provided"
-chacl u::---,g::---,o::---,g:$acl2:r-x file1 2>&1 | _acl_filter_id
-echo "Ensure that ACL has not been changed"
-_acl_list file1
-chacl u::---,g::---,o::---,g:$acl2:r-x,m::rwx file1 2>&1
-_acl_list file1 | _acl_filter_id
-echo "Expect to PASS - GROUP ACE matches group"
-$runas -u $acl2 -g $acl2 ./file1 2>&1
-echo "Expect to PASS - GROUP ACE matches sup group"
-$runas -u $acl2 -g $acl1 -s $acl2 ./file1 2>&1
-echo "Expect to FAIL - GROUP ACE does not match group"
-$runas -u $acl3 -g $acl3 ./file1 2>&1
-
-#-------------------------------------------------------
-
-echo ""
-echo "--- Test MASK ---"
-
-# group
-chacl u::---,g::---,o::---,g:$acl2:r-x,m::-w- file1 2>&1
-_acl_list file1
-echo "Expect to FAIL as MASK prohibits execution"
-$runas -u $acl2 -g $acl2 ./file1 2>&1
-
-# user
-chacl u::---,g::---,o::---,u:$acl2:r-x,m::-w- file1 2>&1
-echo "Expect to FAIL as MASK prohibits execution"
-$runas -u $acl2 -g $acl2 ./file1 2>&1
-
-# user
-chacl u::---,g::---,o::---,u:$acl2:r-x,m::r-x file1 2>&1
-echo "Expect to PASS as MASK allows execution"
-$runas -u $acl2 -g $acl2 ./file1 2>&1
-
-#-------------------------------------------------------
-
-echo ""
-echo "--- Test ACE priority ---"
-
-chacl o::rwx,g::rwx,u:$acl1:rwx,u::---,m::rwx file1 2>&1
-echo "Expect to FAIL as should match on owner"
-$runas -u $acl1 -g $acl2 ./file1 2>&1
-
-chacl o::---,g::---,u:$acl2:rwx,u::---,m::rwx file1 2>&1
-echo "Expect to PASS as should match on user"
-$runas -u $acl2 -g $acl2 ./file1 2>&1
-
-
-#-------------------------------------------------------
-
-echo ""
-echo "=== Test can read ACLs without access permissions ==="
-# This was a bug in kernel code where syscred wasn't being used
-# to override the capabilities
-chacl o::---,g::---,u::--- file1 2>&1
-_acl_list file1
-
-#-------------------------------------------------------
-
-echo ""
-echo "=== Test Default ACLs ==="
-# make test clearer by testing with and without umask
-umask 0
-
-mkdir acldir
-chacl -b "u::rwx,g::rwx,o::rwx" "u::r-x,g::r--,o::---" acldir 2>&1
-_acl_list acldir
-cd acldir
-
-touch file2
-_acl_ls file2
-_acl_list file2
-
-#ensure that umask is not having an effect 
-#so set it and see
-umask 722
-touch file3
-_acl_ls file3
-_acl_list file3
-
-cd ..
-umask 022
-
-
-#-------------------------------------------------------
-
-echo ""
-echo "=== Removing ACLs ==="
-_acl_list file1
-_acl_list acldir
-_acl_list acldir/file2
-echo "Remove ACLs..."
-chacl -R file1
-chacl -B acldir
-chacl -R acldir/file2
-echo "Note: IRIX interface would mean empty ACLs - Linux would show mode ACLs" 
-_acl_list file1
-_acl_list acldir
-_acl_list acldir/file2
-
-#-------------------------------------------------------
-
-echo ""
-echo "=== Test out error messages for ACL text parsing  ==="
-
-touch file1
-set -x
-chacl u file1
-chacl u: file1
-chacl u:rumpledumpleunknownuser file1
-chacl u:rumpledumpleunknownuser: file1
-chacl g:rumpledumpleunknowngrp file1
-chacl g:rumpledumpleunknowngrp: file1
-chacl o:user1:rwx file1
-chacl m:user1:rwx file1
-chacl a::rwx file1
-set +x
-
-#-------------------------------------------------------
-
-echo ""
-echo "=== Test out large ACLs  ==="
-touch largeaclfile
-XFS_ACL_MAX_ENTRIES=25
-num_aces_pre=`expr $XFS_ACL_MAX_ENTRIES - 1`
-num_aces_post=`expr $XFS_ACL_MAX_ENTRIES + 1`
-
-acl1=`_create_n_aces $num_aces_pre`
-acl2=`_create_n_aces $XFS_ACL_MAX_ENTRIES`
-acl3=`_create_n_aces $num_aces_post`
-
-echo "1 below xfs acl max"
-chacl $acl1 largeaclfile
-_acl_list largeaclfile | _filter_aces_notypes
-
-echo "xfs acl max"
-chacl $acl2 largeaclfile
-_acl_list largeaclfile | _filter_aces_notypes
-
-echo "1 above xfs acl max"
-chacl $acl3 largeaclfile
-_acl_list largeaclfile | _filter_aces_notypes
-
-#-------------------------------------------------------
-
-if [ "$FSTYP" == "udf" ]; then
-    cd /
-    umount $TARGET_DIR
-    # Check the filesystem
-    _check_scratch_fs
-fi
-# success, all done
-status=0
-exit
diff --git a/099.out b/099.out
deleted file mode 100644 (file)
index 3f4f663..0000000
--- a/099.out
+++ /dev/null
@@ -1,215 +0,0 @@
-QA output created by 099
-
-=== Test minimal ACE ===
-Setup file
--rwxrw-r-- id1 id2 file1
-
---- Test get and set of ACL ---
-Note: IRIX interface gave an empty ACL - Linux outputs an ACL
-file1 []
-Try using single colon separator
-Note: IRIX interface FAILs because of single colon - Linux one allows it
-chacl: "u::r--,g::rwx,o:rw-" is an invalid ACL specification.
-Expect to PASS
-file1 [u::r--,g::rwx,o::rw-]
-
---- Test sync of ACL with std permissions ---
--r--rwxrw-+ id1 id2 file1
--rw-rwxrw-+ id1 id2 file1
-file1 [u::rw-,g::rwx,o::rw-]
-
---- Test owner permissions ---
-file1 [u::r-x,g::---,o::---]
-Expect to PASS
-Test was executed
-Expect to FAIL
-./file1: Permission denied
-
---- Test group permissions ---
-file1 [u::---,g::r-x,o::---]
-Expect to FAIL - acl1 is owner
-./file1: Permission denied
-Expect to PASS - acl2 matches group
-Test was executed
-Expect to PASS - acl2 matches sup group
-Test was executed
-Expect to FAIL - acl3 is not in group
-./file1: Permission denied
-
---- Test other permissions ---
-file1 [u::---,g::---,o::r-x]
-Expect to FAIL - acl1 is owner
-./file1: Permission denied
-Expect to FAIL - acl2 is in group
-./file1: Permission denied
-Expect to FAIL - acl2 is in sup. group
-./file1: Permission denied
-Expect to PASS - acl3 is not owner or in group
-Test was executed
-
-=== Test Extended ACLs ===
-
---- Test adding a USER ACE ---
-Expect to FAIL as no MASK provided
-chacl: error setting access acl on "file1":Invalid argument
-Ensure that ACL has not been changed
-file1 [u::---,g::---,o::r-x]
-Expect to PASS - USER ACE matches user
-file1 [u::---,g::---,o::---,u:id2:r-x,m::rwx]
-Test was executed
-Expect to FAIL - USER ACE does not match user
-./file1: Permission denied
-
---- Test adding a GROUP ACE ---
-Expect to FAIL as no MASK provided
-chacl: error setting access acl on "file1":Invalid argument
-Ensure that ACL has not been changed
-file1 [u::---,g::---,o::---,u:id2:r-x,m::rwx]
-file1 [u::---,g::---,o::---,g:id2:r-x,m::rwx]
-Expect to PASS - GROUP ACE matches group
-Test was executed
-Expect to PASS - GROUP ACE matches sup group
-Test was executed
-Expect to FAIL - GROUP ACE does not match group
-./file1: Permission denied
-
---- Test MASK ---
-file1 [u::---,g::---,o::---,g:id2:r-x,m::-w-]
-Expect to FAIL as MASK prohibits execution
-./file1: Permission denied
-Expect to FAIL as MASK prohibits execution
-./file1: Permission denied
-Expect to PASS as MASK allows execution
-Test was executed
-
---- Test ACE priority ---
-Expect to FAIL as should match on owner
-./file1: Permission denied
-Expect to PASS as should match on user
-Test was executed
-
-=== Test can read ACLs without access permissions ===
-file1 [o::---,g::---,u::---]
-
-=== Test Default ACLs ===
-acldir [u::rwx,g::rwx,o::rwx/u::r-x,g::r--,o::---]
--r--r-----+ 0 0 file2
-file2 [u::r--,g::r--,o::---]
--r--r-----+ 0 0 file3
-file3 [u::r--,g::r--,o::---]
-
-=== Removing ACLs ===
-file1 [o::---,g::---,u::---]
-acldir [u::rwx,g::rwx,o::rwx/u::r-x,g::r--,o::---]
-acldir/file2 [u::r--,g::r--,o::---]
-Remove ACLs...
-Note: IRIX interface would mean empty ACLs - Linux would show mode ACLs
-file1 []
-acldir []
-acldir/file2 []
-
-=== Test out error messages for ACL text parsing  ===
-+ chacl u file1
-chacl: "u" is an invalid ACL specification.
-+ chacl u: file1
-chacl: "u:" is an invalid ACL specification.
-+ chacl u:rumpledumpleunknownuser file1
-chacl: "u:rumpledumpleunknownuser" is an invalid ACL specification.
-+ chacl u:rumpledumpleunknownuser: file1
-chacl: "u:rumpledumpleunknownuser:" is an invalid ACL specification.
-+ chacl g:rumpledumpleunknowngrp file1
-chacl: "g:rumpledumpleunknowngrp" is an invalid ACL specification.
-+ chacl g:rumpledumpleunknowngrp: file1
-chacl: "g:rumpledumpleunknowngrp:" is an invalid ACL specification.
-+ chacl o:user1:rwx file1
-chacl: "o:user1:rwx" is an invalid ACL specification.
-+ chacl m:user1:rwx file1
-chacl: "m:user1:rwx" is an invalid ACL specification.
-+ chacl a::rwx file1
-chacl: "a::rwx" is an invalid ACL specification.
-
-=== Test out large ACLs  ===
-1 below xfs acl max
-largeaclfile 
-user::rwx
-group::rwx
-other::rwx
-mask::rwx
-user:20:rwx
-user:19:rwx
-user:18:rwx
-user:17:rwx
-user:16:rwx
-user:15:rwx
-user:14:rwx
-user:13:rwx
-user:12:rwx
-user:11:rwx
-user:10:rwx
-user:9:rwx
-user:8:rwx
-user:7:rwx
-user:6:rwx
-user:5:rwx
-user:4:rwx
-user:3:rwx
-user:2:rwx
-user:1:rwx
-
-xfs acl max
-largeaclfile 
-user::rwx
-group::rwx
-other::rwx
-mask::rwx
-user:21:rwx
-user:20:rwx
-user:19:rwx
-user:18:rwx
-user:17:rwx
-user:16:rwx
-user:15:rwx
-user:14:rwx
-user:13:rwx
-user:12:rwx
-user:11:rwx
-user:10:rwx
-user:9:rwx
-user:8:rwx
-user:7:rwx
-user:6:rwx
-user:5:rwx
-user:4:rwx
-user:3:rwx
-user:2:rwx
-user:1:rwx
-
-1 above xfs acl max
-chacl: error setting access acl on "largeaclfile":Error 0
-largeaclfile 
-user::rwx
-group::rwx
-other::rwx
-mask::rwx
-user:21:rwx
-user:20:rwx
-user:19:rwx
-user:18:rwx
-user:17:rwx
-user:16:rwx
-user:15:rwx
-user:14:rwx
-user:13:rwx
-user:12:rwx
-user:11:rwx
-user:10:rwx
-user:9:rwx
-user:8:rwx
-user:7:rwx
-user:6:rwx
-user:5:rwx
-user:4:rwx
-user:3:rwx
-user:2:rwx
-user:1:rwx
-
diff --git a/100 b/100
deleted file mode 100755 (executable)
index 1ba5eb7..0000000
--- a/100
+++ /dev/null
@@ -1,88 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 100. Modified from UDF QA test 030.
-#
-# Test whether a tarred directory structure can be untarred onto
-# a UDF file system.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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`
-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
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_cleanup()
-{
-     rm -f $tmp.* $testfile
-}
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-# Use _populate_fs() in common.rc to create a directory structure.
-TEMP_DIR=/tmp
-[ "$FSTYP" == "xfs" ] && TEMP_DIR=$TEST_DIR
-TAR_FILE=temp.tar
-NDIRS=3
-NFILES=6
-DEPTH=5
-POPULATED_DIR=$TEMP_DIR/populate_root
-SIZE=10
-
-rm -f $seq.full
-
-# Clean up if file exist from prevous run
-rm -rf $POPULATED_DIR
-rm -f $TEMP_DIR/$TAR_FILE
-
-# Create the new directory structure
-_populate_fs -n $NDIRS -f $NFILES -d $DEPTH -r $POPULATED_DIR -s $SIZE >>$here/$seq.full 2>&1
-
-# Then tar up the directory structure
-tar -cvf $TEMP_DIR/$TAR_FILE $POPULATED_DIR >>$here/$seq.full 2>&1
-
-# create f/s
-_require_scratch
-_setup_testdir
-
-# untar on f/s
-cd $testdir
-tar -xRvf $TEMP_DIR/$TAR_FILE >>$here/$seq.full 2>&1
-cd $here
-
-
-# use diff -qr to compare
-ls -R -l ${testdir}${POPULATED_DIR} >>$here/$seq.full 2>&1
-diff -qr $POPULATED_DIR ${testdir}${POPULATED_DIR}
-
-cd /
-_cleanup_testdir
-_check_scratch_fs
-
-status=0
-exit
diff --git a/100.out b/100.out
deleted file mode 100644 (file)
index b6572c4..0000000
--- a/100.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 100
diff --git a/105 b/105
deleted file mode 100755 (executable)
index 01bae98..0000000
--- a/105
+++ /dev/null
@@ -1,99 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 105
-#
-# Test fix of bug:
-#   930290 - xfs directory with no exec perm in ACL denies access
-#            and breaks CAPP evaluation
-#   which pulls out an earlier mod
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2006 Silicon Graphics, 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`
-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 /
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-# Modify as appropriate.
-_supported_fs generic
-_supported_os IRIX Linux
-
-# real QA test starts here
-
-rm -f $seq.full
-
-_require_scratch
-_require_acls
-
-_acl_setup_ids
-
-umount $SCRATCH_DEV >/dev/null 2>&1
-echo "*** MKFS ***"                         >>$seq.full
-echo ""                                     >>$seq.full
-_scratch_mkfs                               >>$seq.full 2>&1 \
-       || _fail "mkfs failed"
-_scratch_mount                              >>$seq.full 2>&1 \
-       || _fail "mount failed"
-
-cd $SCRATCH_MNT
-
-# create a dir with out execute perms
-mkdir -m 600 subdir
-
-# make it owned by $acl1
-chown $acl1 subdir
-
-# put a file in the directory
-echo data > subdir/file
-_ls_l subdir/file | awk '{ print $1, $3 }'
-
-# add an ACL with a user ACE which has no exec permission 
-if [ "$HOSTOS" == "Linux" ]; then
-    setfacl -m u:$acl1:r subdir
-elif [ "$HOSTOS" == "IRIX" ]; then
-    chacl u:$acl:r--,g::---,o::--- subdir
-else
-    echo "Unknown OS!"
-    exit 1
-fi
-
-# With the bug this gives: `ls: subdir/file: Permission denied'
-# because one needs at least an exec perm somewhere in acl
-# However, this should not hold true for directories.
-_ls_l subdir/file | awk '{ print $1, $3 }'
-
-# With the bug this gives: `subdir/file2: Permission denied'.
-echo data2 > subdir/file2
-
-# success, all done
-status=0
-exit
diff --git a/105.out b/105.out
deleted file mode 100644 (file)
index af18719..0000000
--- a/105.out
+++ /dev/null
@@ -1,3 +0,0 @@
-QA output created by 105
--rw-r--r-- root
--rw-r--r-- root
diff --git a/112 b/112
deleted file mode 100755 (executable)
index bcdcfec..0000000
--- a/112
+++ /dev/null
@@ -1,163 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 112
-#
-# fsx (AIO variant, based on 075)
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2005 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -rf $testdir/fsx.* $tmp.*
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_do_test()
-{
-    _n="$1"
-    _param="$2"
-
-    out=$testdir/fsx
-    rm -rf $out
-    if ! mkdir $out
-    then
-       echo "    failed to mkdir $out"
-       status=1
-       exit
-    fi
-
-    _filter_param=`echo "$_param" | sed\
-       -e 's/-N [0-9][0-9]*/-N numops/' \
-       -e 's/-l [0-9][0-9]*/-l filelen/'`
-
-    echo ""
-    echo "-----------------------------------------------"
-    echo "fsx.$_n : $_filter_param"
-    echo "-----------------------------------------------"
-
-    if [ "$FSTYP" != "xfs" ]
-    then
-        if [ "$_n" = "1" -o "$_n" = "3" ]
-        then
-            # HACK: only xfs handles preallocation (-x) so just skip this test
-            return
-        fi
-    fi
-
-    # This cd and use of -P gets full debug on $here (not TEST_DEV)
-    cd $out
-    if ! $here/ltp/fsx $_param -P $here $seq.$_n &>/dev/null
-    then
-       echo "    fsx ($_param) returned $? - see $seq.$_n.full"
-       mv $seq.$_n.fsxlog $here/$seq.$_n.full
-       status=1
-       exit
-    fi
-
-    cd $here
-    _check_test_fs
-}
-
-_usage()
-{
-    echo "$0: [-l filelen] [-n numops1] [-N numops2]"
-}
-
-_process_args()
-{
-    while getopts "l:n:N:?" c $@
-    do
-        case $c
-        in
-            l)
-                filelen=$OPTARG
-               param_type="$param_type, overidde -l"
-                ;;
-            N)
-                numops2=$OPTARG
-               param_type="$param_type, overidde -N"
-                ;;
-            n)
-                numops1=$OPTARG
-               param_type="$param_type, overidde -n"
-                ;;
-           ?)
-               _usage
-               exit    
-               ;;
-       esac
-    done
-}
-
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-[ -x $here/ltp/aio-stress ] || \
-       _notrun "fsx not built with AIO for this platform"
-
-size10=`expr 10 \* 1024 \* 1024`       # 10 megabytes
-filelen=$size10
-numops1=1000
-numops2=10000
-
-# can override the params here
-_process_args "$@"
-
-echo "Params are for $param_type" >>$seq.full
-echo "Params: n = $numops1 N = $numops2 l = $filelen" >>$seq.full
-
-_setup_testdir
-
-rm -f $here/$seq.full
-echo "brevity is wit..."
-
-_check_test_fs
-
-# Options:
-# -d: debug output for all operations
-# -l flen: the upper bound on file size (default 262144)
-# -o oplen: the upper bound on operation size
-# -N numops: total # operations to do (default infinity)
-# -P: save .fsxlog and .fsxgood files in dirpath (default ./)
-# -S seed: for random # generator (default 1) 0 gets timestamp
-# -x: pre-allocate file space, exercising unwritten extents
-# -A: use the AIO system calls
-
-_do_test 0 "-A -d -N $numops1 -S 0"
-_do_test 1 "-A -d -N $numops1 -S 0 -x"
-_do_test 2 "-A -d -N $numops2 -l $filelen -S 0"
-_do_test 3 "-A -d -N $numops2 -l $filelen -S 0 -x"
-
-rm -f $seq.*.fsx{good,log}
-exit 0
diff --git a/112.out b/112.out
deleted file mode 100644 (file)
index 7d1709c..0000000
--- a/112.out
+++ /dev/null
@@ -1,18 +0,0 @@
-QA output created by 112
-brevity is wit...
-
------------------------------------------------
-fsx.0 : -A -d -N numops -S 0
------------------------------------------------
-
------------------------------------------------
-fsx.1 : -A -d -N numops -S 0 -x
------------------------------------------------
-
------------------------------------------------
-fsx.2 : -A -d -N numops -l filelen -S 0
------------------------------------------------
-
------------------------------------------------
-fsx.3 : -A -d -N numops -l filelen -S 0 -x
------------------------------------------------
diff --git a/113 b/113
deleted file mode 100755 (executable)
index fd301cd..0000000
--- a/113
+++ /dev/null
@@ -1,107 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 113
-#
-# aio-stress
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2005 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -f $testdir/aio-stress.$$.*
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_do_test()
-{
-    _n="$1"
-    _param="$2"
-    _count="$3"
-    _nproc="$4"
-
-    _files="$testdir/aiostress.$$.$_n"
-    __proc=$_nproc
-    [ $__proc -gt 1 ] && _param="-t $__proc $_param"
-    while [ $__proc -gt 1 ]; do
-        _files="$_files $testdir/aiostress.$$.$_n.$__proc"
-       let __proc=$__proc-1
-    done
-    rm -f $_files
-    echo ""
-    echo "-----------------------------------------------"
-    echo "aio-stress.$_n : $_param"
-    echo "-----------------------------------------------"
-    if ! $here/ltp/aio-stress $_param $AIOSTRESS_AVOID -I $_count $_files >>$tmp.out 2>&1
-    then
-        echo "    aio-stress (count=$_count) returned $?"
-        cat $tmp.out
-        status=1
-        exit
-    fi
-
-    _check_test_fs
-    rm -f $_files
-}
-
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-[ -x $here/ltp/aio-stress ] || _notrun "aio-stress not built for this platform"
-
-_setup_testdir
-
-echo "brevity is wit..."
-
-count=1000
-procs=20
-
-_check_test_fs
-
-# the default
-_do_test 1 "-s 120m" $count 1
-
-# and the default with multiprocess
-_do_test 2 "-s 10m" $count $procs
-
-# as above, but now using direct IO
-_do_test 3 "-s 10m -O" $count $procs
-
-# dio with O_SYNC and unwritten extent conversion
-_do_test 4 "-s 10m -O -S" $count $procs
-
-# random dio writes with O_SYNC and unwritten extent conversion
-_do_test 5 "-s 10m -O -S -o 2" $count $procs
-
-exit
diff --git a/113.out b/113.out
deleted file mode 100644 (file)
index aa856a6..0000000
--- a/113.out
+++ /dev/null
@@ -1,22 +0,0 @@
-QA output created by 113
-brevity is wit...
-
------------------------------------------------
-aio-stress.1 : -s 120m
------------------------------------------------
-
------------------------------------------------
-aio-stress.2 : -t 20 -s 10m
------------------------------------------------
-
------------------------------------------------
-aio-stress.3 : -t 20 -s 10m -O
------------------------------------------------
-
------------------------------------------------
-aio-stress.4 : -t 20 -s 10m -O -S
------------------------------------------------
-
------------------------------------------------
-aio-stress.5 : -t 20 -s 10m -O -S -o 2
------------------------------------------------
diff --git a/117 b/117
deleted file mode 100755 (executable)
index 8afc962..0000000
--- a/117
+++ /dev/null
@@ -1,116 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 117
-#
-# Attempt to cause filesystem corruption with serial fsstresses doing
-# extended attributes writes - pv 940655
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2005 Silicon Graphics, 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`
-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
-
-# seed and options for fsstress known to cause curruptions
-seed=1122413794
-fss_ops=" -z \
-    -f attr_remove=100 \
-    -f attr_set=100 \
-    -f chown=3 \
-    -f creat=4 \
-    -f dread=4 \
-    -f dwrite=4 \
-    -f fdatasync=1 \
-    -f fsync=1 \
-    -f getdents=1 \
-    -f link=1 \
-    -f mkdir=2 \
-    -f mknod=2 \
-    -f read=1 \
-    -f readlink=1 \
-    -f rename=2 \
-    -f rmdir=1 \
-    -f setxattr=1 \
-    -f stat=1 \
-    -f symlink=2 \
-    -f sync=1 \
-    -f truncate=2 \
-    -f unlink=1 \
-    -f write=4 \
-    -s $seed \
-    -m 31 -n 1000 -p 1"
-
-ITERATIONS=10
-
-_cleanup()
-{
-    cd /
-    rm -f $tmp.*
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_setup_testdir
-_require_scratch
-_require_attrs
-
-rm -f $seq.full
-umount $SCRATCH_DEV >/dev/null 2>&1
-echo "*** MKFS ***"                         >>$seq.full
-echo ""                                     >>$seq.full
-_scratch_mkfs                               >>$seq.full 2>&1 \
-    || _fail "mkfs failed"
-_scratch_mount                              >>$seq.full 2>&1 \
-    || _fail "mount failed"
-
-mkdir -p $SCRATCH_MNT/fsstress
-
-echo
-echo Running fsstress in serial:
-i=0
-while [ $i -lt $ITERATIONS ]; do
-    echo fsstress iteration: $i | tee -a $seq.full
-    $FSSTRESS_PROG \
-       -d $SCRATCH_MNT/fsstress \
-       $fss_ops -S c >>$seq.full 2>&1
-
-    let i=$i+1
-done
-
-cd /
-umount $SCRATCH_MNT
-echo 
-echo Checking filesystem
-_check_scratch_fs
-_scratch_mount
-
-status=$?
-exit
diff --git a/117.out b/117.out
deleted file mode 100644 (file)
index 1306ebc..0000000
--- a/117.out
+++ /dev/null
@@ -1,15 +0,0 @@
-QA output created by 117
-
-Running fsstress in serial:
-fsstress iteration: 0
-fsstress iteration: 1
-fsstress iteration: 2
-fsstress iteration: 3
-fsstress iteration: 4
-fsstress iteration: 5
-fsstress iteration: 6
-fsstress iteration: 7
-fsstress iteration: 8
-fsstress iteration: 9
-
-Checking filesystem
diff --git a/120 b/120
deleted file mode 100755 (executable)
index 8389925..0000000
--- a/120
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/bin/bash
-# FS QA Test No. 120
-#
-# Test noatime mount option.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2002 Silicon Graphics, 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`
-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
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux IRIX
-
-_require_scratch
-_scratch_mkfs >/dev/null 2>&1 || _fail "mkfs failed"
-
-_compare_access_times()
-{
-       original_access_time="`cat $tmp.out | sed -n '5p'|awk '{ print substr($0,0,32)}'`"
-       accessed_time="`src/lstat64 $1 | sed -n '5p'| awk '{ print substr($0,0,32)}'`"
-       echo "*** compare access times ***"
-       if [ "$original_access_time" != "$accessed_time" ]
-               then
-               echo "*** file access time updated on $2 (unexpected) ***"
-               cat $tmp.out
-               echo "---------------------------------------------------"
-               src/lstat64 $1
-               mount | grep $SCRATCH_MNT
-       fi
-
-}
-
-if ! _scratch_mount "-o noatime" >$tmp.out 2>&1
-then
-    cat $tmp.out
-    echo "!!! mount failed"
-    exit
-fi
-
-#executable file
-echo "*** copying file ***"
-cp src/lstat64 $SCRATCH_MNT
-src/lstat64 $SCRATCH_MNT/lstat64 >$tmp.out
-sleep 5
-echo "*** executing file ***"
-$SCRATCH_MNT/lstat64 $SCRATCH_MNT/lstat64 >/dev/null
-_compare_access_times $SCRATCH_MNT/lstat64 "executing file"
-
-#reading file
-echo "*** creating file ***"
-touch $SCRATCH_MNT/testfile
-src/lstat64 $SCRATCH_MNT/testfile >$tmp.out
-sleep 5
-echo "*** reading file ***"
-cat $SCRATCH_MNT/testfile >/dev/null
-_compare_access_times $SCRATCH_MNT/testfile "reading file"
-
-#writing file
-echo "*** creating file ***"
-touch $SCRATCH_MNT/testfile2
-src/lstat64 $SCRATCH_MNT/testfile2 >$tmp.out
-sleep 5
-echo "*** writing to file ***"
-echo "asdf" >> $SCRATCH_MNT/testfile2
-_compare_access_times $SCRATCH_MNT/testfile2 "writing file"
-
-
-umount $SCRATCH_MNT
-
-# success, all done
-status=0
-exit
diff --git a/120.out b/120.out
deleted file mode 100644 (file)
index c0e53a9..0000000
--- a/120.out
+++ /dev/null
@@ -1,10 +0,0 @@
-QA output created by 120
-*** copying file ***
-*** executing file ***
-*** compare access times ***
-*** creating file ***
-*** reading file ***
-*** compare access times ***
-*** creating file ***
-*** writing to file ***
-*** compare access times ***
diff --git a/123 b/123
deleted file mode 100755 (executable)
index d45c516..0000000
--- a/123
+++ /dev/null
@@ -1,78 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 123
-#
-# Make sure user cannot overwrite, append, delete or move a file created by 
-# root. Modified CXFSQA test 940960 and 940558.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd $testdir
-    rm -rf $my_test_subdir
-    cd /
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux IRIX
-
-_require_user
-
-_setup_testdir
-my_test_subdir=$testdir/123subdir
-
-# create subdir with required permissions
-mkdir -m 755 $my_test_subdir
-
-echo foo > $my_test_subdir/data_coherency.txt
-# check basic appending to a file
-echo bar >> $my_test_subdir/data_coherency.txt
-
-# try append
-_user_do "echo goo >> $my_test_subdir/data_coherency.txt" 
-
-# try overwrite 
-_user_do "echo goo > $my_test_subdir/data_coherency.txt" 
-
-# try delete
-_user_do "rm $my_test_subdir/data_coherency.txt" 
-
-# try move
-_user_do "mv $my_test_subdir/data_coherency.txt $my_test_subdir/data_coherency2.txt" 
-
-cat $my_test_subdir/data_coherency.txt
-
-
-exit
diff --git a/123.out b/123.out
deleted file mode 100644 (file)
index 5bec5f9..0000000
--- a/123.out
+++ /dev/null
@@ -1,7 +0,0 @@
-QA output created by 123
-Permission denied
-Permission denied
-Permission denied
-Permission denied
-foo
-bar
diff --git a/124 b/124
deleted file mode 100755 (executable)
index 6fbb028..0000000
--- a/124
+++ /dev/null
@@ -1,83 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 124
-#
-# Test preallocated_rw_pattern_test modified from CXFSQA test preallocated_rw_pattern_test
-#
-# pat stands for pattern.  First 8 bytes contains the 64-bit number 0,
-# second is 1, ..., until last 8 bytes (1048568-1048575) contain 131071.
-# patw preallocates the file and then writes the pattern, patr checks it
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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 /
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_setup_testdir
-_require_scratch
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-
-# Run preallo_rw_pattern on both test and scratch partitions
-for TESTFILE in $testdir/rw_pattern.tmp $SCRATCH_MNT/rw_pattern.tmp
-  do
-  count=1
-  while (( count < 101 ))
-    do
-    src/preallo_rw_pattern_writer $TESTFILE
-    src/preallo_rw_pattern_reader $TESTFILE
-    if (test $? -ne 0) then
-       echo Read/Write Pattern Test FAILED.
-       _cleanup
-       exit 1
-    fi
-    rm $TESTFILE
-    ((count=count+1))
-  done #done for count of  100
-done
-
-if (test $? -eq 0 ) then
-    status=0
-fi
-
-umount $SCRATCH_DEV
-
-_check_test_fs
-_check_scratch_fs
-
-exit 
diff --git a/124.out b/124.out
deleted file mode 100644 (file)
index 0129e81..0000000
--- a/124.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 124
diff --git a/125 b/125
deleted file mode 100755 (executable)
index c7215a3..0000000
--- a/125
+++ /dev/null
@@ -1,73 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 125
-#
-# ftruncate test, modified from CXFSQA tests cxfs_ftrunc and cxfs_trunc
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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()
-{
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_user
-
-_setup_testdir
-
-TESTDIR=$testdir/ftrunc
-TESTFILE=$TESTDIR/ftrunc.tmp
-
-[ -d $TESTDIR ] && rm -r $TESTDIR
-mkdir $TESTDIR
-
-# ftrunc must be run as a mortal user.
-touch $TESTFILE
-
-chmod a+rw $TESTDIR
-chmod a+rw $TESTFILE
-
-su $qa_user -c "./src/ftrunc -f $TESTFILE"
-
-if [ "$?" != "0" ];  then
-    echo src/ftrunc returned non 0 status!
-fi
-
-src/trunc -f $TESTFILE
-if (test $? -eq 0 ) then
-    status=0
-fi
-
-exit
diff --git a/125.out b/125.out
deleted file mode 100644 (file)
index db7afc5..0000000
--- a/125.out
+++ /dev/null
@@ -1,7 +0,0 @@
-QA output created by 125
-direct write of 1's into file
-buffered write of 2's into file
-truncate file
-sync buffered data (2's)
-iterate direct reads for 60s or until failure...
-Passed
diff --git a/126 b/126
deleted file mode 100755 (executable)
index a95c1e4..0000000
--- a/126
+++ /dev/null
@@ -1,75 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 126
-#
-# tests various file permission options modified from CXFSQA test fs_perms
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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 /
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_setup_testdir
-
-QA_FS_PERMS=$here/src/fs_perms
-
-cd $testdir
-cp $here/src/testx ./testx.file
-
-# file_perm owner_uid owner_gid tester_uid tester_gid perm_to_test expected_result pass=1
-$QA_FS_PERMS 001 99 99 12 100 x 1
-$QA_FS_PERMS 010 99 99 200 99 x 1
-$QA_FS_PERMS 100 99 99 99 500 x 1
-$QA_FS_PERMS 002 99 99 12 100 w 1
-$QA_FS_PERMS 020 99 99 200 99 w 1
-$QA_FS_PERMS 200 99 99 99 500 w 1
-$QA_FS_PERMS 004 99 99 12 100 r 1
-$QA_FS_PERMS 040 99 99 200 99 r 1
-$QA_FS_PERMS 400 99 99 99 500 r 1
-$QA_FS_PERMS 000 99 99 99 99 r 1
-$QA_FS_PERMS 000 99 99 99 99 w 1
-$QA_FS_PERMS 000 99 99 99 99 x 1
-$QA_FS_PERMS 010 99 99 99 500 x 1
-$QA_FS_PERMS 100 99 99 200 99 x 1
-$QA_FS_PERMS 020 99 99 99 500 w 1
-$QA_FS_PERMS 200 99 99 200 99 w 1
-$QA_FS_PERMS 040 99 99 99 500 r 1
-$QA_FS_PERMS 400 99 99 200 99 r 1
-
-status=0
-exit
diff --git a/126.out b/126.out
deleted file mode 100644 (file)
index 3347930..0000000
--- a/126.out
+++ /dev/null
@@ -1,19 +0,0 @@
-QA output created by 126
-x a 001 file owned by (99/99) as user/group(12/100)  PASS
-x a 010 file owned by (99/99) as user/group(200/99)  PASS
-x a 100 file owned by (99/99) as user/group(99/500)  PASS
-w a 002 file owned by (99/99) as user/group(12/100)  PASS
-w a 020 file owned by (99/99) as user/group(200/99)  PASS
-w a 200 file owned by (99/99) as user/group(99/500)  PASS
-r a 004 file owned by (99/99) as user/group(12/100)  PASS
-r a 040 file owned by (99/99) as user/group(200/99)  PASS
-r a 400 file owned by (99/99) as user/group(99/500)  PASS
-r a 000 file owned by (99/99) as user/group(99/99)  FAIL
-w a 000 file owned by (99/99) as user/group(99/99)  FAIL
-x a 000 file owned by (99/99) as user/group(99/99)  FAIL
-x a 010 file owned by (99/99) as user/group(99/500)  FAIL
-x a 100 file owned by (99/99) as user/group(200/99)  FAIL
-w a 020 file owned by (99/99) as user/group(99/500)  FAIL
-w a 200 file owned by (99/99) as user/group(200/99)  FAIL
-r a 040 file owned by (99/99) as user/group(99/500)  FAIL
-r a 400 file owned by (99/99) as user/group(200/99)  FAIL
diff --git a/127 b/127
deleted file mode 100755 (executable)
index d1101df..0000000
--- a/127
+++ /dev/null
@@ -1,124 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 127
-#
-# fsx tests modified from CXFSQA tests
-#   - fsx_00_lite
-#   - fsx_05_lite_mmap
-#   - fsx_10_std,
-#   - fsx_15_std_mmap
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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()
-{
-    rm -f $tmp.output
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-FSX_FILE_SIZE=262144
-FSX_ARGS="-q -l $FSX_FILE_SIZE -o 65536 -S 191110531 -N 100000"
-
-_fsx_lite_nommap()
-{
-    echo "=== FSX Light Mode, No Memory Mapping ==="
-    dd if=/dev/zero of=$testdir/fsx_lite_nommap bs=${FSX_FILE_SIZE} count=1 > /dev/null 2>&1
-    if ! ltp/fsx $FSX_ARGS -L -R -W $testdir/fsx_lite_nommap > $tmp.output 2>&1
-    then
-        echo "ltp/fsx $FSX_ARGS -L -R -W $testdir/fsx_lite_nommap"
-        cat $tmp.output
-        return 1
-    fi
-    cat $tmp.output
-    return 0
-}
-
-_fsx_lite_mmap()
-{
-    echo "=== FSX Light Mode, Memory Mapping ==="
-    dd if=/dev/zero of=$testdir/fsx_lite_mmap bs=${FSX_FILE_SIZE} count=1 > /dev/null 2>&1
-    if ! ltp/fsx $FSX_ARGS -L $testdir/fsx_lite_mmap > $tmp.output 2>&1
-    then
-       echo "ltp/fsx $FSX_ARGS -L fsx_lite_mmap"
-       cat $tmp.output
-       return 1
-    fi
-    cat $tmp.output
-    return 0
-}
-
-_fsx_std_nommap()
-{
-    echo "=== FSX Standard Mode, No Memory Mapping ==="
-    if ! ltp/fsx $FSX_ARGS -R -W $testdir/fsx_std_nommap > $tmp.output 2>&1
-    then
-        echo "ltp/fsx $FSX_ARGS -R -W fsx_std_nommap"
-        cat $tmp.output
-        return 1
-    fi
-    cat $tmp.output
-    return 0
-}
-
-_fsx_std_mmap()
-{
-    echo "=== FSX Standard Mode, Memory Mapping ==="
-    if ! ltp/fsx $FSX_ARGS $testdir/fsx_std_mmap > $tmp.output 2>&1
-    then
-       echo "ltp/fsx $FSX_ARGS fsx_std_mmap"
-       cat $tmp.output
-       return 1
-    fi
-    cat $tmp.output
-    return 0
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_setup_testdir
-
-_fsx_lite_nommap
-_fsx_lite_mmap
-
-_fsx_std_nommap
-_fsx_std_mmap
-
-#flush cache after write
-FSX_ARGS="-f $FSX_ARGS"
-_fsx_std_nommap
-_fsx_std_mmap
-
-
-status=0
-_cleanup
-exit
diff --git a/127.out b/127.out
deleted file mode 100644 (file)
index 120c20a..0000000
--- a/127.out
+++ /dev/null
@@ -1,13 +0,0 @@
-QA output created by 127
-=== FSX Light Mode, No Memory Mapping ===
-All operations completed A-OK!
-=== FSX Light Mode, Memory Mapping ===
-All operations completed A-OK!
-=== FSX Standard Mode, No Memory Mapping ===
-All operations completed A-OK!
-=== FSX Standard Mode, Memory Mapping ===
-All operations completed A-OK!
-=== FSX Standard Mode, No Memory Mapping ===
-All operations completed A-OK!
-=== FSX Standard Mode, Memory Mapping ===
-All operations completed A-OK!
diff --git a/128 b/128
deleted file mode 100755 (executable)
index 85d0f45..0000000
--- a/128
+++ /dev/null
@@ -1,66 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 128
-#
-# Test nosuid mount option modified from CXFSQA test mount_option_nosuid
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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 /
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_setup_testdir
-_require_scratch
-_require_user
-
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount "-o nosuid"
-
-mkdir $SCRATCH_MNT/nosuid
-cp `which ls` $SCRATCH_MNT
-chmod 700 $SCRATCH_MNT/nosuid
-chmod 4755 $SCRATCH_MNT/ls
-
-su -s/bin/bash - $qa_user -c "$SCRATCH_MNT/ls $SCRATCH_MNT/nosuid >/dev/null 2>&1"
-if [ $? -eq 0 ] ; then
-       echo "Error: we shouldn't be able to ls the directory"
-fi
-umount $SCRATCH_DEV
-
-status=0
-exit
diff --git a/128.out b/128.out
deleted file mode 100644 (file)
index 34f24a3..0000000
--- a/128.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 128
diff --git a/129 b/129
deleted file mode 100755 (executable)
index 18d891b..0000000
--- a/129
+++ /dev/null
@@ -1,69 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 129
-#
-# looptests created from CXFSQA test looptest
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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 /
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-echo_and_run()
-{
-    echo "$1"
-    $1
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_scratch
-_require_sparse_files
-
-_setup_testdir
-
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount "-o nosuid"
-
-mkdir $SCRATCH_MNT/looptest
-
-src/looptest -i 100000 -r -w -b 8192 -s $SCRATCH_MNT/looptest/looptest1.tst
-src/looptest -i 10000 -t -r -w -s -b 102400 $SCRATCH_MNT/looptest/looptest2.tst
-src/looptest -i 50000 -r -w -b 256 -s $SCRATCH_MNT/looptest/looptest3.tst
-src/looptest -i 2000 -o -r -w -b 8192 -s $SCRATCH_MNT/looptest/looptest4.tst
-
-status=0
-exit
diff --git a/129.out b/129.out
deleted file mode 100644 (file)
index 55b1902..0000000
--- a/129.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 129
diff --git a/130 b/130
deleted file mode 100755 (executable)
index 943df72..0000000
--- a/130
+++ /dev/null
@@ -1,258 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 130
-#
-# xfs_io vector read/write and trunc tests. modified from cxfsqa tests
-# - unixfile_basic_block_hole
-# - unixfile_buffer_direct_coherency
-# - unixfile_direct_rw
-# - unixfile_eof_direct
-# - unixfile_fsb_edge
-# - unixfile_open_append
-# - unixfile_open_trunc
-# - unixfile_small_vector_async_rw
-# - unixfile_small_vector_sync_rw
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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 /
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux IRIX
-
-_require_scratch
-_require_sparse_files
-
-_setup_testdir
-
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-
-echo "End-of-file zeroing with direct I/O"
-xfs_io -F -f -d -t -c "pwrite -S 0x63 0 65536" \
-    -c "truncate 1" \
-    -c "pwrite -S 0x41 65536 65536" \
-    -c "pread -v 0 131072" \
-    $SCRATCH_MNT/eof-zeroing_direct | _filter_xfs_io_unique
-
-echo
-echo "Basic Block Hole test"
-xfs_io -F -f -t -c "truncate 8192" \
-    -c "pread -v 5000 3000" \
-    $SCRATCH_MNT/blackhole | _filter_xfs_io_unique
-
-echo
-echo "Test buffered and direct IO coherency"
-xfs_io -F -f -t -c "pwrite -S 0x41 8000 1000" \
-    -c "pwrite -S 0x57 4000 1000" \
-    $SCRATCH_MNT/buff_direct_coherency | _filter_xfs_io_unique
-
-xfs_io -F -d -c "pwrite -S 0x78 20480 4096"\
-    -c "pwrite -S 0x79 4096 4096"\
-    $SCRATCH_MNT/buff_direct_coherency | _filter_xfs_io_unique
-
-xfs_io -F -c "pread -v 0 9000"\
-    $SCRATCH_MNT/buff_direct_coherency | _filter_xfs_io_unique
-
-echo
-echo "Test direct read and write"
-xfs_io -F -f -d -t -c "pwrite -S 0x78 0 65536"\
-    -c "pread -v 0 65536"\
-    -c "pwrite -S 0x46 65536 6553600"\
-    -c "pread -v 0 6619136"\
-    $SCRATCH_MNT/direct_io | _filter_xfs_io_unique
-
-xfs_io -F -d -c "pread -v 0 6619136"\
-    $SCRATCH_MNT/direct_io | _filter_xfs_io_unique
-
-xfs_io -F -f -d -t -c "pwrite -S 0x61 0 65536"\
-    -c "pread -v 0 65536"\
-    -c "pwrite -S 0x62 65536 131072"\
-    -c "pread -v 0 131072"\
-    $SCRATCH_MNT/async_direct_io | _filter_xfs_io_unique
-
-xfs_io -F -d -c "pread -v 0 131072"\
-    $SCRATCH_MNT/async_direct_io | _filter_xfs_io_unique
-
-echo
-echo "FSB Edge test"
-xfs_io -F -f -t -c "truncate 131072"\
-    -c "pwrite -S 0x5F 0 131072"\
-    -c "truncate 0"\
-    -c "truncate 131072"\
-    -c "pwrite -S 0x61 65535 2"\
-    -c "pread -v 0 131072"\
-    $SCRATCH_MNT/fsb_edge_test | _filter_xfs_io_unique
-
-echo
-echo "Open Trunk test (O_TRUNC)"
-for n in 0 1 2 3 4
-do
-    xfs_io -F -f -t -c "pread -v 0 100" $SCRATCH_MNT/$n | _filter_xfs_io_unique
-
-    echo "Test" > $SCRATCH_MNT/$n
-    xfs_io -F -f -t -c "pread -v 0 100" $SCRATCH_MNT/$n | _filter_xfs_io_unique
-    cat $SCRATCH_MNT/$n
-done
-echo "DONE"
-
-echo
-echo "Append test"
-echo "append to me" > $SCRATCH_MNT/append
-xfs_io -F -a -c "pwrite -S 0x61 0 10" \
-    -c "pread -v 0 24"\
-    $SCRATCH_MNT/append | _filter_xfs_io_unique
-
-echo
-echo "Small Vector Async"
-echo "abcdefghijklmnopqrstuvwxyz" > $SCRATCH_MNT/small_vector_async
-xfs_io -F -f -c "pread -v 0 1"\
-    -c "pread -v 1 1"\
-    -c "pread -v 2 1"\
-    -c "pread -v 3 1"\
-    -c "pread -v 4 1"\
-    -c "pread -v 5 1"\
-    -c "pread -v 6 1"\
-    -c "pread -v 7 1"\
-    -c "pread -v 8 1"\
-    -c "pread -v 9 1"\
-    -c "pread -v 10 1"\
-    -c "pread -v 11 1"\
-    -c "pread -v 12 1"\
-    -c "pread -v 13 13"\
-    -c "pwrite -S 0x61 4090 1"\
-    -c "pwrite -S 0x62 4091 1"\
-    -c "pwrite -S 0x63 4092 1"\
-    -c "pwrite -S 0x64 4093 1"\
-    -c "pwrite -S 0x65 4094 1"\
-    -c "pwrite -S 0x66 4095 1"\
-    -c "pwrite -S 0x67 4096 1"\
-    -c "pwrite -S 0x68 4097 1"\
-    -c "pwrite -S 0x69 4098 1"\
-    -c "pwrite -S 0x6A 4099 1"\
-    -c "pwrite -S 0x6B 4100 1"\
-    -c "pwrite -S 0x6C 4101 1"\
-    -c "pwrite -S 0x6D 4102 1"\
-    -c "pwrite -S 0x6E 4103 1"\
-    -c "pwrite -S 0x6F 4104 1"\
-    -c "pwrite -S 0x70 4105 1"\
-    -c "pread -v 4090 4"\
-    -c "pread -v 4094 4"\
-    -c "pread -v 4098 4"\
-    -c "pread -v 4102 4"\
-    -c "pwrite -S 0x61 10000000000 1"\
-    -c "pwrite -S 0x62 10000000001 1"\
-    -c "pwrite -S 0x63 10000000002 1"\
-    -c "pwrite -S 0x64 10000000003 1"\
-    -c "pwrite -S 0x65 10000000004 1"\
-    -c "pwrite -S 0x66 10000000005 1"\
-    -c "pwrite -S 0x67 10000000006 1"\
-    -c "pwrite -S 0x68 10000000007 1"\
-    -c "pwrite -S 0x69 10000000008 1"\
-    -c "pwrite -S 0x6A 10000000009 1"\
-    -c "pwrite -S 0x6B 10000000010 1"\
-    -c "pwrite -S 0x6C 10000000011 1"\
-    -c "pwrite -S 0x6D 10000000012 1"\
-    -c "pwrite -S 0x6E 10000000013 1"\
-    -c "pwrite -S 0x6F 10000000014 1"\
-    -c "pwrite -S 0x70 10000000015 1"\
-    -c "pread -v 10000000000 4"\
-    -c "pread -v 10000000004 4"\
-    -c "pread -v 10000000008 4"\
-    -c "pread -v 10000000012 4"\
-    $SCRATCH_MNT/small_vector_async | _filter_xfs_io_unique
-
-echo
-echo "Small Vector Sync"
-echo "abcdefghijklmnopqrstuvwxyz" > $SCRATCH_MNT/small_vector_async
-xfs_io -F -f -s -c "pread -v 0 1"\
-    -c "pread -v 1 1"\
-    -c "pread -v 2 1"\
-    -c "pread -v 3 1"\
-    -c "pread -v 4 1"\
-    -c "pread -v 5 1"\
-    -c "pread -v 6 1"\
-    -c "pread -v 7 1"\
-    -c "pread -v 8 1"\
-    -c "pread -v 9 1"\
-    -c "pread -v 10 1"\
-    -c "pread -v 11 1"\
-    -c "pread -v 12 1"\
-    -c "pread -v 13 13"\
-    -c "pwrite -S 0x61 4090 1"\
-    -c "pwrite -S 0x62 4091 1"\
-    -c "pwrite -S 0x63 4092 1"\
-    -c "pwrite -S 0x64 4093 1"\
-    -c "pwrite -S 0x65 4094 1"\
-    -c "pwrite -S 0x66 4095 1"\
-    -c "pwrite -S 0x67 4096 1"\
-    -c "pwrite -S 0x68 4097 1"\
-    -c "pwrite -S 0x69 4098 1"\
-    -c "pwrite -S 0x6A 4099 1"\
-    -c "pwrite -S 0x6B 4100 1"\
-    -c "pwrite -S 0x6C 4101 1"\
-    -c "pwrite -S 0x6D 4102 1"\
-    -c "pwrite -S 0x6E 4103 1"\
-    -c "pwrite -S 0x6F 4104 1"\
-    -c "pwrite -S 0x70 4105 1"\
-    -c "pread -v 4090 4"\
-    -c "pread -v 4094 4"\
-    -c "pread -v 4098 4"\
-    -c "pread -v 4102 4"\
-    -c "pwrite -S 0x61 10000000000 1"\
-    -c "pwrite -S 0x62 10000000001 1"\
-    -c "pwrite -S 0x63 10000000002 1"\
-    -c "pwrite -S 0x64 10000000003 1"\
-    -c "pwrite -S 0x65 10000000004 1"\
-    -c "pwrite -S 0x66 10000000005 1"\
-    -c "pwrite -S 0x67 10000000006 1"\
-    -c "pwrite -S 0x68 10000000007 1"\
-    -c "pwrite -S 0x69 10000000008 1"\
-    -c "pwrite -S 0x6A 10000000009 1"\
-    -c "pwrite -S 0x6B 10000000010 1"\
-    -c "pwrite -S 0x6C 10000000011 1"\
-    -c "pwrite -S 0x6D 10000000012 1"\
-    -c "pwrite -S 0x6E 10000000013 1"\
-    -c "pwrite -S 0x6F 10000000014 1"\
-    -c "pwrite -S 0x70 10000000015 1"\
-    -c "pread -v 10000000000 4"\
-    -c "pread -v 10000000004 4"\
-    -c "pread -v 10000000008 4"\
-    -c "pread -v 10000000012 4"\
-    $SCRATCH_MNT/small_vector_async | _filter_xfs_io_unique
-
-status=0
-exit
diff --git a/130.out b/130.out
deleted file mode 100644 (file)
index e4a2495..0000000
--- a/130.out
+++ /dev/null
@@ -1,392 +0,0 @@
-QA output created by 130
-End-of-file zeroing with direct I/O
-wrote 65536/65536 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 65536/65536 bytes at offset 65536
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  c...............
-00000010:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-00010000:  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
-*
-read 131072/131072 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-
-Basic Block Hole test
-00001388:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-00001f38:  00 00 00 00 00 00 00 00  ........
-read 3000/3000 bytes at offset 5000
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-
-Test buffered and direct IO coherency
-wrote 1000/1000 bytes at offset 8000
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1000/1000 bytes at offset 4000
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 4096/4096 bytes at offset 20480
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 4096/4096 bytes at offset 4096
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-00000fa0:  57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57  WWWWWWWWWWWWWWWW
-*
-00001000:  79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79  yyyyyyyyyyyyyyyy
-*
-00002000:  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
-*
-00002320:  41 41 41 41 41 41 41 41  AAAAAAAA
-read 9000/9000 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-
-Test direct read and write
-wrote 65536/65536 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
-*
-read 65536/65536 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 6553600/6553600 bytes at offset 65536
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
-*
-00010000:  46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46  FFFFFFFFFFFFFFFF
-*
-read 6619136/6619136 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
-*
-00010000:  46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46  FFFFFFFFFFFFFFFF
-*
-read 6619136/6619136 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 65536/65536 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61  aaaaaaaaaaaaaaaa
-*
-read 65536/65536 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 131072/131072 bytes at offset 65536
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61  aaaaaaaaaaaaaaaa
-*
-00010000:  62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62  bbbbbbbbbbbbbbbb
-*
-read 131072/131072 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61  aaaaaaaaaaaaaaaa
-*
-00010000:  62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62  bbbbbbbbbbbbbbbb
-*
-read 131072/131072 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-
-FSB Edge test
-wrote 131072/131072 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 2/2 bytes at offset 65535
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-0000fff0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61  ...............a
-00010000:  61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  a...............
-00010010:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-read 131072/131072 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-
-Open Trunk test (O_TRUNC)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-read 0/100 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-DONE
-
-Append test
-wrote 10/10 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  61 70 70 65 6e 64 20 74 6f 20 6d 65 0a 61 61 61  append.to.me.aaa
-00000010:  61 61 61 61 61 61 61  aaaaaaa
-read 23/24 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-
-Small Vector Async
-00000000:  61  a
-read 1/1 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000001:  62  b
-read 1/1 bytes at offset 1
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000002:  63  c
-read 1/1 bytes at offset 2
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000003:  64  d
-read 1/1 bytes at offset 3
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000004:  65  e
-read 1/1 bytes at offset 4
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000005:  66  f
-read 1/1 bytes at offset 5
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000006:  67  g
-read 1/1 bytes at offset 6
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000007:  68  h
-read 1/1 bytes at offset 7
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000008:  69  i
-read 1/1 bytes at offset 8
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000009:  6a  j
-read 1/1 bytes at offset 9
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-0000000a:  6b  k
-read 1/1 bytes at offset 10
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-0000000b:  6c  l
-read 1/1 bytes at offset 11
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-0000000c:  6d  m
-read 1/1 bytes at offset 12
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-0000000d:  6e 6f 70 71 72 73 74 75 76 77 78 79 7a  nopqrstuvwxyz
-read 13/13 bytes at offset 13
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4090
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4091
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4092
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4093
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4094
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4095
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4096
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4097
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4098
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4099
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4100
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4101
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4102
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4103
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4104
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4105
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000ffa:  61 62 63 64  abcd
-read 4/4 bytes at offset 4090
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000ffe:  65 66 67 68  efgh
-read 4/4 bytes at offset 4094
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001002:  69 6a 6b 6c  ijkl
-read 4/4 bytes at offset 4098
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001006:  6d 6e 6f 70  mnop
-read 4/4 bytes at offset 4102
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000000
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000001
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000002
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000003
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000004
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000005
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000006
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000007
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000008
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000009
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000010
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000011
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000012
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000013
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000014
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000015
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-2540be400:  61 62 63 64  abcd
-read 4/4 bytes at offset 10000000000
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-2540be404:  65 66 67 68  efgh
-read 4/4 bytes at offset 10000000004
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-2540be408:  69 6a 6b 6c  ijkl
-read 4/4 bytes at offset 10000000008
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-2540be40c:  6d 6e 6f 70  mnop
-read 4/4 bytes at offset 10000000012
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-
-Small Vector Sync
-00000000:  61  a
-read 1/1 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000001:  62  b
-read 1/1 bytes at offset 1
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000002:  63  c
-read 1/1 bytes at offset 2
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000003:  64  d
-read 1/1 bytes at offset 3
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000004:  65  e
-read 1/1 bytes at offset 4
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000005:  66  f
-read 1/1 bytes at offset 5
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000006:  67  g
-read 1/1 bytes at offset 6
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000007:  68  h
-read 1/1 bytes at offset 7
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000008:  69  i
-read 1/1 bytes at offset 8
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000009:  6a  j
-read 1/1 bytes at offset 9
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-0000000a:  6b  k
-read 1/1 bytes at offset 10
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-0000000b:  6c  l
-read 1/1 bytes at offset 11
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-0000000c:  6d  m
-read 1/1 bytes at offset 12
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-0000000d:  6e 6f 70 71 72 73 74 75 76 77 78 79 7a  nopqrstuvwxyz
-read 13/13 bytes at offset 13
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4090
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4091
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4092
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4093
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4094
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4095
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4096
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4097
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4098
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4099
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4100
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4101
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4102
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4103
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4104
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 4105
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000ffa:  61 62 63 64  abcd
-read 4/4 bytes at offset 4090
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000ffe:  65 66 67 68  efgh
-read 4/4 bytes at offset 4094
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001002:  69 6a 6b 6c  ijkl
-read 4/4 bytes at offset 4098
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001006:  6d 6e 6f 70  mnop
-read 4/4 bytes at offset 4102
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000000
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000001
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000002
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000003
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000004
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000005
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000006
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000007
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000008
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000009
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000010
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000011
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000012
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000013
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000014
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1/1 bytes at offset 10000000015
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-2540be400:  61 62 63 64  abcd
-read 4/4 bytes at offset 10000000000
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-2540be404:  65 66 67 68  efgh
-read 4/4 bytes at offset 10000000004
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-2540be408:  69 6a 6b 6c  ijkl
-read 4/4 bytes at offset 10000000008
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-2540be40c:  6d 6e 6f 70  mnop
-read 4/4 bytes at offset 10000000012
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
diff --git a/131 b/131
deleted file mode 100755 (executable)
index 176c8b4..0000000
--- a/131
+++ /dev/null
@@ -1,81 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 131
-#
-# lock test created from CXFSQA test lockfile_simple
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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()
-{
-    kill $locktest_pid2 2&>1 /dev/null
-    kill $locktest_pid1 2&>1 /dev/null
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_setup_testdir
-
-TESTFILE=$testdir/lock_file
-
-# Grab a port which is hopefully unused
-if [ $$ -gt 1024 -a $$ -lt 32000 ]; then
-    PORT=$$
-elif [ $$ -lt 1024 ]; then
-    PORT=$(($$+1024))
-elif [ $$ -gt 32000 ]; then
-    PORT=$(($$%30000+1024))
-fi
-
-# Start the server
-src/locktest -p $PORT $TESTFILE > $testdir/server.out 2>&1 &
-locktest_pid1=$!
-
-sleep 1
-
-# Start the client
-src/locktest -p $PORT -h localhost $TESTFILE > $testdir/client.out 2>&1
-locktest_pid2=$!
-result=$?
-if [ $result -eq 0 ]; then
-    echo success!
-else
-    echo "Client reported failure ($result)"
-    cat $testdir/*.out
-    _cleanup
-    exit $status
-fi
-
-status=0
-exit
diff --git a/131.out b/131.out
deleted file mode 100644 (file)
index aef9f6c..0000000
--- a/131.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 131
-success!
diff --git a/132 b/132
deleted file mode 100755 (executable)
index 98229a9..0000000
--- a/132
+++ /dev/null
@@ -1,212 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 132
-#
-# xfs_io aligned vector rw created from CXFSQA test
-# unixfile_vector_aligned_rw
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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 /
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux IRIX
-
-_setup_testdir
-_require_scratch
-
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-
-xfs_io -F -f -t -c "pwrite -S 0x63 0 512" \
-    -c "pwrite -S 0x64 512 512" \
-    -c "pwrite -S 0x65 1024 512" \
-    -c "pwrite -S 0x66 1536 512" \
-    -c "pwrite -S 0x67 2048 512" \
-    -c "pwrite -S 0x68 2560 512" \
-    -c "pwrite -S 0x69 3072 512" \
-    -c "pwrite -S 0x6A 3584 512" \
-    -c "pread -v 0 512" \
-    -c "pread -v 512 512" \
-    -c "pread -v 1024 512" \
-    -c "pread -v 1536 512" \
-    -c "pread -v 2048 512" \
-    -c "pread -v 2560 512" \
-    -c "pread -v 3072 512" \
-    -c "pread -v 3584 512" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x63 4096 1024" \
-    -c "pwrite -S 0x6B 5120 1024" \
-    -c "pwrite -S 0x6C 6144 1024" \
-    -c "pwrite -S 0x6D 7168 1024" \
-    -c "pread -v 0 1024" \
-    -c "pread -v 1024 1024" \
-    -c "pread -v 2048 1024" \
-    -c "pread -v 3072 1024" \
-    -c "pread -v 4096 1024" \
-    -c "pread -v 5120 1024" \
-    -c "pread -v 6144 1024" \
-    -c "pread -v 7168 1024" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x6E 8192 2048" \
-    -c "pwrite -S 0x6F 10240 2048" \
-    -c "pread -v 0 2048" \
-    -c "pread -v 2048 2048" \
-    -c "pread -v 4096 2048" \
-    -c "pread -v 6144 2048" \
-    -c "pread -v 8192 2048" \
-    -c "pread -v 10240 2048" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x70 12288 4096" \
-    -c "pread -v 0 4096" \
-    -c "pread -v 4096 4096" \
-    -c "pread -v 8192 4096" \
-    -c "pread -v 12288 4096" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x71 16384 8192" \
-    -c "pwrite -S 0x72 24576 8192" \
-    -c "pread -v 0 8192" \
-    -c "pread -v 8192 8192" \
-    -c "pread -v 8192 8192" \
-    -c "pread -v 16384 8192" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x73 32768 16384" \
-    -c "pwrite -S 0x74 49152 16384" \
-    -c "pread -v 0 16384" \
-    -c "pread -v 16384 16384" \
-    -c "pread -v 32768 16384" \
-    -c "pread -v 49152 16384" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x75 65536 32768" \
-    -c "pwrite -S 0x76 98304 32768" \
-    -c "pread -v 0 32768" \
-    -c "pread -v 32768 32768" \
-    -c "pread -v 65536 32768" \
-    -c "pread -v 98304 32768" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x76 131072 65536" \
-    -c "pwrite -S 0x77 196608 65536" \
-    -c "pread -v 0 65536" \
-    -c "pread -v 65536 65536" \
-    -c "pread -v 131072 65536" \
-    -c "pread -v 196608 65536" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x76 262144 131072" \
-    -c "pwrite -S 0x77 393216 131072" \
-    -c "pread -v 0 131072" \
-    -c "pread -v 131072 131072" \
-    -c "pread -v 262144 131072" \
-    -c "pread -v 393216 131072" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x76 524288 524288" \
-    -c "pwrite -S 0x77 1048576 524288" \
-    -c "pread -v 0 524288" \
-    -c "pread -v 524288 524288" \
-    -c "pread -v 1048576 524288" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x32 1048576 1048576" \
-    -c "pwrite -S 0x33 2097152 1048576" \
-    -c "pwrite -S 0x34 3145728 1048576" \
-    -c "pwrite -S 0x35 4194304 1048576" \
-    -c "pwrite -S 0x36 5242880 1048576" \
-    -c "pwrite -S 0x37 6291456 1048576" \
-    -c "pwrite -S 0x38 7340032 1048576" \
-    -c "pwrite -S 0x39 8388608 1048576" \
-    -c "pread -v 0 1048576" \
-    -c "pread -v 1048576 1048576" \
-    -c "pread -v 2097152 1048576" \
-    -c "pread -v 3145728 1048576" \
-    -c "pread -v 4194304 1048576" \
-    -c "pread -v 5242880 1048576" \
-    -c "pread -v 6291456 1048576" \
-    -c "pread -v 7340032 1048576" \
-    -c "pread -v 8388608 1048576" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x32 1048576 1048576" \
-    -c "pwrite -S 0x33 2097152 1048576" \
-    -c "pwrite -S 0x34 3145728 1048576" \
-    -c "pwrite -S 0x35 4194304 1048576" \
-    -c "pwrite -S 0x36 5242880 1048576" \
-    -c "pwrite -S 0x37 6291456 1048576" \
-    -c "pwrite -S 0x38 7340032 1048576" \
-    -c "pwrite -S 0x39 8388608 1048576" \
-    -c "pwrite -S 0x3A 9437184 1048576" \
-    -c "pread -v 0 1048576" \
-    -c "pread -v 1048576 1048576" \
-    -c "pread -v 2097152 1048576" \
-    -c "pread -v 3145728 1048576" \
-    -c "pread -v 4194304 1048576" \
-    -c "pread -v 5242880 1048576" \
-    -c "pread -v 6291456 1048576" \
-    -c "pread -v 7340032 1048576" \
-    -c "pread -v 8388608 1048576" \
-    -c "pread -v 9437184 1048576" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-xfs_io -F -f -c "pwrite -S 0x92 10485760 10485760" \
-    -c "pwrite -S 0x93 20971520 10485760" \
-    -c "pwrite -S 0x94 31457280 10485760" \
-    -c "pwrite -S 0x95 41943040 10485760" \
-    -c "pwrite -S 0x96 52428800 10485760" \
-    -c "pwrite -S 0x97 62914560 10485760" \
-    -c "pwrite -S 0x98 73400320 10485760" \
-    -c "pwrite -S 0x99 83886080 10485760" \
-    -c "pwrite -S 0x9A 94371840 10485760" \
-    -c "pread -v 0 10485760" \
-    -c "pread -v 10485760 10485760" \
-    -c "pread -v 20971520 10485760" \
-    -c "pread -v 31457280 10485760" \
-    -c "pread -v 41943040 10485760" \
-    -c "pread -v 52428800 10485760" \
-    -c "pread -v 62914560 10485760" \
-    -c "pread -v 73400320 10485760" \
-    -c "pread -v 83886080 10485760" \
-    -c "pread -v 94371840 10485760" \
-    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
-
-status=0
-exit
diff --git a/132.out b/132.out
deleted file mode 100644 (file)
index ab04044..0000000
--- a/132.out
+++ /dev/null
@@ -1,847 +0,0 @@
-QA output created by 132
-wrote 512/512 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 512/512 bytes at offset 512
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 512/512 bytes at offset 1024
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 512/512 bytes at offset 1536
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 512/512 bytes at offset 2048
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 512/512 bytes at offset 2560
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 512/512 bytes at offset 3072
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 512/512 bytes at offset 3584
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-read 512/512 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-read 512/512 bytes at offset 512
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-read 512/512 bytes at offset 1024
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-read 512/512 bytes at offset 1536
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-read 512/512 bytes at offset 2048
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-read 512/512 bytes at offset 2560
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-read 512/512 bytes at offset 3072
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-read 512/512 bytes at offset 3584
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1024/1024 bytes at offset 4096
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1024/1024 bytes at offset 5120
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1024/1024 bytes at offset 6144
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1024/1024 bytes at offset 7168
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-read 1024/1024 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-read 1024/1024 bytes at offset 1024
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-read 1024/1024 bytes at offset 2048
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-read 1024/1024 bytes at offset 3072
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-read 1024/1024 bytes at offset 4096
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-read 1024/1024 bytes at offset 5120
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-read 1024/1024 bytes at offset 6144
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-read 1024/1024 bytes at offset 7168
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 2048/2048 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 2048/2048 bytes at offset 10240
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-read 2048/2048 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-read 2048/2048 bytes at offset 2048
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-read 2048/2048 bytes at offset 4096
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-read 2048/2048 bytes at offset 6144
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-read 2048/2048 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-read 2048/2048 bytes at offset 10240
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 4096/4096 bytes at offset 12288
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-read 4096/4096 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-read 4096/4096 bytes at offset 4096
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-read 4096/4096 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-read 4096/4096 bytes at offset 12288
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 16384
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 8192/8192 bytes at offset 24576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-read 8192/8192 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-read 8192/8192 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-read 8192/8192 bytes at offset 8192
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
-*
-read 8192/8192 bytes at offset 16384
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 16384/16384 bytes at offset 32768
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 16384/16384 bytes at offset 49152
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-read 16384/16384 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
-*
-00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
-*
-read 16384/16384 bytes at offset 16384
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
-*
-read 16384/16384 bytes at offset 32768
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
-*
-read 16384/16384 bytes at offset 49152
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 32768/32768 bytes at offset 65536
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 32768/32768 bytes at offset 98304
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
-*
-00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
-*
-read 32768/32768 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
-*
-0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
-*
-read 32768/32768 bytes at offset 32768
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
-*
-read 32768/32768 bytes at offset 65536
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-read 32768/32768 bytes at offset 98304
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 65536/65536 bytes at offset 131072
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 65536/65536 bytes at offset 196608
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
-*
-00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
-*
-00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
-*
-0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
-*
-read 65536/65536 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
-*
-00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-read 65536/65536 bytes at offset 65536
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00020000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-read 65536/65536 bytes at offset 131072
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-read 65536/65536 bytes at offset 196608
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 131072/131072 bytes at offset 262144
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 131072/131072 bytes at offset 393216
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
-*
-00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
-*
-00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
-*
-0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
-*
-00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
-*
-00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-read 131072/131072 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00020000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-read 131072/131072 bytes at offset 131072
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-read 131072/131072 bytes at offset 262144
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-read 131072/131072 bytes at offset 393216
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 524288/524288 bytes at offset 524288
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 524288/524288 bytes at offset 1048576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
-*
-00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
-*
-00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
-*
-0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
-*
-00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
-*
-00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-read 524288/524288 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00080000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-read 524288/524288 bytes at offset 524288
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00100000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-read 524288/524288 bytes at offset 1048576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 1048576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 2097152
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 3145728
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 4194304
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 5242880
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 6291456
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 7340032
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 8388608
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
-*
-00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
-*
-00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
-*
-0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
-*
-00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
-*
-00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-00080000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-read 1048576/1048576 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00100000:  32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32  2222222222222222
-*
-read 1048576/1048576 bytes at offset 1048576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00200000:  33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33  3333333333333333
-*
-read 1048576/1048576 bytes at offset 2097152
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00300000:  34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34  4444444444444444
-*
-read 1048576/1048576 bytes at offset 3145728
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00400000:  35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35  5555555555555555
-*
-read 1048576/1048576 bytes at offset 4194304
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00500000:  36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36  6666666666666666
-*
-read 1048576/1048576 bytes at offset 5242880
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00600000:  37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37  7777777777777777
-*
-read 1048576/1048576 bytes at offset 6291456
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00700000:  38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38  8888888888888888
-*
-read 1048576/1048576 bytes at offset 7340032
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00800000:  39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39  9999999999999999
-*
-read 1048576/1048576 bytes at offset 8388608
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 1048576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 2097152
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 3145728
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 4194304
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 5242880
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 6291456
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 7340032
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 8388608
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 1048576/1048576 bytes at offset 9437184
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
-*
-00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
-*
-00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
-*
-0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
-*
-00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
-*
-00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-00080000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-read 1048576/1048576 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00100000:  32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32  2222222222222222
-*
-read 1048576/1048576 bytes at offset 1048576
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00200000:  33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33  3333333333333333
-*
-read 1048576/1048576 bytes at offset 2097152
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00300000:  34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34  4444444444444444
-*
-read 1048576/1048576 bytes at offset 3145728
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00400000:  35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35  5555555555555555
-*
-read 1048576/1048576 bytes at offset 4194304
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00500000:  36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36  6666666666666666
-*
-read 1048576/1048576 bytes at offset 5242880
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00600000:  37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37  7777777777777777
-*
-read 1048576/1048576 bytes at offset 6291456
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00700000:  38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38  8888888888888888
-*
-read 1048576/1048576 bytes at offset 7340032
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00800000:  39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39  9999999999999999
-*
-read 1048576/1048576 bytes at offset 8388608
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00900000:  3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a  ................
-*
-read 1048576/1048576 bytes at offset 9437184
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 10485760/10485760 bytes at offset 10485760
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 10485760/10485760 bytes at offset 20971520
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 10485760/10485760 bytes at offset 31457280
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 10485760/10485760 bytes at offset 41943040
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 10485760/10485760 bytes at offset 52428800
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 10485760/10485760 bytes at offset 62914560
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 10485760/10485760 bytes at offset 73400320
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 10485760/10485760 bytes at offset 83886080
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 10485760/10485760 bytes at offset 94371840
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
-*
-00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
-*
-00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
-*
-00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
-*
-00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
-*
-00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
-*
-00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
-*
-00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
-*
-00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
-*
-00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
-*
-00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
-*
-00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
-*
-00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
-*
-00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
-*
-00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
-*
-00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
-*
-00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
-*
-0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
-*
-00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
-*
-00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
-*
-00080000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
-*
-00100000:  32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32  2222222222222222
-*
-00200000:  33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33  3333333333333333
-*
-00300000:  34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34  4444444444444444
-*
-00400000:  35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35  5555555555555555
-*
-00500000:  36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36  6666666666666666
-*
-00600000:  37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37  7777777777777777
-*
-00700000:  38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38  8888888888888888
-*
-00800000:  39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39  9999999999999999
-*
-00900000:  3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a  ................
-*
-read 10485760/10485760 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00a00000:  92 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92  ................
-*
-read 10485760/10485760 bytes at offset 10485760
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-01400000:  93 93 93 93 93 93 93 93 93 93 93 93 93 93 93 93  ................
-*
-read 10485760/10485760 bytes at offset 20971520
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-01e00000:  94 94 94 94 94 94 94 94 94 94 94 94 94 94 94 94  ................
-*
-read 10485760/10485760 bytes at offset 31457280
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-02800000:  95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95  ................
-*
-read 10485760/10485760 bytes at offset 41943040
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-03200000:  96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96  ................
-*
-read 10485760/10485760 bytes at offset 52428800
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-03c00000:  97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97  ................
-*
-read 10485760/10485760 bytes at offset 62914560
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-04600000:  98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98  ................
-*
-read 10485760/10485760 bytes at offset 73400320
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-05000000:  99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99  ................
-*
-read 10485760/10485760 bytes at offset 83886080
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-05a00000:  9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a  ................
-*
-read 10485760/10485760 bytes at offset 94371840
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
diff --git a/133 b/133
deleted file mode 100755 (executable)
index ec225f3..0000000
--- a/133
+++ /dev/null
@@ -1,77 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 133
-#
-# Concurrent I/O to same file to ensure no deadlocks
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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()
-{
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux IRIX
-
-_setup_testdir
-
-echo "Buffered writer, buffered reader"
-xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test > /dev/null
-xfs_io -F -f -c 'pwrite -b 64k 0 512m' $testdir/io_test >/dev/null &
-xfs_io -F -c 'pread -b 64k 0 512m' $testdir/io_test > /dev/null
-wait
-rm $testdir/io_test
-
-echo "Direct writer, buffered reader"
-xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test > /dev/null
-xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test >/dev/null &
-xfs_io -F -c 'pread -b 64k 0 512m' $testdir/io_test > /dev/null
-wait
-rm $testdir/io_test
-
-echo "Buffered writer, direct reader"
-xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test > /dev/null
-xfs_io -F -f -c 'pwrite -b 64k 0 512m' $testdir/io_test >/dev/null &
-xfs_io -F -d -c 'pread -b 64k 0 512m' $testdir/io_test > /dev/null
-wait
-rm $testdir/io_test
-
-echo "Direct writer, direct reader"
-xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test > /dev/null
-xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test >/dev/null &
-xfs_io -F -d -c 'pread -b 64k 0 512m' $testdir/io_test > /dev/null
-wait
-rm $testdir/io_test
-
-status=0
-exit 
diff --git a/133.out b/133.out
deleted file mode 100644 (file)
index 205e7dd..0000000
--- a/133.out
+++ /dev/null
@@ -1,5 +0,0 @@
-QA output created by 133
-Buffered writer, buffered reader
-Direct writer, buffered reader
-Buffered writer, direct reader
-Direct writer, direct reader
diff --git a/135 b/135
deleted file mode 100755 (executable)
index f0bf9b9..0000000
--- a/135
+++ /dev/null
@@ -1,92 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 135
-#
-# Concurrent I/O to same file to ensure no deadlocks
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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 /
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux IRIX
-
-_setup_testdir
-_require_scratch
-_scratch_mkfs >/dev/null 2>&1
-
-_umount_mount()
-{
-    CWD=`pwd`
-    cd /
-    # pipe error into /dev/null, in case not mounted (after _require_scratch)
-    umount $SCRATCH_MNT 2>/dev/null
-    _scratch_mount
-    cd "$CWD"
-}
-
-
-
-_umount_mount
-
-cd $SCRATCH_MNT
-
-# create file with async I/O
-xfs_io -F -f -c 'pwrite -b 4k -S 0x12 0 4k' async_file > /dev/null
-
-# create file with sync I/O
-xfs_io -F -f -s -c 'pwrite -b 4k -S 0x34 0 4k' sync_file > /dev/null
-
-# create file with sync I/O
-xfs_io -F -f -d -c 'pwrite -b 4k -S 0x56 0 4k' direct_file > /dev/null
-
-# create file, truncate and then dirty again
-xfs_io -F -f -c 'pwrite -b 4k -S 0x78 0 4k' trunc_file > /dev/null
-xfs_io -F -f -c 'truncate 2k' trunc_file > /dev/null
-xfs_io -F -c 'pwrite 1k 0 1k' trunc_file > /dev/null
-
-_umount_mount
-
-# check file size and contents
-od -Ad -x async_file
-od -Ad -x sync_file
-od -Ad -x direct_file
-od -Ad -x trunc_file
-
-rm -f async_file sync_file direct_file trunc_file
-
-status=0
-exit 
diff --git a/135.out b/135.out
deleted file mode 100644 (file)
index 64eb427..0000000
--- a/135.out
+++ /dev/null
@@ -1,13 +0,0 @@
-QA output created by 135
-0000000 1212 1212 1212 1212 1212 1212 1212 1212
-*
-0004096
-0000000 3434 3434 3434 3434 3434 3434 3434 3434
-*
-0004096
-0000000 5656 5656 5656 5656 5656 5656 5656 5656
-*
-0004096
-0000000 7878 7878 7878 7878 7878 7878 7878 7878
-*
-0002048
diff --git a/141 b/141
deleted file mode 100755 (executable)
index 45c1b5e..0000000
--- a/141
+++ /dev/null
@@ -1,59 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 141
-#
-# Test for xfs_io mmap read problem
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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()
-{
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_setup_testdir
-_require_scratch
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-
-# create file, mmap a region and mmap read it
-file=$SCRATCH_MNT/mmap
-
-xfs_io -F -f -c "pwrite 0 1024k" -c "mmap 64k 64k" -c "mread -r" $file > /dev/null
-
-rm -f $file
-
-status=0
-exit 
diff --git a/141.out b/141.out
deleted file mode 100644 (file)
index 53ae588..0000000
--- a/141.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 141
diff --git a/169 b/169
deleted file mode 100755 (executable)
index 413a86b..0000000
--- a/169
+++ /dev/null
@@ -1,107 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 169
-#
-# Test for file size consistency with append followed by umount/mount
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2007 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-rm -f $seq.full
-status=1    # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-       cd /
-       rm -f $tmp.*
-}
-
-_show_wrote_and_stat_only()
-{
-       # filer out xfs_io bits we are interested in
-       perl -ne '
-               if (/^wrote/) { print } ;
-               if (/^stat\.size/) { print } ;
-       '
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_scratch
-
-_scratch_mkfs >>$seq.full 2>&1 \
-       || _fail "mkfs scratch failed"
-
-_scratch_mount >>$seq.full 2>&1 \
-    || _fail "mount failed: $MOUNT_OPTIONS"
-
-echo "# creating new file for io"
-touch $SCRATCH_MNT/testfile
-
-echo "# appending 15k to new file, sync every 5k"
-xfs_io -F -a -c "pwrite 0 5k" -c "fsync" \
-       -c "pwrite 5k 5k" -c "fsync" \
-       -c "pwrite 10k 5k" -c "fsync" -c "stat" \
-       $SCRATCH_MNT/testfile \
-       | _show_wrote_and_stat_only
-
-echo "# unmounting scratch"
-umount $SCRATCH_MNT>>$seq.full 2>&1 \
-    || _fail "unmount failed"
-
-echo "# mounting scratch"
-_scratch_mount >>$seq.full 2>&1 \
-    || _fail "mount failed: $MOUNT_OPTIONS"
-
-echo "# stating file to confirm correct size"
-xfs_io -F -r -c "stat" $SCRATCH_MNT/testfile \
-       | _show_wrote_and_stat_only
-
-echo "# appending 10 bytes to new file, sync at 5 bytes"
-xfs_io -F -f -c "pwrite 0 5" -c s -c "pwrite 5 5" \
-       -c "stat" $SCRATCH_MNT/nextfile \
-       | _show_wrote_and_stat_only
-
-echo "# unmounting scratch"
-umount $SCRATCH_MNT>>$seq.full 2>&1 \
-    || _fail "unmount failed"
-
-echo "# mounting scratch"
-_scratch_mount >>$seq.full 2>&1 \
-    || _fail "mount failed: $MOUNT_OPTIONS"
-
-echo "# stating file to confirm correct size"
-xfs_io -F -r -c "stat" $SCRATCH_MNT/nextfile \
-    | _show_wrote_and_stat_only
-
-# success, all done
-status=0
-exit
-
diff --git a/169.out b/169.out
deleted file mode 100644 (file)
index 22a5b77..0000000
--- a/169.out
+++ /dev/null
@@ -1,19 +0,0 @@
-QA output created by 169
-# creating new file for io
-# appending 15k to new file, sync every 5k
-wrote 5120/5120 bytes at offset 0
-wrote 5120/5120 bytes at offset 5120
-wrote 5120/5120 bytes at offset 10240
-stat.size = 15360
-# unmounting scratch
-# mounting scratch
-# stating file to confirm correct size
-stat.size = 15360
-# appending 10 bytes to new file, sync at 5 bytes
-wrote 5/5 bytes at offset 0
-wrote 5/5 bytes at offset 5
-stat.size = 10
-# unmounting scratch
-# mounting scratch
-# stating file to confirm correct size
-stat.size = 10
diff --git a/184 b/184
deleted file mode 100755 (executable)
index a37f700..0000000
--- a/184
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 184
-#
-# check mknod makes working nodes.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2007 Silicon Graphics, 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`
-echo "QA output created by $seq - silence is golden"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -f $tmp.*
-    _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-
-_setup_testdir
-
-rm -f $testdir/null
-mknod $testdir/null c 1 3
-chmod 666 $testdir/null
-echo fred > $testdir/null
-
-status=$?
-exit
diff --git a/184.out b/184.out
deleted file mode 100644 (file)
index 2d19691..0000000
--- a/184.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 184 - silence is golden
diff --git a/192 b/192
deleted file mode 100755 (executable)
index 691ab7d..0000000
--- a/192
+++ /dev/null
@@ -1,79 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 192
-#
-# Simple test of atime
-# - ensure it is persistent after unmount
-# - check updated time by correct amount
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2008 Silicon Graphics, 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-trap "exit \$status" 0 1 2 3 15
-
-_access_time()
-{
-       stat --format=%X $1
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-
-_supported_fs generic
-_supported_os Linux
-#delay=150
-#delay=75
-#delay=60
-#delay=45
-delay=40
-
-testfile=$TEST_DIR/testfile
-rm -f $testfile
-rm -f $seq.full
-
-echo test >$testfile
-time1=`_access_time $testfile | tee -a $seq.full` 
-
-echo "sleep for $delay"
-sleep $delay # sleep to allow time to move on for access
-cat $testfile
-time2=`_access_time $testfile | tee -a $seq.full` 
-
-cd /
-umount $TEST_DIR
-_test_mount
-time3=`_access_time $testfile | tee -a $here/$seq.full`
-
-delta1=`expr $time2 - $time1`
-delta2=`expr $time3 - $time1`
-
-echo "delta1 - access time after sleep in-core: $delta1"
-echo "delta2 - access time after sleep on-disk: $delta2"
-
-# success, all done
-status=0
-exit
diff --git a/192.out b/192.out
deleted file mode 100644 (file)
index 7e1f699..0000000
--- a/192.out
+++ /dev/null
@@ -1,5 +0,0 @@
-QA output created by 192
-sleep for 40
-test
-delta1 - access time after sleep in-core: 40
-delta2 - access time after sleep on-disk: 40
diff --git a/193 b/193
deleted file mode 100755 (executable)
index 88ab971..0000000
--- a/193
+++ /dev/null
@@ -1,251 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 193
-#
-# Test permission checks in ->setattr
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2008 Christoph Hellwig.
-#
-# 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-trap "_cleanup_files; exit \$status" 0 1 2 3 15
-tag="added by qa $seq"
-
-#
-# For some tests we need a secondary group for the qa_user.  Currently
-# that's not available in the framework, so the tests using it are
-# commented out.
-#
-#group2=foo
-
-#
-# Create two files, one owned by root, one by the qa_user
-#
-_create_files()
-{
-       touch test.root
-       touch test.${qa_user}
-       chown ${qa_user}:${qa_user} test.${qa_user}
-}
-
-#
-# Remove our files again
-#
-_cleanup_files()
-{
-       rm -f test.${qa_user}
-       rm -f test.root
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_user
-_need_to_be_root
-
-
-#
-# make sure we have a normal umask set
-#
-umask 022
-
-
-#
-# Test the ATTR_UID case
-#
-echo
-echo "testing ATTR_UID"
-echo
-
-_create_files
-
-echo "user: chown root owned file to qa_user (should fail)"
-su ${qa_user} -c "chown ${qa_user} test.root"
-
-echo "user: chown root owned file to root (should fail)"
-su ${qa_user} -c "chown root test.root"
-
-echo "user: chown qa_user owned file to qa_user (should succeed)"
-su ${qa_user} -c "chown ${qa_user} test.${qa_user}"
-
-# this would work without _POSIX_CHOWN_RESTRICTED
-echo "user: chown qa_user owned file to root (should fail)"
-su ${qa_user} -c "chown root test.${qa_user}"
-
-_cleanup_files
-
-#
-# Test the ATTR_GID case
-#
-echo
-echo "testing ATTR_GID"
-echo
-
-_create_files
-
-echo "user: chgrp root owned file to root (should fail)"
-su ${qa_user} -c "chgrp root test.root"
-
-echo "user: chgrp qa_user owned file to root (should fail)"
-su ${qa_user} -c "chgrp root test.${qa_user}"
-
-echo "user: chgrp root owned file to qa_user (should fail)"
-su ${qa_user} -c "chgrp ${qa_user} test.root"
-
-echo "user: chgrp qa_user owned file to qa_user (should succeed)"
-su ${qa_user} -c "chgrp ${qa_user} test.${qa_user}"
-
-#echo "user: chgrp qa_user owned file to secondary group (should succeed)"
-#su ${qa_user} -c "chgrp ${group2} test.${qa_user}"
-
-_cleanup_files
-
-
-#
-# Test the ATTR_MODE case
-#
-echo
-echo "testing ATTR_MODE"
-echo
-
-_create_files
-
-echo "user: chmod a+r on qa_user owned file (should succeed)"
-su ${qa_user} -c "chmod a+r test.${qa_user}"
-
-echo "user: chmod a+r on root owned file (should fail)"
-su ${qa_user} -c "chmod a+r test.root"
-
-#
-# Setup a file owned by the qa_user, but with a group ID that
-# is not present in the qa_users group list (use root to make it easier for it)
-# and mark it with set sgid bit
-#
-# From Posix (www.opengroup.org) for chmod:
-#      "If the calling process does not have appropriate privileges, and
-#      if the group ID of the file does not match the effective group ID
-#      or one of the supplementary group IDs and if the file is a regular
-#      file, bit S_ISGID (set-group-ID on execution) in the file's mode
-#      shall be cleared upon successful return from chmod()."
-# i.e.
-# reg file + file's gid not in process' group set + no approp. privileges -> clear sgid
-#
-echo "check that the sgid bit is cleared"
-chown ${qa_user}:root test.${qa_user}
-chmod g+s test.${qa_user}
-
-# and let the qa_user change permission bits
-su ${qa_user} -c "chmod a+w test.${qa_user}"
-stat -c '%A' test.${qa_user}
-
-#
-# Setup a file owned by the qa_user and with the suid bit set.
-# A chmod by root should not clear the suid bit.
-# There is nothing in Posix that says it should but just checking.
-#
-echo "check that suid bit is not cleared"
-chmod u+s test.${qa_user}
-chmod a+w test.${qa_user}
-stat -c '%A' test.${qa_user}
-
-_cleanup_files
-
-_create_files
-# Now test out the clear of suid/sgid for chown
-#
-# From Posix (www.opengroup.org) for chown:
-#      "If the specified file is a regular file, one or more of the S_IXUSR,
-#      S_IXGRP, or S_IXOTH bits of the file mode are set, and the process
-#      does not have appropriate privileges, the set-user-ID (S_ISUID) and
-#      set-group-ID (S_ISGID) bits of the file mode shall be cleared upon
-#      successful return from chown(). If the specified file is a regular
-#      file, one or more of the S_IXUSR, S_IXGRP, or S_IXOTH bits of the
-#      file mode are set, and the process has appropriate privileges, it
-#      is implementation-defined whether the set-user-ID and set-group-ID
-#      bits are altered. If the chown() function is successfully invoked
-#      on a file that is not a regular file and one or more of the S_IXUSR,
-#      S_IXGRP, or S_IXOTH bits of the file mode are set, the set-user-ID
-#      and set-group-ID bits may be cleared."
-# i.e.
-# reg file + exec-mode-bits set + no appropriate privileges -> clear suid,sgid
-# reg file + exec-mode-bits set + appropriate privileges -> maybe clear suid,sgid
-# non reg file + exec-mode-bits set + chown success on file (??) -> maybe clear suid/sgid
-#
-echo "check that suid/sgid bits are cleared after successful chown..."
-
-echo "with no exec perm"
-chmod ug+s test.${qa_user}
-echo -n "before: "; stat -c '%A' test.${qa_user}
-chown root test.${qa_user}
-echo -n "after:  "; stat -c '%A' test.${qa_user}
-
-echo "with user exec perm"
-chmod ug+s test.${qa_user}
-chmod u+x test.${qa_user}
-echo -n "before: "; stat -c '%A' test.${qa_user}
-chown root test.${qa_user}
-echo -n "after:  "; stat -c '%A' test.${qa_user}
-
-echo "with group exec perm"
-chmod ug+s test.${qa_user}
-chmod g+x test.${qa_user}
-chmod u-x test.${qa_user}
-echo -n "before: "; stat -c '%A' test.${qa_user}
-chown root test.${qa_user}
-echo -n "after:  "; stat -c '%A' test.${qa_user}
-
-echo "with user+group exec perm"
-chmod ug+s test.${qa_user}
-chmod ug+x test.${qa_user}
-echo -n "before: "; stat -c '%A' test.${qa_user}
-chown root test.${qa_user}
-echo -n "after:  "; stat -c '%A' test.${qa_user}
-
-_cleanup_files
-
-
-#
-# Test ATTR_*TIMES_SET
-#
-echo
-echo "testing ATTR_*TIMES_SET"
-echo
-
-_create_files
-
-echo "user: touch qa_user file (should succeed)"
-su ${qa_user} -c "touch test.${qa_user}"
-
-echo "user: touch root file (should fail)"
-su ${qa_user} -c "touch test.root"
-
-_cleanup_files
-
-# success, all done
-echo "*** done"
-rm -f $seq.full
-status=0
diff --git a/193.out b/193.out
deleted file mode 100644 (file)
index b89add3..0000000
--- a/193.out
+++ /dev/null
@@ -1,51 +0,0 @@
-QA output created by 193
-
-testing ATTR_UID
-
-user: chown root owned file to qa_user (should fail)
-chown: changing ownership of `test.root': Operation not permitted
-user: chown root owned file to root (should fail)
-chown: changing ownership of `test.root': Operation not permitted
-user: chown qa_user owned file to qa_user (should succeed)
-user: chown qa_user owned file to root (should fail)
-chown: changing ownership of `test.fsgqa': Operation not permitted
-
-testing ATTR_GID
-
-user: chgrp root owned file to root (should fail)
-chgrp: changing group of `test.root': Operation not permitted
-user: chgrp qa_user owned file to root (should fail)
-chgrp: changing group of `test.fsgqa': Operation not permitted
-user: chgrp root owned file to qa_user (should fail)
-chgrp: changing group of `test.root': Operation not permitted
-user: chgrp qa_user owned file to qa_user (should succeed)
-
-testing ATTR_MODE
-
-user: chmod a+r on qa_user owned file (should succeed)
-user: chmod a+r on root owned file (should fail)
-chmod: changing permissions of `test.root': Operation not permitted
-check that the sgid bit is cleared
--rw-rw-rw-
-check that suid bit is not cleared
--rwSrw-rw-
-check that suid/sgid bits are cleared after successful chown...
-with no exec perm
-before: -rwSr-Sr--
-after:  -rw-r-Sr--
-with user exec perm
-before: -rwsr-Sr--
-after:  -rwxr-Sr--
-with group exec perm
-before: -rwSr-sr--
-after:  -rw-r-xr--
-with user+group exec perm
-before: -rwsr-sr--
-after:  -rwxr-xr--
-
-testing ATTR_*TIMES_SET
-
-user: touch qa_user file (should succeed)
-user: touch root file (should fail)
-touch: cannot touch `test.root': Permission denied
-*** done
diff --git a/198 b/198
deleted file mode 100755 (executable)
index 31de96c..0000000
--- a/198
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 198
-#
-# Test that aio+dio into holes does completion at the proper offsets
-# See also https://bugzilla.redhat.com/show_bug.cgi?id=217098
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2008 Eric Sandeen.  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`
-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
-
-_supported_fs generic
-_supported_os Linux
-_require_aiodio aiodio_sparse2
-
-echo "Silence is golden."
-
-# real QA test starts here
-rm -f $seq.full
-
-rm -f "$TEST_DIR/aiodio_sparse*"
-$AIO_TEST "$TEST_DIR/aiodio_sparse"
-
-status=$?
-exit
diff --git a/198.out b/198.out
deleted file mode 100644 (file)
index 4ec2f06..0000000
--- a/198.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 198
-Silence is golden.
diff --git a/204 b/204
deleted file mode 100755 (executable)
index 6c4a3f0..0000000
--- a/204
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 204
-#
-# Test out ENOSPC flushing on small filesystems.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Christoph Hellwig.
-#
-# 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_scratch
-
-SIZE=`expr 104 \* 1024 \* 1024`
-_scratch_mkfs_sized $SIZE  &> /dev/null
-_scratch_mount
-
-# fix the reserve block pool to a known size so that the enospc calculations
-# work out correctly.
-_scratch_resvblks 1024 > $seq.full 2>&1
-
-for i in `seq 1 22500`; do
-    echo -n > $SCRATCH_MNT/$i
-    echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX > $SCRATCH_MNT/$i
-done
-
-# success, all done
-echo "*** done"
-rm -f $seq.full
-status=0
diff --git a/204.out b/204.out
deleted file mode 100644 (file)
index f9604ec..0000000
--- a/204.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 204
-*** done
diff --git a/207 b/207
deleted file mode 100755 (executable)
index 6eaf50c..0000000
--- a/207
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 207
-#
-# Run aio-dio-extend-stat - test race in dio aio completion
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Eric Sandeen.  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`
-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
-
-# real QA test starts here
-
-_supported_fs generic
-_supported_os Linux
-
-_run_aiodio aio-dio-extend-stat
-
-exit $status
diff --git a/207.out b/207.out
deleted file mode 100644 (file)
index 5799065..0000000
--- a/207.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 207
-4000 iterations of racing extensions and collection passed
diff --git a/208 b/208
deleted file mode 100755 (executable)
index 7ea7514..0000000
--- a/208
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 208
-#
-# Run aio-dio-invalidate-failure - test race in read cache invalidation
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Eric Sandeen.  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`
-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
-
-# real QA test starts here
-
-_supported_fs generic
-_supported_os Linux
-
-_run_aiodio aio-dio-invalidate-failure
-
-exit $status
diff --git a/208.out b/208.out
deleted file mode 100644 (file)
index e825b72..0000000
--- a/208.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 208
-ran for 200 seconds without error, passing
diff --git a/209 b/209
deleted file mode 100755 (executable)
index 8b2a4e1..0000000
--- a/209
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 209
-#
-# Run aio-dio-invalidate-readahead - test sync DIO invalidation of readahead
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Eric Sandeen.  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`
-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
-
-# real QA test starts here
-
-_supported_fs generic
-_supported_os Linux
-
-_run_aiodio aio-dio-invalidate-readahead
-
-exit $status
diff --git a/209.out b/209.out
deleted file mode 100644 (file)
index e3524ef..0000000
--- a/209.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 209
-test ran for 30 seconds without error
diff --git a/210 b/210
deleted file mode 100755 (executable)
index 56ac8ad..0000000
--- a/210
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 210
-#
-# Run aio-dio-subblock-eof-read - test AIO read of last block of DIO file
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Eric Sandeen.  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`
-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
-
-# real QA test starts here
-
-_supported_fs generic
-_supported_os Linux
-
-_run_aiodio aio-dio-subblock-eof-read
-
-exit $status
diff --git a/210.out b/210.out
deleted file mode 100644 (file)
index 7f855e7..0000000
--- a/210.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 210
-AIO read of last block in file succeeded.
diff --git a/211 b/211
deleted file mode 100755 (executable)
index 5667d20..0000000
--- a/211
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 211
-#
-# Run aio-free-ring-with-bogus-nr-pages - test aio_setup_ring with bad nr_pages
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Eric Sandeen.  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`
-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
-
-# real QA test starts here
-
-_supported_fs generic
-_supported_os Linux
-
-_run_aiodio aio-free-ring-with-bogus-nr-pages
-
-exit $status
diff --git a/211.out b/211.out
deleted file mode 100644 (file)
index 08be2c5..0000000
--- a/211.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 211
-aio-free-ring-with-bogus-nr-pages: Success!
diff --git a/212 b/212
deleted file mode 100755 (executable)
index e211cc4..0000000
--- a/212
+++ /dev/null
@@ -1,50 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 212
-#
-# Run aio-io-setup-with-nonwritable-context-pointer -
-# Test what happens when a non-writable context pointer is passed to io_setup
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Eric Sandeen.  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`
-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
-
-# real QA test starts here
-
-_supported_fs generic
-_supported_os Linux
-
-_run_aiodio aio-io-setup-with-nonwritable-context-pointer
-
-exit $status
diff --git a/212.out b/212.out
deleted file mode 100644 (file)
index 67ecc4b..0000000
--- a/212.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 212
-aio-io-setup-with-nonwritable-context-pointer: Success!
diff --git a/213 b/213
deleted file mode 100755 (executable)
index e297fdf..0000000
--- a/213
+++ /dev/null
@@ -1,88 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 213
-#
-# Check some unwritten extent boundary conditions, fallocate version.
-#
-# Based on xfs-specific test 072
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2003 Silicon Graphics, Inc.  All Rights Reserved.
-# Copyright (c) 2009 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`
-echo "QA output created by $seq"
-
-_cleanup()
-{
-       cd /
-       rm -f $tmp.*
-}
-
-here=`pwd`
-tmp=$TEST_DIR/$$
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-# generic, but xfs_io's fallocate must work
-_supported_fs generic
-# only Linux supports fallocate
-_supported_os Linux
-
-[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
-
-rm -f $seq.full
-
-_require_xfs_io_falloc
-
-# check there's enough freespace on $TEST_DIR ... (1GiB + 1MiB)
-avail=`df -P $TEST_DIR | awk 'END {print $4}'`
-[ "$avail" -ge 1049600 ] || _notrun "Test device is too small ($avail KiB)"
-
-# reserve 1GiB, truncate at 100bytes
-$XFS_IO_PROG -F -f -c 'falloc 0 1g' -c 'truncate 100' $TEST_DIR/ouch
-rm -f $TEST_DIR/ouch
-
-# reserve 1GiB, truncate at 1GiB
-$XFS_IO_PROG -F -f -c 'falloc 0 1g' -c 'truncate 1g' $TEST_DIR/ouch
-rm -f $TEST_DIR/ouch
-
-# reserve 1GiB, truncate at 2GiB
-$XFS_IO_PROG -F -f -c 'falloc 0 1g' -c 'truncate 2g' $TEST_DIR/ouch
-rm -f $TEST_DIR/ouch
-
-# reserve 1GiB, 1GiB hole, reserve 1MiB, truncate at 3GiB
-$XFS_IO_PROG -F -f -c 'falloc 0 1g' -c 'falloc 2g 1m' -c 'truncate 3g' $TEST_DIR/ouch
-rm -f $TEST_DIR/ouch
-
-# Try to reserve more space than we have
-echo "We should get: fallocate: No space left on device"
-echo "Strangely, xfs_io sometimes says \"Success\" when something went wrong, FYI"
-
-let toobig=$avail*2
-$XFS_IO_PROG -F -f -c "falloc 0 ${toobig}k" $TEST_DIR/ouch
-rm -f $TEST_DIR/ouch
-
-# success, all done
-status=0
-exit
diff --git a/213.out b/213.out
deleted file mode 100644 (file)
index 521fca3..0000000
--- a/213.out
+++ /dev/null
@@ -1,4 +0,0 @@
-QA output created by 213
-We should get: fallocate: No space left on device
-Strangely, xfs_io sometimes says "Success" when something went wrong, FYI
-fallocate: No space left on device
diff --git a/214 b/214
deleted file mode 100755 (executable)
index 682cfca..0000000
--- a/214
+++ /dev/null
@@ -1,149 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 214
-#
-# Basic unwritten extent sanity checks
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 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`
-echo "QA output created by $seq"
-
-_cleanup()
-{
-       rm -f $TEST_DIR/ouch*
-       cd /
-       rm -f $tmp.*
-}
-
-here=`pwd`
-tmp=$TEST_DIR/$$
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-# generic, but xfs_io's fallocate must work
-_supported_fs generic
-# only Linux supports fallocate
-_supported_os Linux
-
-[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
-
-rm -f $seq.full
-rm -f $TEST_DIR/ouch*
-
-_require_xfs_io_falloc
-
-# Ok, off we go.
-
-# We don't remove files after they are written to check
-# for subsequent fs corruption at the end
-rm -f $TEST_DIR/test214-*
-
-# Super-trivial; preallocate a region and read it; get 0s.
-echo "=== falloc & read  ==="
-$XFS_IO_PROG -F -f             \
-       -c 'falloc 0 4096'      \
-       -c 'pread -v 0 4096'    \
-       $TEST_DIR/test214-1 | _filter_xfs_io_unique
-
-# Preallocate a chunk, write 1 byte, read it all back.
-# Should get no stale data.  Early ext4 bug.
-
-echo "=== falloc, write beginning, read ==="
-$XFS_IO_PROG -F -f             \
-       -c 'falloc 0 512'       \
-       -c 'pwrite 0 1'         \
-       -c 'pread -v 0 512'     \
-       $TEST_DIR/test214-2 | _filter_xfs_io_unique
-
-# Same but write in the middle of the region
-echo "=== falloc, write middle, read ==="
-$XFS_IO_PROG -F -f             \
-       -c 'falloc 0 512'       \
-       -c 'pwrite 256 1'       \
-       -c 'pread -v 0 512'     \
-       $TEST_DIR/test214-3 | _filter_xfs_io_unique
-
-# Same but write the end of the region
-echo "=== falloc, write end, read ==="
-$XFS_IO_PROG -F -f             \
-       -c 'falloc 0 512'       \
-       -c 'pwrite 511 1'       \
-       -c 'pread -v 0 512'     \
-       $TEST_DIR/test214-4 | _filter_xfs_io_unique
-
-# Reported by IBM on ext4.
-#
-# Fixed by commit a41f20716975910d9beb90b7efc61107901492b8
-#
-# The file was previously preallocated, and then initialized the middle of
-# the preallocation area using Direct IO write, then overwrite part of
-# initialized area. Later after truncate the file (to the middle of the
-# initialized data), the initialized data *before* the new file size was
-# gone after remount the filesystem.
-
-echo "=== falloc, write, sync, truncate, read ==="
-# Allocate, write, sync, truncate (buffered)
-$XFS_IO_PROG -F -f                             \
-       -c 'falloc         0x0     0x65C00'     \
-       -c 'pwrite -S 0xAA 0x12000 0x10000'     \
-       -c 'fsync'                              \
-       -c 'truncate 0x16000'                   \
-       $TEST_DIR/test214-5 | _filter_xfs_io_unique
-
-# now do a direct read and see what's on-disk
-$XFS_IO_PROG -F -f -d                          \
-       -c 'pread -v 0 0x16000'                 \
-       $TEST_DIR/test214-5 | _filter_xfs_io_unique
-
-# Reported by Ted Ts'o on linux-ext4, 12/31/2009
-# double-allocation on ext4 when fallocating over delalloc blocks
-# Regression due to d21cd8f163ac44b15c465aab7306db931c606908
-
-echo "=== delalloc write 16k; fallocate same range ==="
-# delalloc write 16k, fallocate same range.
-# Should get caught on fsck when we're done.
-
-$XFS_IO_PROG -F -f                             \
-       -c "pwrite 0 16k"                       \
-       -c "falloc 0 16k"                       \
-       -c "fsync"                              \
-       $TEST_DIR/test214-6 | _filter_xfs_io_unique
-
-# Another ext4 failure
-
-echo "=== ext4 testcase 2 ==="
-
-$XFS_IO_PROG -F -f \
-        -c "fsync"              \
-        -c "pwrite 551917 41182"        \
-        -c "falloc 917633 392230"       \
-        -c "pwrite 285771 77718"        \
-        -c "pwrite 1136718 104115"      \
-        $TEST_DIR/test214-7 | _filter_xfs_io_unique
-
-
-# success, all done
-status=0
-exit
diff --git a/214.out b/214.out
deleted file mode 100644 (file)
index 4576150..0000000
--- a/214.out
+++ /dev/null
@@ -1,51 +0,0 @@
-QA output created by 214
-=== falloc & read  ===
-00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-read 4096/4096 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-=== falloc, write beginning, read ===
-wrote 1/1 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  cd 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-00000010:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-read 512/512 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-=== falloc, write middle, read ===
-wrote 1/1 bytes at offset 256
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-00000100:  cd 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-00000110:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-read 512/512 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-=== falloc, write end, read ===
-wrote 1/1 bytes at offset 511
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-000001f0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 cd  ................
-read 512/512 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-=== falloc, write, sync, truncate, read ===
-wrote 65536/65536 bytes at offset 73728
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
-*
-00012000:  aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa  ................
-*
-read 90112/90112 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-=== delalloc write 16k; fallocate same range ===
-wrote 16384/16384 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-=== ext4 testcase 2 ===
-wrote 41182/41182 bytes at offset 551917
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 77718/77718 bytes at offset 285771
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-wrote 104115/104115 bytes at offset 1136718
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
diff --git a/215 b/215
deleted file mode 100755 (executable)
index 749b27b..0000000
--- a/215
+++ /dev/null
@@ -1,83 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 215
-#
-# Test out c/mtime updates after mapped writes.
-#
-# Based on the testcase in http://bugzilla.kernel.org/show_bug.cgi?id=2645
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Christoph Hellwig.
-#
-# 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`
-echo "QA output created by $seq"
-
-_cleanup()
-{
-       cd /
-       rm -f $testfile
-}
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-testfile=$TEST_DIR/tst.mmap
-
-echo
-echo "creating test file"
-dd if=/dev/zero of=$testfile count=4096
-
-mtime1=`stat --printf="%Y" $testfile`
-ctime1=`stat --printf="%Z" $testfile`
-
-sleep 2
-
-echo
-echo "writing via mmap"
-$XFS_IO_PROG -F -f             \
-       -c 'mmap 0 4096'        \
-       -c 'mwrite 0 4096'      \
-       $testfile | _filter_xfs_io_unique
-
-mtime2=`stat --printf="%Y" $testfile`
-ctime2=`stat --printf="%Z" $testfile`
-
-let mtime_diff=$mtime2-$mtime1
-let ctime_diff=$ctime2-$ctime1
-
-if [ "$mtime_diff" -eq "0" ]; then
-   echo "FAIL: mtime not update after mapped write"
-fi
-
-if [ "$ctime_diff" -eq "0" ]; then
-   echo "FAIL: ctime not update after mapped write"
-fi
-
-# success, all done
-echo "*** done"
-rm -f $seq.full
-status=0
diff --git a/215.out b/215.out
deleted file mode 100644 (file)
index 1cfe766..0000000
--- a/215.out
+++ /dev/null
@@ -1,8 +0,0 @@
-QA output created by 215
-
-creating test file
-4096+0 records in
-4096+0 records out
-
-writing via mmap
-*** done
diff --git a/219 b/219
deleted file mode 100755 (executable)
index 3f4ec09..0000000
--- a/219
+++ /dev/null
@@ -1,134 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 219
-#
-# Simple quota accounting test for direct/buffered/mmap IO.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Eric Sandeen.  All Rights Reserved.
-#
-# Based on test 108,
-# Copyright (c) 2005 Silicon Graphics, 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`
-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.quota
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux #IRIX
-_require_scratch
-_require_quota
-_require_user
-_require_group
-
-test_files()
-{
-       echo; echo "### create files, setting up ownership (type=$type)"
-       rm -f $SCRATCH_MNT/{buffer,direct,mmap}
-       touch $SCRATCH_MNT/{buffer,direct,mmap}
-       chown $qa_user $SCRATCH_MNT/{buffer,direct,mmap}
-       chgrp $qa_group $SCRATCH_MNT/{buffer,direct,mmap}
-       for file in $SCRATCH_MNT/{buffer,direct,mmap}; do
-               $here/src/lstat64 $file | head -2 | _filter_scratch
-       done
-}
-
-check_usage()
-{
-       wroteblocks=$1
-       wrotefiles=$2
-       read id exceed blocks bsoft bhard inodes isoft ihard
-       if [ "$blocks" -lt "$wroteblocks" ]; then
-               echo "Too few blocks used (type=$type)"
-       # Save 5% for overhead of metadata or different block size
-       elif [ "$blocks" -gt $((wroteblocks+wroteblocks/20)) ]; then
-               echo "Too many blocks used (type=$type)"
-       elif [ "$inodes" != "$wrotefiles" ]; then
-               echo "Bad number of inodes used (type=$type)"
-       else
-               echo "Usage OK (type=$type)"
-       fi
-}
-
-test_accounting()
-{
-       echo "### some controlled buffered, direct and mmapd IO (type=$type)"
-       echo "--- initiating parallel IO..." >>$seq.full
-       # Small ios here because ext3 will account for indirect blocks too ...
-       # 48k will fit w/o indirect for 4k blocks (default blocksize)
-       $XFS_IO_PROG -F -c 'pwrite 0 48k' -c 'fsync' \
-                                       $SCRATCH_MNT/buffer >>$seq.full 2>&1 &
-       $XFS_IO_PROG -F -c 'pwrite 0 48k' -d \
-                                       $SCRATCH_MNT/direct >>$seq.full 2>&1 &
-       $XFS_IO_PROG -F -c 't 48k' -c 'mm -rw 0 48k' -c 'mw 0 48k' -c 'ms -s' \
-                                       $SCRATCH_MNT/mmap   >>$seq.full 2>&1 &
-       wait
-       echo "--- completed parallel IO ($type)" >>$seq.full
-
-       for file in $SCRATCH_MNT/{buffer,direct,mmap}; do
-               $here/src/lstat64 $file | head -2 | _filter_scratch
-       done
-
-       if [ $type == 'u' ]; then
-               id=$qa_user
-       else
-               id=$qa_group
-       fi
-       repquota -$type $SCRATCH_MNT | grep "^$id" | check_usage 144 3
-}
-
-# real QA test starts here
-rm -f $seq.full
-
-umount $SCRATCH_DEV 2>/dev/null
-_scratch_mkfs >> $seq.full 2>&1
-_scratch_mount "-o usrquota,grpquota"
-quotacheck -u -g $SCRATCH_MNT 2>/dev/null
-quotaon $SCRATCH_MNT 2>/dev/null
-umount $SCRATCH_DEV
-
-echo; echo "### test user accounting"
-export MOUNT_OPTIONS="-o usrquota"
-_qmount
-quotaon $SCRATCH_MNT 2>/dev/null
-type=u
-test_files
-test_accounting
-umount $SCRATCH_DEV 2>/dev/null
-
-echo; echo "### test group accounting"
-export MOUNT_OPTIONS="-o grpquota"
-_qmount
-quotaon $SCRATCH_MNT 2>/dev/null
-type=g
-test_files
-test_accounting
-umount $SCRATCH_DEV 2>/dev/null
-
-status=0
-exit
diff --git a/219.out b/219.out
deleted file mode 100644 (file)
index f45658d..0000000
--- a/219.out
+++ /dev/null
@@ -1,37 +0,0 @@
-QA output created by 219
-
-### test user accounting
-
-### create files, setting up ownership (type=u)
-  File: "SCRATCH_MNT/buffer"
-  Size: 0            Filetype: Regular File
-  File: "SCRATCH_MNT/direct"
-  Size: 0            Filetype: Regular File
-  File: "SCRATCH_MNT/mmap"
-  Size: 0            Filetype: Regular File
-### some controlled buffered, direct and mmapd IO (type=u)
-  File: "SCRATCH_MNT/buffer"
-  Size: 49152        Filetype: Regular File
-  File: "SCRATCH_MNT/direct"
-  Size: 49152        Filetype: Regular File
-  File: "SCRATCH_MNT/mmap"
-  Size: 49152        Filetype: Regular File
-Usage OK (type=u)
-
-### test group accounting
-
-### create files, setting up ownership (type=g)
-  File: "SCRATCH_MNT/buffer"
-  Size: 0            Filetype: Regular File
-  File: "SCRATCH_MNT/direct"
-  Size: 0            Filetype: Regular File
-  File: "SCRATCH_MNT/mmap"
-  Size: 0            Filetype: Regular File
-### some controlled buffered, direct and mmapd IO (type=g)
-  File: "SCRATCH_MNT/buffer"
-  Size: 49152        Filetype: Regular File
-  File: "SCRATCH_MNT/direct"
-  Size: 49152        Filetype: Regular File
-  File: "SCRATCH_MNT/mmap"
-  Size: 49152        Filetype: Regular File
-Usage OK (type=g)
diff --git a/221 b/221
deleted file mode 100755 (executable)
index 9cab3c4..0000000
--- a/221
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 221
-#
-# Check ctime updates when calling futimens without UTIME_OMIT for the
-# mtime entry.
-#
-# Based on a bug report and testcase from Eric Blake <ebb9@byu.net>.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 Christoph Hellwig.  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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-# get standard environment, filters and checks
-. ./common.rc
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-echo "Silence is golden."
-
-(cd $TEST_DIR && $here/src/t_futimens)
-
-status=0
-exit $status
diff --git a/221.out b/221.out
deleted file mode 100644 (file)
index 1c6aa0f..0000000
--- a/221.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 221
-Silence is golden.
diff --git a/223 b/223
deleted file mode 100755 (executable)
index 8eba2d7..0000000
--- a/223
+++ /dev/null
@@ -1,99 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 223
-#
-# File alignment tests
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 Eric Sandeen.  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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-_cleanup()
-{
-    rm -f $tmp.*
-}
-
-trap "_cleanup ; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_scratch
-_require_xfs_io_falloc
-
-rm -f $seq.full
-
-BLOCKSIZE=4096
-
-for SUNIT_K in 8 16 32 64 128; do
-       let SUNIT_BYTES=$SUNIT_K*1024
-       let SUNIT_BLOCKS=$SUNIT_BYTES/$BLOCKSIZE
-
-       echo "=== mkfs with su $SUNIT_BLOCKS blocks x 4 ==="
-       export MKFS_OPTIONS=""
-       _scratch_mkfs_geom $SUNIT_BYTES 4 $BLOCKSIZE >> $seq.full 2>&1
-       _scratch_mount
-
-       for SIZE_MULT in 1 2 8 64 256; do
-               let SIZE=$SIZE_MULT*$SUNIT_BYTES
-
-               echo "=== Testing size ${SIZE_MULT}*${SUNIT_K}k on ${SUNIT_K}k stripe ==="
-               for FILE in 1 2 3 4; do
-                       xfs_io -F -f -c "falloc 0 $SIZE" \
-                               $SCRATCH_MNT/file-$FILE-$SIZE-falloc \
-                                       >> $seq.full 2>&1
-                       xfs_io -F -f -c "pwrite 0 $SIZE" \
-                               $SCRATCH_MNT/file-$FILE-$SIZE-write \
-                                       >> $seq.full 2>&1
-                       src/t_stripealign $SCRATCH_MNT/file-$FILE-$SIZE-falloc \
-                               $SUNIT_BLOCKS | _filter_scratch
-                       src/t_stripealign $SCRATCH_MNT/file-$FILE-$SIZE-write \
-                               $SUNIT_BLOCKS | _filter_scratch
-               done
-       done
-
-       echo "=== Testing size 1g falloc on ${SUNIT_K}k stripe ==="
-       xfs_io -F -f -c "falloc 0 1g" \
-           $SCRATCH_MNT/file-1g-falloc >> $seq.full 2>&1
-       src/t_stripealign $SCRATCH_MNT/file-1g-falloc $SUNIT_BLOCKS \
-           | _filter_scratch
-
-       rm -f $SCRATCH_MNT/file-1g-falloc | _filter_scratch
-
-       echo "=== Testing size 1073745920 falloc on ${SUNIT_K}k stripe ==="
-       xfs_io -F -f -c "falloc 0 1073745920" \
-               $SCRATCH_MNT/file-1073745920-falloc >> $seq.full 2>&1
-       src/t_stripealign $SCRATCH_MNT/file-1073745920-falloc \
-               $SUNIT_BLOCKS | _filter_scratch
-
-       _scratch_unmount
-done
-
-status=0
-exit
diff --git a/223.out b/223.out
deleted file mode 100644 (file)
index 2fb3122..0000000
--- a/223.out
+++ /dev/null
@@ -1,251 +0,0 @@
-QA output created by 223
-=== mkfs with su 2 blocks x 4 ===
-=== Testing size 1*8k on 8k stripe ===
-SCRATCH_MNT/file-1-8192-falloc: well-aligned
-SCRATCH_MNT/file-1-8192-write: well-aligned
-SCRATCH_MNT/file-2-8192-falloc: well-aligned
-SCRATCH_MNT/file-2-8192-write: well-aligned
-SCRATCH_MNT/file-3-8192-falloc: well-aligned
-SCRATCH_MNT/file-3-8192-write: well-aligned
-SCRATCH_MNT/file-4-8192-falloc: well-aligned
-SCRATCH_MNT/file-4-8192-write: well-aligned
-=== Testing size 2*8k on 8k stripe ===
-SCRATCH_MNT/file-1-16384-falloc: well-aligned
-SCRATCH_MNT/file-1-16384-write: well-aligned
-SCRATCH_MNT/file-2-16384-falloc: well-aligned
-SCRATCH_MNT/file-2-16384-write: well-aligned
-SCRATCH_MNT/file-3-16384-falloc: well-aligned
-SCRATCH_MNT/file-3-16384-write: well-aligned
-SCRATCH_MNT/file-4-16384-falloc: well-aligned
-SCRATCH_MNT/file-4-16384-write: well-aligned
-=== Testing size 8*8k on 8k stripe ===
-SCRATCH_MNT/file-1-65536-falloc: well-aligned
-SCRATCH_MNT/file-1-65536-write: well-aligned
-SCRATCH_MNT/file-2-65536-falloc: well-aligned
-SCRATCH_MNT/file-2-65536-write: well-aligned
-SCRATCH_MNT/file-3-65536-falloc: well-aligned
-SCRATCH_MNT/file-3-65536-write: well-aligned
-SCRATCH_MNT/file-4-65536-falloc: well-aligned
-SCRATCH_MNT/file-4-65536-write: well-aligned
-=== Testing size 64*8k on 8k stripe ===
-SCRATCH_MNT/file-1-524288-falloc: well-aligned
-SCRATCH_MNT/file-1-524288-write: well-aligned
-SCRATCH_MNT/file-2-524288-falloc: well-aligned
-SCRATCH_MNT/file-2-524288-write: well-aligned
-SCRATCH_MNT/file-3-524288-falloc: well-aligned
-SCRATCH_MNT/file-3-524288-write: well-aligned
-SCRATCH_MNT/file-4-524288-falloc: well-aligned
-SCRATCH_MNT/file-4-524288-write: well-aligned
-=== Testing size 256*8k on 8k stripe ===
-SCRATCH_MNT/file-1-2097152-falloc: well-aligned
-SCRATCH_MNT/file-1-2097152-write: well-aligned
-SCRATCH_MNT/file-2-2097152-falloc: well-aligned
-SCRATCH_MNT/file-2-2097152-write: well-aligned
-SCRATCH_MNT/file-3-2097152-falloc: well-aligned
-SCRATCH_MNT/file-3-2097152-write: well-aligned
-SCRATCH_MNT/file-4-2097152-falloc: well-aligned
-SCRATCH_MNT/file-4-2097152-write: well-aligned
-=== Testing size 1g falloc on 8k stripe ===
-SCRATCH_MNT/file-1g-falloc: well-aligned
-=== Testing size 1073745920 falloc on 8k stripe ===
-SCRATCH_MNT/file-1073745920-falloc: well-aligned
-=== mkfs with su 4 blocks x 4 ===
-=== Testing size 1*16k on 16k stripe ===
-SCRATCH_MNT/file-1-16384-falloc: well-aligned
-SCRATCH_MNT/file-1-16384-write: well-aligned
-SCRATCH_MNT/file-2-16384-falloc: well-aligned
-SCRATCH_MNT/file-2-16384-write: well-aligned
-SCRATCH_MNT/file-3-16384-falloc: well-aligned
-SCRATCH_MNT/file-3-16384-write: well-aligned
-SCRATCH_MNT/file-4-16384-falloc: well-aligned
-SCRATCH_MNT/file-4-16384-write: well-aligned
-=== Testing size 2*16k on 16k stripe ===
-SCRATCH_MNT/file-1-32768-falloc: well-aligned
-SCRATCH_MNT/file-1-32768-write: well-aligned
-SCRATCH_MNT/file-2-32768-falloc: well-aligned
-SCRATCH_MNT/file-2-32768-write: well-aligned
-SCRATCH_MNT/file-3-32768-falloc: well-aligned
-SCRATCH_MNT/file-3-32768-write: well-aligned
-SCRATCH_MNT/file-4-32768-falloc: well-aligned
-SCRATCH_MNT/file-4-32768-write: well-aligned
-=== Testing size 8*16k on 16k stripe ===
-SCRATCH_MNT/file-1-131072-falloc: well-aligned
-SCRATCH_MNT/file-1-131072-write: well-aligned
-SCRATCH_MNT/file-2-131072-falloc: well-aligned
-SCRATCH_MNT/file-2-131072-write: well-aligned
-SCRATCH_MNT/file-3-131072-falloc: well-aligned
-SCRATCH_MNT/file-3-131072-write: well-aligned
-SCRATCH_MNT/file-4-131072-falloc: well-aligned
-SCRATCH_MNT/file-4-131072-write: well-aligned
-=== Testing size 64*16k on 16k stripe ===
-SCRATCH_MNT/file-1-1048576-falloc: well-aligned
-SCRATCH_MNT/file-1-1048576-write: well-aligned
-SCRATCH_MNT/file-2-1048576-falloc: well-aligned
-SCRATCH_MNT/file-2-1048576-write: well-aligned
-SCRATCH_MNT/file-3-1048576-falloc: well-aligned
-SCRATCH_MNT/file-3-1048576-write: well-aligned
-SCRATCH_MNT/file-4-1048576-falloc: well-aligned
-SCRATCH_MNT/file-4-1048576-write: well-aligned
-=== Testing size 256*16k on 16k stripe ===
-SCRATCH_MNT/file-1-4194304-falloc: well-aligned
-SCRATCH_MNT/file-1-4194304-write: well-aligned
-SCRATCH_MNT/file-2-4194304-falloc: well-aligned
-SCRATCH_MNT/file-2-4194304-write: well-aligned
-SCRATCH_MNT/file-3-4194304-falloc: well-aligned
-SCRATCH_MNT/file-3-4194304-write: well-aligned
-SCRATCH_MNT/file-4-4194304-falloc: well-aligned
-SCRATCH_MNT/file-4-4194304-write: well-aligned
-=== Testing size 1g falloc on 16k stripe ===
-SCRATCH_MNT/file-1g-falloc: well-aligned
-=== Testing size 1073745920 falloc on 16k stripe ===
-SCRATCH_MNT/file-1073745920-falloc: well-aligned
-=== mkfs with su 8 blocks x 4 ===
-=== Testing size 1*32k on 32k stripe ===
-SCRATCH_MNT/file-1-32768-falloc: well-aligned
-SCRATCH_MNT/file-1-32768-write: well-aligned
-SCRATCH_MNT/file-2-32768-falloc: well-aligned
-SCRATCH_MNT/file-2-32768-write: well-aligned
-SCRATCH_MNT/file-3-32768-falloc: well-aligned
-SCRATCH_MNT/file-3-32768-write: well-aligned
-SCRATCH_MNT/file-4-32768-falloc: well-aligned
-SCRATCH_MNT/file-4-32768-write: well-aligned
-=== Testing size 2*32k on 32k stripe ===
-SCRATCH_MNT/file-1-65536-falloc: well-aligned
-SCRATCH_MNT/file-1-65536-write: well-aligned
-SCRATCH_MNT/file-2-65536-falloc: well-aligned
-SCRATCH_MNT/file-2-65536-write: well-aligned
-SCRATCH_MNT/file-3-65536-falloc: well-aligned
-SCRATCH_MNT/file-3-65536-write: well-aligned
-SCRATCH_MNT/file-4-65536-falloc: well-aligned
-SCRATCH_MNT/file-4-65536-write: well-aligned
-=== Testing size 8*32k on 32k stripe ===
-SCRATCH_MNT/file-1-262144-falloc: well-aligned
-SCRATCH_MNT/file-1-262144-write: well-aligned
-SCRATCH_MNT/file-2-262144-falloc: well-aligned
-SCRATCH_MNT/file-2-262144-write: well-aligned
-SCRATCH_MNT/file-3-262144-falloc: well-aligned
-SCRATCH_MNT/file-3-262144-write: well-aligned
-SCRATCH_MNT/file-4-262144-falloc: well-aligned
-SCRATCH_MNT/file-4-262144-write: well-aligned
-=== Testing size 64*32k on 32k stripe ===
-SCRATCH_MNT/file-1-2097152-falloc: well-aligned
-SCRATCH_MNT/file-1-2097152-write: well-aligned
-SCRATCH_MNT/file-2-2097152-falloc: well-aligned
-SCRATCH_MNT/file-2-2097152-write: well-aligned
-SCRATCH_MNT/file-3-2097152-falloc: well-aligned
-SCRATCH_MNT/file-3-2097152-write: well-aligned
-SCRATCH_MNT/file-4-2097152-falloc: well-aligned
-SCRATCH_MNT/file-4-2097152-write: well-aligned
-=== Testing size 256*32k on 32k stripe ===
-SCRATCH_MNT/file-1-8388608-falloc: well-aligned
-SCRATCH_MNT/file-1-8388608-write: well-aligned
-SCRATCH_MNT/file-2-8388608-falloc: well-aligned
-SCRATCH_MNT/file-2-8388608-write: well-aligned
-SCRATCH_MNT/file-3-8388608-falloc: well-aligned
-SCRATCH_MNT/file-3-8388608-write: well-aligned
-SCRATCH_MNT/file-4-8388608-falloc: well-aligned
-SCRATCH_MNT/file-4-8388608-write: well-aligned
-=== Testing size 1g falloc on 32k stripe ===
-SCRATCH_MNT/file-1g-falloc: well-aligned
-=== Testing size 1073745920 falloc on 32k stripe ===
-SCRATCH_MNT/file-1073745920-falloc: well-aligned
-=== mkfs with su 16 blocks x 4 ===
-=== Testing size 1*64k on 64k stripe ===
-SCRATCH_MNT/file-1-65536-falloc: well-aligned
-SCRATCH_MNT/file-1-65536-write: well-aligned
-SCRATCH_MNT/file-2-65536-falloc: well-aligned
-SCRATCH_MNT/file-2-65536-write: well-aligned
-SCRATCH_MNT/file-3-65536-falloc: well-aligned
-SCRATCH_MNT/file-3-65536-write: well-aligned
-SCRATCH_MNT/file-4-65536-falloc: well-aligned
-SCRATCH_MNT/file-4-65536-write: well-aligned
-=== Testing size 2*64k on 64k stripe ===
-SCRATCH_MNT/file-1-131072-falloc: well-aligned
-SCRATCH_MNT/file-1-131072-write: well-aligned
-SCRATCH_MNT/file-2-131072-falloc: well-aligned
-SCRATCH_MNT/file-2-131072-write: well-aligned
-SCRATCH_MNT/file-3-131072-falloc: well-aligned
-SCRATCH_MNT/file-3-131072-write: well-aligned
-SCRATCH_MNT/file-4-131072-falloc: well-aligned
-SCRATCH_MNT/file-4-131072-write: well-aligned
-=== Testing size 8*64k on 64k stripe ===
-SCRATCH_MNT/file-1-524288-falloc: well-aligned
-SCRATCH_MNT/file-1-524288-write: well-aligned
-SCRATCH_MNT/file-2-524288-falloc: well-aligned
-SCRATCH_MNT/file-2-524288-write: well-aligned
-SCRATCH_MNT/file-3-524288-falloc: well-aligned
-SCRATCH_MNT/file-3-524288-write: well-aligned
-SCRATCH_MNT/file-4-524288-falloc: well-aligned
-SCRATCH_MNT/file-4-524288-write: well-aligned
-=== Testing size 64*64k on 64k stripe ===
-SCRATCH_MNT/file-1-4194304-falloc: well-aligned
-SCRATCH_MNT/file-1-4194304-write: well-aligned
-SCRATCH_MNT/file-2-4194304-falloc: well-aligned
-SCRATCH_MNT/file-2-4194304-write: well-aligned
-SCRATCH_MNT/file-3-4194304-falloc: well-aligned
-SCRATCH_MNT/file-3-4194304-write: well-aligned
-SCRATCH_MNT/file-4-4194304-falloc: well-aligned
-SCRATCH_MNT/file-4-4194304-write: well-aligned
-=== Testing size 256*64k on 64k stripe ===
-SCRATCH_MNT/file-1-16777216-falloc: well-aligned
-SCRATCH_MNT/file-1-16777216-write: well-aligned
-SCRATCH_MNT/file-2-16777216-falloc: well-aligned
-SCRATCH_MNT/file-2-16777216-write: well-aligned
-SCRATCH_MNT/file-3-16777216-falloc: well-aligned
-SCRATCH_MNT/file-3-16777216-write: well-aligned
-SCRATCH_MNT/file-4-16777216-falloc: well-aligned
-SCRATCH_MNT/file-4-16777216-write: well-aligned
-=== Testing size 1g falloc on 64k stripe ===
-SCRATCH_MNT/file-1g-falloc: well-aligned
-=== Testing size 1073745920 falloc on 64k stripe ===
-SCRATCH_MNT/file-1073745920-falloc: well-aligned
-=== mkfs with su 32 blocks x 4 ===
-=== Testing size 1*128k on 128k stripe ===
-SCRATCH_MNT/file-1-131072-falloc: well-aligned
-SCRATCH_MNT/file-1-131072-write: well-aligned
-SCRATCH_MNT/file-2-131072-falloc: well-aligned
-SCRATCH_MNT/file-2-131072-write: well-aligned
-SCRATCH_MNT/file-3-131072-falloc: well-aligned
-SCRATCH_MNT/file-3-131072-write: well-aligned
-SCRATCH_MNT/file-4-131072-falloc: well-aligned
-SCRATCH_MNT/file-4-131072-write: well-aligned
-=== Testing size 2*128k on 128k stripe ===
-SCRATCH_MNT/file-1-262144-falloc: well-aligned
-SCRATCH_MNT/file-1-262144-write: well-aligned
-SCRATCH_MNT/file-2-262144-falloc: well-aligned
-SCRATCH_MNT/file-2-262144-write: well-aligned
-SCRATCH_MNT/file-3-262144-falloc: well-aligned
-SCRATCH_MNT/file-3-262144-write: well-aligned
-SCRATCH_MNT/file-4-262144-falloc: well-aligned
-SCRATCH_MNT/file-4-262144-write: well-aligned
-=== Testing size 8*128k on 128k stripe ===
-SCRATCH_MNT/file-1-1048576-falloc: well-aligned
-SCRATCH_MNT/file-1-1048576-write: well-aligned
-SCRATCH_MNT/file-2-1048576-falloc: well-aligned
-SCRATCH_MNT/file-2-1048576-write: well-aligned
-SCRATCH_MNT/file-3-1048576-falloc: well-aligned
-SCRATCH_MNT/file-3-1048576-write: well-aligned
-SCRATCH_MNT/file-4-1048576-falloc: well-aligned
-SCRATCH_MNT/file-4-1048576-write: well-aligned
-=== Testing size 64*128k on 128k stripe ===
-SCRATCH_MNT/file-1-8388608-falloc: well-aligned
-SCRATCH_MNT/file-1-8388608-write: well-aligned
-SCRATCH_MNT/file-2-8388608-falloc: well-aligned
-SCRATCH_MNT/file-2-8388608-write: well-aligned
-SCRATCH_MNT/file-3-8388608-falloc: well-aligned
-SCRATCH_MNT/file-3-8388608-write: well-aligned
-SCRATCH_MNT/file-4-8388608-falloc: well-aligned
-SCRATCH_MNT/file-4-8388608-write: well-aligned
-=== Testing size 256*128k on 128k stripe ===
-SCRATCH_MNT/file-1-33554432-falloc: well-aligned
-SCRATCH_MNT/file-1-33554432-write: well-aligned
-SCRATCH_MNT/file-2-33554432-falloc: well-aligned
-SCRATCH_MNT/file-2-33554432-write: well-aligned
-SCRATCH_MNT/file-3-33554432-falloc: well-aligned
-SCRATCH_MNT/file-3-33554432-write: well-aligned
-SCRATCH_MNT/file-4-33554432-falloc: well-aligned
-SCRATCH_MNT/file-4-33554432-write: well-aligned
-=== Testing size 1g falloc on 128k stripe ===
-SCRATCH_MNT/file-1g-falloc: well-aligned
-=== Testing size 1073745920 falloc on 128k stripe ===
-SCRATCH_MNT/file-1073745920-falloc: well-aligned
diff --git a/224 b/224
deleted file mode 100755 (executable)
index 23ee7c2..0000000
--- a/224
+++ /dev/null
@@ -1,85 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 224
-#
-# Delayed allocation at ENOSPC test
-#
-# Derived from a test case from Lachlan McIlroy and improved to
-# reliably trigger a BUG in xfs_get_blocks(). Despite this XFS
-# focus, the test can to run on any filesystem to exercise ENOSPC
-# behaviour.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 Dave Chinner.  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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-_cleanup()
-{
-       rm -f $tmp.*
-       rm -f $SCRATCH_MNT/testfile.*
-}
-
-trap "_cleanup ; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_scratch
-
-# make a 1GB filesystem
-_scratch_mkfs_sized `expr 1024 \* 1024 \* 1024` > $seq.full 2>&1
-_scratch_mount >> $seq.full 2>&1
-
-# set the reserved block pool to almost empty for XFS
-if [ "$FSTYP" = "xfs" ]; then
-       xfs_io -x -c "resblks 4" $SCRATCH_MNT >> $seq.full 2>&1
-fi
-
-FILES=1000
-for i in `seq 0 1 $FILES`; do
-
-       # set the file size to be 10MB - that way the direct IO will always try
-       # to read at least 10MB even if only 4k was written. This allows
-       # discarded delalloc pages that would have been beyond EOF to be
-       # tripped over.
-        (
-               sleep 5
-               xfs_io -f -c "truncate 10485760" $SCRATCH_MNT/testfile.$i
-               dd if=/dev/zero of=$SCRATCH_MNT/testfile.$i bs=4k conv=notrunc
-       ) > /dev/null 2>&1 &
-done
-wait
-
-for i in `seq 0 1 $FILES`; do
-        dd of=/dev/null if=$SCRATCH_MNT/testfile.$i bs=512k iflag=direct > /dev/null 2>&1 &
-done
-wait
-echo "*** Silence is golden ***"
-status=0
-exit
diff --git a/224.out b/224.out
deleted file mode 100644 (file)
index cf4fd9c..0000000
--- a/224.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 224
-*** Silence is golden ***
diff --git a/225 b/225
deleted file mode 100755 (executable)
index c09bd2a..0000000
--- a/225
+++ /dev/null
@@ -1,77 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 225
-#
-# Run the fiemap (file extent mapping) tester
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Eric Sandeen.  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`
-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.*
-       _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_require_scratch
-
-_scratch_mkfs > /dev/null 2>&1
-_scratch_mount > /dev/null 2>&1
-
-rm -f $seq.full
-fiemapfile=$SCRATCH_MNT/$seq.fiemap
-fiemaplog=$SCRATCH_MNT/$seq.log
-
-
-[ -x $here/src/fiemap-tester ] || _notrun "fiemap-tester not built"
-
-seed=`date +%s`
-
-echo "using seed $seed" >> $fiemaplog
-
-echo "fiemap run without preallocation, with sync"
-$here/src/fiemap-tester -q -S -s $seed -p 0 -r 200 $fiemapfile 2>&1 | tee -a $fiemaplog
-
-if [ $? -ne 0 ]; then
-       if grep -q "Operation not supported" $fiemaplog; then
-             _notrun "FIEMAP not supported by this filesystem type: $FSTYP"
-       fi
-       status=$?
-       exit
-fi
-
-echo "fiemap run without preallocation or sync"
-$here/src/fiemap-tester -q -s $seed -p 0 -r 200 $fiemapfile 2>&1 | tee -a $fiemaplog
-
-status=0
-exit
diff --git a/225.out b/225.out
deleted file mode 100644 (file)
index b4f6477..0000000
--- a/225.out
+++ /dev/null
@@ -1,3 +0,0 @@
-QA output created by 225
-fiemap run without preallocation, with sync
-fiemap run without preallocation or sync
diff --git a/226 b/226
deleted file mode 100755 (executable)
index 2179f2a..0000000
--- a/226
+++ /dev/null
@@ -1,77 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 226
-#
-# Test for prealloc space leaks by rewriting the same file in a loop
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2009 Eric Sandeen.  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`
-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
-
-_supported_fs generic
-_supported_os Linux IRIX
-_require_scratch
-
-# real QA test starts here
-rm -f $seq.full
-
-umount $SCRATCH_DEV 2>/dev/null
-echo "--> mkfs 256m filesystem"
-_scratch_mkfs_sized `expr 256 \* 1024 \* 1024` >> $seq.full 2>&1
-_scratch_mount
-
-loops=16
-
-# Buffer size argument supplied to xfs_io "pwrite" command
-buffer="-b $(expr 512 \* 1024)"
-
-echo "--> $loops buffered 64m writes in a loop"
-for I in `seq 1 $loops`; do
-       echo -n "$I "
-       xfs_io -F -f \
-               -c "pwrite ${buffer} 0 64m" $SCRATCH_MNT/test >> $seq.full
-       rm -f $SCRATCH_MNT/test
-done
-
-echo
-umount $SCRATCH_DEV
-_scratch_mount
-
-echo "--> $loops direct 64m writes in a loop"
-for I in `seq 1 $loops`; do
-       echo -n "$I "
-       xfs_io -F -f -d \
-               -c "pwrite ${buffer} 0 64m" $SCRATCH_MNT/test >> $seq.full
-       rm -f $SCRATCH_MNT/test 
-done
-
-echo
-umount $SCRATCH_DEV
-
-status=0
-exit
diff --git a/226.out b/226.out
deleted file mode 100644 (file)
index b5f60bf..0000000
--- a/226.out
+++ /dev/null
@@ -1,6 +0,0 @@
-QA output created by 226
---> mkfs 256m filesystem
---> 16 buffered 64m writes in a loop
-1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
---> 16 direct 64m writes in a loop
-1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
diff --git a/228 b/228
deleted file mode 100755 (executable)
index 2704934..0000000
--- a/228
+++ /dev/null
@@ -1,85 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 228
-#
-# Check if fallocate respects RLIMIT_FSIZE
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 IBM Corporation. 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`
-echo "QA output created by $seq"
-
-_cleanup()
-{
-       cd /
-       rm -f $tmp.*
-       sysctl -w kernel.core_pattern="$core_pattern" &>/dev/null
-       ulimit -c $ulimit_c
-}
-
-here=`pwd`
-tmp=$TEST_DIR/$$
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15 25
-
-# get standard environment, filters and checks
-. ./common.rc
-
-# real QA test starts here
-# generic, but xfs_io's fallocate must work
-_supported_fs generic
-# only Linux supports fallocate
-_supported_os Linux
-
-[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
-
-rm -f $seq.full
-
-# Sanity check to see if fallocate works
-_require_xfs_io_falloc
-
-# Check if we have good enough space available
-avail=`df -P $TEST_DIR | awk 'END {print $4}'`
-[ "$avail" -ge 104000 ] || _notrun "Test device is too small ($avail KiB)"
-
-# Suppress core dumped messages
-core_pattern=`sysctl kernel.core_pattern | awk -F = '{print $NF}'`
-ulimit_c=`ulimit -c`
-sysctl -w kernel.core_pattern=core &>/dev/null
-ulimit -c 0
-
-# Set the FSIZE ulimit to 100MB and check
-ulimit -f 102400
-flim=`ulimit -f`
-[ "$flim" != "unlimited" ] || _notrun "Unable to set FSIZE ulimit"
-[ "$flim" -eq 102400 ] || _notrun "FSIZE ulimit is not correct (100 MB)"
-
-echo "File size limit is now set to 100 MB."
-echo "Let us try to preallocate 101 MB. This should fail."
-$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
-rm -f $TEST_DIR/ouch
-
-echo "Let us now try to preallocate 50 MB. This should succeed."
-$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
-rm -f $TEST_DIR/ouch
-
-echo "Test over."
-# success, all done
-status=0
-exit
diff --git a/228.out b/228.out
deleted file mode 100644 (file)
index 842d4bb..0000000
--- a/228.out
+++ /dev/null
@@ -1,6 +0,0 @@
-QA output created by 228
-File size limit is now set to 100 MB.
-Let us try to preallocate 101 MB. This should fail.
-File size limit exceeded
-Let us now try to preallocate 50 MB. This should succeed.
-Test over.
diff --git a/230 b/230
deleted file mode 100755 (executable)
index a442857..0000000
--- a/230
+++ /dev/null
@@ -1,145 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 230
-#
-# Simple quota enforcement test.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 Jan Kara.  All Rights Reserved.
-#
-# Based on test 219,
-# Copyright (c) 2005 Silicon Graphics, 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`
-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.quota
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux #IRIX
-_require_scratch
-_require_quota
-_require_user
-_need_to_be_root
-
-test_files()
-{
-       echo; echo "### create files, setting up ownership (type=$type)"
-       touch $SCRATCH_MNT/file{1,2} 2>/dev/null
-       chown $qa_user $SCRATCH_MNT/file{1,2} 2>/dev/null
-       chgrp $qa_user $SCRATCH_MNT/file{1,2} 2>/dev/null
-       chmod 777 $SCRATCH_MNT 2>/dev/null
-}
-
-test_enforcement()
-{
-       echo "### some buffered IO (type=$type)"
-       echo "--- initiating IO..." >>$seq.full
-       # Firstly fit below block soft limit
-       echo "Write 900k..."
-       su $qa_user -c "$XFS_IO_PROG -F -c 'pwrite 0 900k' -c fsync \
-               $SCRATCH_MNT/file1" 2>&1 >>$seq.full | tee -a $seq.full
-       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
-       # Secondly overcome block soft limit
-       echo "Rewrite 1001k..."
-       su $qa_user -c "$XFS_IO_PROG -F -c 'pwrite 0 1001k' -c fsync \
-               $SCRATCH_MNT/file1" 2>&1 >>$seq.full | tee -a $seq.full
-       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
-       # Now try to overcome block hardlimit
-       echo "Write 1000k..."
-       su $qa_user -c "$XFS_IO_PROG -F -c 'pwrite 0 1000k' -c fsync \
-               $SCRATCH_MNT/file2" 2>&1 >>$seq.full | tee -a $seq.full
-       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
-       # Now sleep for grace time and check that softlimit got enforced
-       sleep $((grace+1))
-       echo "Write 4096..."
-       su $qa_user -c "$XFS_IO_PROG -F -c 'truncate 0' -c 'pwrite 0 4096' \
-               $SCRATCH_MNT/file2" 2>&1 >>$seq.full | tee -a $seq.full
-       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
-       # And now the softlimit test for inodes
-       # First reset space limits so that we don't have problems with
-       # space reservations on XFS
-       setquota -$type $qa_user 0 0 3 5 $SCRATCH_MNT
-       echo "Touch 3+4"
-       su $qa_user -c "touch $SCRATCH_MNT/file3 $SCRATCH_MNT/file4" \
-               2>&1 >>$seq.full | _filter_scratch | tee -a $seq.full
-       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
-       # Try to exceed inode hardlimit
-       echo "Touch 5+6"
-       su $qa_user -c "touch $SCRATCH_MNT/file5 $SCRATCH_MNT/file6" \
-               2>&1 >>$seq.full | _filter_scratch | tee -a $seq.full
-       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
-       # Wait and check grace time enforcement
-       rm -f $SCRATCH_MNT/file5 >>$seq.full 2>&1
-       sleep $((grace+1))
-       echo "Touch 5"
-       su $qa_user -c "touch $SCRATCH_MNT/file5" 2>&1 >>$seq.full |
-               _filter_scratch | tee -a $seq.full
-       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
-       echo "--- completed IO ($type)" >>$seq.full
-}
-
-cleanup_files()
-{
-       rm -f $SCRATCH_MNT/file{1,2,3,4,5,6}
-}
-
-# real QA test starts here
-rm -f $seq.full
-
-grace=2
-
-_scratch_mkfs >> $seq.full 2>&1
-_scratch_mount "-o usrquota,grpquota"
-quotacheck -u -g $SCRATCH_MNT 2>/dev/null
-quotaon $SCRATCH_MNT 2>/dev/null
-setquota -u $qa_user 1000 2000 3 5 $SCRATCH_MNT
-setquota -u -t $grace $grace $SCRATCH_MNT
-setquota -g $qa_user 1000 2000 3 5 $SCRATCH_MNT
-setquota -g -t $grace $grace $SCRATCH_MNT
-umount $SCRATCH_DEV
-
-echo; echo "### test user limit enforcement"
-_scratch_mount "-o usrquota"
-quotaon $SCRATCH_MNT 2>/dev/null
-type=u
-test_files
-test_enforcement
-cleanup_files
-umount $SCRATCH_DEV 2>/dev/null
-
-echo; echo "### test group limit enforcement"
-_scratch_mount "-o grpquota"
-quotaon $SCRATCH_MNT 2>/dev/null
-type=g
-test_files
-test_enforcement
-cleanup_files
-umount $SCRATCH_DEV 2>/dev/null
-
-status=0
-exit
diff --git a/230.out b/230.out
deleted file mode 100644 (file)
index d2d434c..0000000
--- a/230.out
+++ /dev/null
@@ -1,33 +0,0 @@
-QA output created by 230
-
-### test user limit enforcement
-
-### create files, setting up ownership (type=u)
-### some buffered IO (type=u)
-Write 900k...
-Rewrite 1001k...
-Write 1000k...
-pwrite64: Disk quota exceeded
-Write 4096...
-pwrite64: Disk quota exceeded
-Touch 3+4
-Touch 5+6
-touch: cannot touch `SCRATCH_MNT/file6': Disk quota exceeded
-Touch 5
-touch: cannot touch `SCRATCH_MNT/file5': Disk quota exceeded
-
-### test group limit enforcement
-
-### create files, setting up ownership (type=g)
-### some buffered IO (type=g)
-Write 900k...
-Rewrite 1001k...
-Write 1000k...
-pwrite64: Disk quota exceeded
-Write 4096...
-pwrite64: Disk quota exceeded
-Touch 3+4
-Touch 5+6
-touch: cannot touch `SCRATCH_MNT/file6': Disk quota exceeded
-Touch 5
-touch: cannot touch `SCRATCH_MNT/file5': Disk quota exceeded
diff --git a/231 b/231
deleted file mode 100755 (executable)
index 6d8bda7..0000000
--- a/231
+++ /dev/null
@@ -1,119 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 231
-#
-# Run fsx with quotas enabled and verify accounted quotas in the end
-#
-# Derived from test 127
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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.quota
-
-FSX_FILE_SIZE=64000000
-FSX_ARGS="-q -l $FSX_FILE_SIZE -o 65536 -N 20000"
-
-_fsx()
-{
-       tasks=$1
-       echo "=== FSX Standard Mode, Memory Mapping, $tasks Tasks ==="
-       for (( i = 1; i <= $tasks; i++ )); do
-               SEED=$RANDOM
-               echo "ltp/fsx $FSX_ARGS -S $SEED $SCRATCH_MNT/fsx_file$i" >>$seq.full
-               su $qa_user -c "ltp/fsx $FSX_ARGS -S $SEED \
-                       $SCRATCH_MNT/fsx_file$i" >$tmp.output$i 2>&1 &
-       done
-
-       for (( i = 1; i <= $tasks; i++ )); do
-               if ! wait %$i; then
-                       cat $tmp.output$i | tee -a $seq.full
-                       wait
-                       return 1
-               fi
-               $XFS_IO_PROG -F -c 'fsync' $SCRATCH_MNT/fsx_file$i
-               cat $tmp.output$i | tee -a $seq.full
-       done
-       return 0
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_require_scratch
-_require_quota
-_require_user
-_need_to_be_root
-
-_scratch_mkfs >> $seq.full 2>&1
-_scratch_mount "-o usrquota,grpquota"
-chmod 777 $SCRATCH_MNT
-quotacheck -u -g $SCRATCH_MNT 2>/dev/null
-quotaon -u -g $SCRATCH_MNT 2>/dev/null
-
-if ! _fsx 1; then
-       umount $SCRATCH_DEV 2>/dev/null
-       status=1
-       exit
-fi
-
-if ! _check_quota_usage; then
-       umount $SCRATCH_DEV 2>/dev/null
-       status=1
-       exit
-fi
-
-if ! _fsx 4; then
-       umount $SCRATCH_DEV 2>/dev/null
-       status=1
-       exit
-fi
-
-if ! _check_quota_usage; then
-       umount $SCRATCH_DEV 2>/dev/null
-       status=1
-       exit
-fi
-
-#flush cache after write
-FSX_ARGS="-f $FSX_ARGS"
-if ! _fsx 1; then
-       umount $SCRATCH_DEV 2>/dev/null
-       status=1
-       exit
-fi
-
-if ! _check_quota_usage; then
-       umount $SCRATCH_DEV 2>/dev/null
-       status=1
-       exit
-fi
-
-umount $SCRATCH_DEV 2>/dev/null
-status=0
-exit
diff --git a/231.out b/231.out
deleted file mode 100644 (file)
index ef264a9..0000000
--- a/231.out
+++ /dev/null
@@ -1,16 +0,0 @@
-QA output created by 231
-=== FSX Standard Mode, Memory Mapping, 1 Tasks ===
-All operations completed A-OK!
-Comparing user usage
-Comparing group usage
-=== FSX Standard Mode, Memory Mapping, 4 Tasks ===
-All operations completed A-OK!
-All operations completed A-OK!
-All operations completed A-OK!
-All operations completed A-OK!
-Comparing user usage
-Comparing group usage
-=== FSX Standard Mode, Memory Mapping, 1 Tasks ===
-All operations completed A-OK!
-Comparing user usage
-Comparing group usage
diff --git a/232 b/232
deleted file mode 100755 (executable)
index f7a1eb7..0000000
--- a/232
+++ /dev/null
@@ -1,92 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 232
-#
-# Run fsstress with quotas enabled and verify accounted quotas in the end
-#
-# Derived from test 231
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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.quota
-
-_filter_num()
-{
-       tee -a $here/$seq.full |\
-       sed -e 's/[0-9][0-9]* inodes/I inodes/g' \
-           -e 's/[0-9][0-9]* paths/P paths/g' \
-           -e 's/seed = [0-9][0-9]*/seed = S/'
-}
-
-_fsstress()
-{
-       echo ""
-       echo "Testing fsstress"
-       echo ""
-
-       out=$SCRATCH_MNT/fsstress.$$
-       count=2000
-       args=`_scale_fsstress_args -d $out -n $count -p 7`
-
-       echo "fsstress $args" >> tee -a $here/$seq.full
-       if ! $FSSTRESS_PROG $args | tee -a $here/$seq.full | _filter_num
-       then
-               echo "    fsstress $args returned $?"
-               cat $tmp.out | tee -a $here/$seq.full
-               status=1
-       fi
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_require_scratch
-_require_quota
-_need_to_be_root
-
-_scratch_mkfs >> $seq.full 2>&1
-_scratch_mount "-o usrquota,grpquota"
-chmod 777 $SCRATCH_MNT
-quotacheck -u -g $SCRATCH_MNT 2>/dev/null
-quotaon -u -g $SCRATCH_MNT 2>/dev/null
-
-if ! _fsstress; then
-       umount $SCRATCH_DEV 2>/dev/null
-       exit
-fi
-
-if ! _check_quota_usage; then
-       umount $SCRATCH_DEV 2>/dev/null
-       status=1
-       exit
-fi
-
-umount $SCRATCH_DEV 2>/dev/null
-status=0
-exit
diff --git a/232.out b/232.out
deleted file mode 100644 (file)
index 5da53d4..0000000
--- a/232.out
+++ /dev/null
@@ -1,7 +0,0 @@
-QA output created by 232
-
-Testing fsstress
-
-seed = S
-Comparing user usage
-Comparing group usage
diff --git a/233 b/233
deleted file mode 100755 (executable)
index 330041c..0000000
--- a/233
+++ /dev/null
@@ -1,101 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 233
-#
-# Run fsstress with quotas enabled and limits set low and verify accounted
-# quotas in the end
-#
-# Derived from test 231
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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.quota
-
-FSX_FILE_SIZE=64000000
-FSX_ARGS="-q -l $FSX_FILE_SIZE -o 65536 -S 191110531 -N 100000"
-
-_filter_num()
-{
-       tee -a $here/$seq.full |\
-       sed -e 's/[0-9][0-9]* inodes/I inodes/g' \
-           -e 's/[0-9][0-9]* paths/P paths/g' \
-           -e 's/seed = [0-9][0-9]*/seed = S/'
-}
-
-_fsstress()
-{
-       echo ""
-       echo "Testing fsstress"
-       echo ""
-
-       out=$SCRATCH_MNT/fsstress.$$
-       count=5000
-       args=`_scale_fsstress_args -z \
--f rmdir=20 -f link=10 -f creat=10 -f mkdir=10 -f unlink=20 -f symlink=10 \
--f rename=10 -f fsync=2 -f write=15 -f dwrite=15 \
--n $count -d $out -p 7`
-
-       echo "fsstress $args" >> tee -a $here/$seq.full
-       if ! su $qa_user -c "$FSSTRESS_PROG $args" | tee -a $here/$seq.full | _filter_num
-       then
-               echo "    fsstress $args returned $?"
-               cat $tmp.out | tee -a $here/$seq.full
-               status=1
-       fi
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_require_scratch
-_require_quota
-_require_user
-_need_to_be_root
-
-_scratch_mkfs >> $seq.full 2>&1
-_scratch_mount "-o usrquota,grpquota"
-chmod 777 $SCRATCH_MNT
-quotacheck -u -g $SCRATCH_MNT 2>/dev/null
-quotaon -u -g $SCRATCH_MNT 2>/dev/null
-setquota -u $qa_user 32000 32000 1000 1000 $SCRATCH_MNT 2>/dev/null
-
-if ! _fsstress; then
-       umount $SCRATCH_DEV 2>/dev/null
-       exit
-fi
-
-if ! _check_quota_usage; then
-       umount $SCRATCH_DEV 2>/dev/null
-       status=1
-       exit
-fi
-
-umount $SCRATCH_DEV 2>/dev/null
-status=0
-exit
diff --git a/233.out b/233.out
deleted file mode 100644 (file)
index 91c1a30..0000000
--- a/233.out
+++ /dev/null
@@ -1,7 +0,0 @@
-QA output created by 233
-
-Testing fsstress
-
-seed = S
-Comparing user usage
-Comparing group usage
diff --git a/234 b/234
deleted file mode 100755 (executable)
index dbb13f6..0000000
--- a/234
+++ /dev/null
@@ -1,106 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 234
-#
-# Stress setquota and setinfo handling.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 Jan Kara.  All Rights Reserved.
-#
-# Based on test 219,
-# Copyright (c) 2005 Silicon Graphics, 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`
-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.quota
-
-test_setting()
-{
-       echo; echo "### test limits and info setting"
-       count=2000
-       procs=5
-       idmod=200000
-       seed=$RANDOM
-       RANDOM=$seed
-       echo "Starting test with procs=$procs, idmod=$idmod, and seed=$seed" >>$seq.full
-
-       for (( i = 0; i < $procs; i++ )); do
-               ( SETUCOUNT=1; SETGCOUNT=1; SETUIDS[0]=0; SETGIDS[0]=0
-               for (( j = 0; j < $count; j++ )); do
-                       OP=$(($RANDOM%22))
-                       UG=$(($OP%2))
-                       OP=$(($OP/2))
-                       if [ $UG -eq 1 ]; then
-                               type='u'
-                       else
-                               type='g'
-                       fi
-                       if [ $OP -eq 10 ]; then
-                               setquota -t -$type $j $j $SCRATCH_MNT
-                       elif [ $OP -lt 5 ]; then
-                               ID=$((($RANDOM*32768+$RANDOM)%$idmod))
-                               if [ $UG -eq 1 ]; then
-                                       SETUIDS[$SETUCOUNT]=$ID
-                                       SETUCOUNT=$(($SETUCOUNT+1))
-                               else
-                                       SETGIDS[$SETGCOUNT]=$ID
-                                       SETGCOUNT=$(($SETGCOUNT+1))
-                               fi
-                               setquota -$type $ID $j $j $j $j $SCRATCH_MNT
-                       else
-                               if [ $UG -eq 1 ]; then
-                                       ID=${SETUIDS[$(($RANDOM%$SETUCOUNT))]}
-                               else
-                                       ID=${SETGIDS[$(($RANDOM%$SETGCOUNT))]}
-                               fi
-                               setquota -$type $ID 0 0 0 0 $SCRATCH_MNT
-                       fi
-               done )&
-       done
-       wait
-       echo "### done with testing"
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux #IRIX
-_require_scratch
-_require_quota
-_need_to_be_root
-
-# real QA test starts here
-rm -f $seq.full
-
-_scratch_mkfs >> $seq.full 2>&1
-_scratch_mount "-o usrquota,grpquota"
-quotacheck -u -g $SCRATCH_MNT 2>/dev/null
-quotaon -u -g $SCRATCH_MNT 2>/dev/null
-test_setting
-umount $SCRATCH_DEV
-
-status=0
-exit
diff --git a/234.out b/234.out
deleted file mode 100644 (file)
index 78d1587..0000000
--- a/234.out
+++ /dev/null
@@ -1,4 +0,0 @@
-QA output created by 234
-
-### test limits and info setting
-### done with testing
diff --git a/235 b/235
deleted file mode 100755 (executable)
index f4a1fce..0000000
--- a/235
+++ /dev/null
@@ -1,78 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 235
-#
-# Test whether quota gets properly reenabled after remount read-write
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 Jan Kara.  All Rights Reserved.
-#
-# Based on test 219,
-# Copyright (c) 2005 Silicon Graphics, 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`
-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.quota
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux #IRIX
-_require_scratch
-_require_quota
-_require_user
-_need_to_be_root
-
-# real QA test starts here
-rm -f $seq.full
-
-_scratch_mkfs >> $seq.full 2>&1
-_scratch_mount "-o usrquota,grpquota"
-quotacheck -u -g $SCRATCH_MNT 2>/dev/null
-quotaon $SCRATCH_MNT 2>/dev/null
-
-touch $SCRATCH_MNT/testfile
-chown $qa_user:$qa_user $SCRATCH_MNT/testfile
-
-repquota -u -g $SCRATCH_MNT  | grep -v "^root" | _filter_scratch
-
-# XXX This is a nasty hack.  remount doesn't work on a fileystem
-# with a context; see https://bugzilla.redhat.com/show_bug.cgi?id=563267
-#
-# We work around it by editing the context out of mtab.  Sigh.
-sed -i "s#^$SCRATCH_DEV\(.*\),context=\"system_u:object_r:nfs_t:s0\"#$SCRATCH_DEV\1#" /etc/mtab
-mount -o remount,ro $SCRATCH_DEV 2>&1 | tee -a $seq.full | _filter_scratch
-touch $SCRATCH_MNT/failed 2>&1 | tee -a $seq.full | _filter_scratch
-mount -o remount,rw $SCRATCH_DEV 2>&1 | tee -a $seq.full | _filter_scratch
-
-$XFS_IO_PROG -F -c 'pwrite 0 8k' -c 'fsync' \
-                       $SCRATCH_MNT/testfile >>$seq.full 2>&1
-repquota -u -g $SCRATCH_MNT  | grep -v "^root" | _filter_scratch
-
-umount $SCRATCH_DEV 2>/dev/null
-
-status=0
-exit
diff --git a/235.out b/235.out
deleted file mode 100644 (file)
index a095694..0000000
--- a/235.out
+++ /dev/null
@@ -1,34 +0,0 @@
-QA output created by 235
-*** Report for user quotas on device SCRATCH_DEV
-Block grace time: 7days; Inode grace time: 7days
-                        Block limits                File limits
-User            used    soft    hard  grace    used  soft  hard  grace
-----------------------------------------------------------------------
-fsgqa     --       0       0       0              1     0     0       
-
-
-*** Report for group quotas on device SCRATCH_DEV
-Block grace time: 7days; Inode grace time: 7days
-                        Block limits                File limits
-Group           used    soft    hard  grace    used  soft  hard  grace
-----------------------------------------------------------------------
-fsgqa     --       0       0       0              1     0     0       
-
-
-touch: cannot touch `SCRATCH_MNT/failed': Read-only file system
-*** Report for user quotas on device SCRATCH_DEV
-Block grace time: 7days; Inode grace time: 7days
-                        Block limits                File limits
-User            used    soft    hard  grace    used  soft  hard  grace
-----------------------------------------------------------------------
-fsgqa     --       8       0       0              1     0     0       
-
-
-*** Report for group quotas on device SCRATCH_DEV
-Block grace time: 7days; Inode grace time: 7days
-                        Block limits                File limits
-Group           used    soft    hard  grace    used  soft  hard  grace
-----------------------------------------------------------------------
-fsgqa     --       8       0       0              1     0     0       
-
-
diff --git a/236 b/236
deleted file mode 100755 (executable)
index ec70cdb..0000000
--- a/236
+++ /dev/null
@@ -1,68 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 236
-#
-# Check ctime updated or not if file linked
-# See also http://marc.info/?l=linux-btrfs&m=127434439020230&w=2
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 FUJITSU LIMITED. 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`
-echo "QA output created by $seq"
-
-_cleanup()
-{
-       rm -f $TEST_DIR/ouch*
-}
-
-here=`pwd`
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-
-# real QA test starts here
-_supported_fs generic
-# only Linux supports fallocate
-_supported_os Linux
-
-rm -f $TEST_DIR/ouch*
-
-# create a file and get its ctime
-touch $TEST_DIR/ouch
-ctime=`stat -c %Z $TEST_DIR/ouch`
-sleep 1
-
-# create a link to a file and get existing file's ctime
-link $TEST_DIR/ouch $TEST_DIR/ouch2
-ctime2=`stat -c %Z $TEST_DIR/ouch`
-
-# check ctime updated
-if [ $ctime2 -le $ctime ]; then
-       echo "ctime: $ctime -> $ctime2 "
-       echo "Fatal error: ctime not updated after link"
-       _cleanup
-       exit 1
-fi
-
-echo "Test over."
-# success, all done
-status=0
-exit
diff --git a/236.out b/236.out
deleted file mode 100644 (file)
index f313fbb..0000000
--- a/236.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 236
-Test over.
diff --git a/237 b/237
deleted file mode 100755 (executable)
index 7ebb88e..0000000
--- a/237
+++ /dev/null
@@ -1,78 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 237
-#
-# Check user B can setfacl a file which belongs to user A
-# See also http://marc.info/?l=linux-btrfs&m=127434445620298&w=2
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 FUJITSU LIMITED. 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-runas=$here/src/runas
-status=1        # FAILure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.attr
-
-_cleanup()
-{
-       cd /
-       rm -f $tmp.*
-       [ -n "$testdir" ] && rm -rf $testdir/$seq.dir1
-       _cleanup_testdir
-}
-
-# real QA test starts here
-_supported_fs generic
-# only Linux supports fallocate
-_supported_os Linux
-
-[ -x $runas ] || _notrun "$runas executable not found"
-
-rm -f $seq.full
-
-_setup_testdir
-
-_need_to_be_root
-_acl_setup_ids
-_require_acls
-
-# get dir
-cd $testdir
-rm -rf $seq.dir1
-mkdir $seq.dir1
-cd $seq.dir1
-
-touch file1
-chown $acl1.$acl1 file1
-
-echo "Expect to FAIL"
-$runas -u $acl2 -g $acl2 -- `which setfacl` -m u::rwx file1 2>&1 | sed 's/^setfacl: \/.*file1: Operation not permitted$/setfacl: file1: Operation not permitted/'
-
-echo "Test over."
-# success, all done
-status=0
-exit
diff --git a/237.out b/237.out
deleted file mode 100644 (file)
index 09d98c6..0000000
--- a/237.out
+++ /dev/null
@@ -1,4 +0,0 @@
-QA output created by 237
-Expect to FAIL
-setfacl: file1: Operation not permitted
-Test over.
diff --git a/239 b/239
deleted file mode 100755 (executable)
index 8aa4ed0..0000000
--- a/239
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 239
-#
-# Read from a sparse file immedialy after filling a hole to test for races
-# in unwritten extent conversion.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 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`
-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 $TEST_DIR/tst-aio-dio-sparse-unwritten
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_supported_fs generic
-_supported_os Linux
-
-_require_sparse_files
-_require_aiodio aio-dio-hole-filling-race
-
-echo "Silence is golden"
-
-for i in `seq 1 500`; do
-  $AIO_TEST $TEST_DIR/tst-aio-dio-hole-filling-race || break
-done
-
-status=$?
-exit
diff --git a/239.out b/239.out
deleted file mode 100644 (file)
index aa7ebf3..0000000
--- a/239.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 239
-Silence is golden
diff --git a/240 b/240
deleted file mode 100755 (executable)
index d5f8940..0000000
--- a/240
+++ /dev/null
@@ -1,74 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 240
-#
-# Test that non-block-aligned aio+dio into holes does not leave
-# zero'd out portions of the file
-#
-# QEMU IO to a file-backed device with misaligned partitions
-# can send this sort of IO
-#
-# This test need only be run in the case where the logical block size
-# of the device can be smaller than the file system block size.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 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`
-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
-
-_supported_fs generic
-_supported_os Linux
-
-_require_sparse_files
-_require_aiodio aiodio_sparse2
-
-echo "Silence is golden."
-
-# real QA test starts here
-rm -f $seq.full
-
-rm -f $TEST_DIR/aiodio_sparse
-
-logical_block_size=`blockdev --getss $TEST_DEV`
-fs_block_size=`stat -f $TEST_DIR | grep "Block size:" | awk '{print $3}'`
-
-if [ $fs_block_size -le $logical_block_size ]; then
-       _notrun "fs block size must be larger than the device block size.  fs block size: $fs_block_size, device block size: $logical_block_size"
-fi
-
-# 2 threads, fs block sized writes, 64k filesize, stride through file by
-# fs block size, start at logical block size offset
-$AIO_TEST -i 2 -w $fs_block_size -s 64k -n $fs_block_size -o $logical_block_size "$TEST_DIR/aiodio_sparse"
-
-status=$?
-exit
diff --git a/240.out b/240.out
deleted file mode 100644 (file)
index b6bdbce..0000000
--- a/240.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 240
-Silence is golden.
diff --git a/241 b/241
deleted file mode 100755 (executable)
index ee572a7..0000000
--- a/241
+++ /dev/null
@@ -1,58 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 241
-#
-# Run parallel dbench & check for filesystem corruption
-# This corrupted ext4 inode bitmaps due to races at one point
-#
-# Copyright (c) 2010 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`
-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
-
-_supported_fs generic
-_supported_os Linux
-
-[ "$DBENCH_PROG" = "" ] && _notrun "dbench not found"
-
-echo "Silence is golden."
-
-# real QA test starts here
-rm -f $seq.full
-
-rm -rf $TEST_DIR/dbench
-mkdir $TEST_DIR/dbench
-
-dbench -t 60 -D $TEST_DIR/dbench 4 >> $seq.full
-
-status=$?
-exit
diff --git a/241.out b/241.out
deleted file mode 100644 (file)
index 55cd2c8..0000000
--- a/241.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 241
-Silence is golden.
diff --git a/245 b/245
deleted file mode 100755 (executable)
index fb81d39..0000000
--- a/245
+++ /dev/null
@@ -1,71 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 245
-#
-# Check that directory renames onto non-empty targets fail
-#
-# Based on a bug report and testcase from  Vlado Plaga <rechner@vlado-do.de>
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 Christoph Hellwig.  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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-dir=$TEST_DIR/test-mv
-
-_cleanup()
-{
-       rm -rf $dir
-}
-
-# According to the rename(2) manpage you can get either EEXIST or ENOTEMPTY as an
-# error for trying to rename a non-empty directory, so just catch the error for
-# ENOTMEMPTY and replace it with the EEXIST output so that either result passes
-_filter_directory_not_empty()
-{
-       sed -e "s,Directory not empty,File exists,g"
-}
-trap "_cleanup ; exit \$status" 0 1 2 3 15
-
-
-mkdir $dir
-
-mkdir $dir/aa
-mkdir $dir/ab
-touch $dir/aa/1
-mkdir $dir/ab/aa
-touch $dir/ab/aa/2
-
-mv $dir/ab/aa/ $dir 2>&1 | _filter_test_dir | _filter_directory_not_empty
-
-status=0
-exit $status
diff --git a/245.out b/245.out
deleted file mode 100644 (file)
index 8322aac..0000000
--- a/245.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 245
-mv: cannot move `TEST_DIR/test-mv/ab/aa/' to `TEST_DIR/test-mv/aa': File exists
diff --git a/246 b/246
deleted file mode 100755 (executable)
index d82e27d..0000000
--- a/246
+++ /dev/null
@@ -1,58 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 246
-#
-# Check that truncation after failed writes does not zero too much data.
-#
-# Based on a bug report and testcase from
-# Marius Tolzmann <tolzmann@molgen.mpg.de>
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 Christoph Hellwig.  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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-file=$TEST_DIR/mmap-writev
-
-_cleanup()
-{
-       rm -rf $file
-       rm -rf $file.NEW
-}
-
-trap "_cleanup ; exit \$status" 0 1 2 3 15
-
-echo -n "cccccccccc" > $file
-$here/src/t_mmap_writev $file $file.NEW
-od -t x2 $file.NEW
-
-status=0
-exit $status
diff --git a/246.out b/246.out
deleted file mode 100644 (file)
index e00e48e..0000000
--- a/246.out
+++ /dev/null
@@ -1,4 +0,0 @@
-QA output created by 246
-0000000 6161 6161 6161 6161 6161 6262 6262 6262
-0000020 6262 6262 6363 6363 6363 6363 6363
-0000036
diff --git a/247 b/247
deleted file mode 100755 (executable)
index 3a2f735..0000000
--- a/247
+++ /dev/null
@@ -1,78 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 247
-#
-# Test for race between direct I/O and mmap
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 7 15
-
-_cleanup()
-{
-    cd /
-    rm -f $tmp.* $testfile
-    wait
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-
-# Modify as appropriate.
-_supported_fs generic
-_supported_os Linux
-
-testfile=$TEST_DIR/$seq.$$
-
-loops=500
-iosize=1048576
-
-# Initialise file
-dd if=/dev/zero of=$testfile bs=$iosize count=$loops &> /dev/null
-[ $? -ne 0 ] && exit
-sync
-       
-# Direct I/O overwriter
-dd if=/dev/zero of=$testfile oflag=direct bs=$iosize count=$loops conv=notrunc &> /dev/null &
-[ $? -ne 0 ] && exit
-
-# Mmap writer
-start=`expr $loops - 1`
-for i in `seq $start -1 0`
-do
-       offset=`expr $i \* $iosize`
-       $XFS_IO_PROG -F -f -c "mmap -w $offset $iosize" -c "mwrite $offset $iosize" $testfile
-       [ $? -ne 0 ] && exit
-done
-
-wait
-
-echo "Silence is golden."
-
-# success, all done
-status=0
-exit
diff --git a/247.out b/247.out
deleted file mode 100644 (file)
index 356bfbd..0000000
--- a/247.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 247
-Silence is golden.
diff --git a/248 b/248
deleted file mode 100755 (executable)
index f245c1c..0000000
--- a/248
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 248
-#
-# Test for pwrite hang problem when writing from mmaped buffer of the same page 
-#
-#-----------------------------------------------------------------------
-#    Copyright (c) 2010 Intel Corporation
-#
-#    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; version 2 of the License
-#
-#    This program is distributed in the hope that it will 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 to the Free Software Foundation, Inc., 59
-#    Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-#-----------------------------------------------------------------------
-#
-
-seq=`basename $0`
-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.* $TESTFILE
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-
-# Modify as appropriate.
-_supported_fs generic
-_supported_os Linux
-
-TESTFILE=$TEST_DIR/test_file
-TEST_PROG=$here/src/pwrite_mmap_blocked
-
-$TEST_PROG $TESTFILE
-
-# success, all done
-status=0
-exit
diff --git a/248.out b/248.out
deleted file mode 100644 (file)
index d02c1ac..0000000
--- a/248.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 248
-pwrite 1 bytes from 2 to 3
diff --git a/249 b/249
deleted file mode 100755 (executable)
index e72092d..0000000
--- a/249
+++ /dev/null
@@ -1,64 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 249
-#
-# simple splice(2) test.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011 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`
-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.*
-       rm -f $SRC $DST
-       _cleanup_testdir
-}
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_setup_testdir
-
-echo "Feel the serenity."
-
-SRC=$TEST_DIR/$seq.src
-DST=$TEST_DIR/$seq.dst
-rm -f $seq.full
-
-$XFS_IO_PROG -F -f -c "pwrite -S 0xa5a55a5a 0 32768k" -c fsync $SRC >> $seq.full 2>&1
-[ $? -ne 0 ] && _fail "xfs_io pwrite failed"
-$XFS_IO_PROG -F -f -c "sendfile -i $SRC 0 32768k" -c fsync $DST >> $seq.full 2>&1
-[ $? -ne 0 ] && _fail "xfs_io sendfile failed"
-
-diff -q $SRC $DST
-status=$?
-[ $status -ne 0 ] && _fail "$SRC and $DST differ"
-
-exit
diff --git a/249.out b/249.out
deleted file mode 100644 (file)
index 592696f..0000000
--- a/249.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 249
-Feel the serenity.
diff --git a/251 b/251
deleted file mode 100755 (executable)
index 25f14bd..0000000
--- a/251
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/bin/bash
-# FS QA Test No. 251
-#
-# This test was created in order to verify filesystem FITRIM implementation.
-# By many concurrent copy and remove operations and checking that files
-# does not change after copied into SCRATCH_MNT test if FITRIM implementation
-# corrupts the filesystem (data/metadata).
-#
-#-----------------------------------------------------------------------
-# Copyright 2010 (C) Red Hat, Inc., Lukas Czerner <lczerner@redhat.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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=`mktemp -d`
-status=1    # failure is the default!
-trap "_cleanup; exit \$status" 0 1 3
-trap "_destroy; exit \$status" 2 15
-chpid=0
-mypid=$$
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_require_scratch
-_require_fstrim
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-
-_cleanup()
-{
-       rm -rf $tmp
-}
-
-_destroy()
-{
-       kill $pids $fstrim_pid 2> /dev/null
-       wait $pids $fstrim_pid 2> /dev/null
-       rm -rf $tmp
-}
-
-_destroy_fstrim()
-{
-       kill $fpid 2> /dev/null
-       wait $fpid 2> /dev/null
-}
-
-_fail()
-{
-       echo "$1"
-       kill $mypid 2> /dev/null
-}
-
-_guess_max_minlen()
-{
-       mmlen=100000
-       while [ $mmlen -gt 1 ]; do
-               $FSTRIM_PROG -l $(($mmlen*2))k -m ${mmlen}k $SCRATCH_MNT &> /dev/null && break
-               mmlen=$(($mmlen/2))
-       done
-       echo $mmlen
-}
-
-##
-# Background FSTRIM loop. We are trimming the device in the loop and for
-# test coverage, we are doing whole device trim followed by several smaller
-# trims.
-##
-fstrim_loop()
-{
-       trap "_destroy_fstrim; exit \$status" 2 15
-       fsize=$(df | grep $SCRATCH_MNT | grep $SCRATCH_DEV  | awk '{print $2}')
-       mmlen=$(_guess_max_minlen)
-
-       while true ; do
-               step=$((RANDOM*$RANDOM+4))
-               minlen=$(((RANDOM*($RANDOM%2+1))%$mmlen))
-               start=$RANDOM
-               if [ $((RANDOM%10)) -gt 7 ]; then
-                       $FSTRIM_PROG $SCRATCH_MNT &
-                       fpid=$!
-                       wait $fpid
-               fi
-               while [ $start -lt $fsize ] ; do
-                       $FSTRIM_PROG -m ${minlen}k -o ${start}k -l ${step}k $SCRATCH_MNT &
-                       fpid=$!
-                       wait $fpid
-                       start=$(( $start + $step ))
-               done
-       done
-}
-
-function check_sums() {
-       (
-       cd $SCRATCH_MNT/$p
-       find -P . -xdev -type f -print0 | xargs -0 md5sum | sort -o $tmp/stress.$$.$p
-       )
-
-       diff $tmp/content.sums $tmp/stress.$$.$p
-       if [ $? -ne 0 ]; then
-               _fail "!!!Checksums has changed - Filesystem possibly corrupted!!!\n"
-       fi
-       rm -f $tmp/stress.$$.$p
-}
-
-function run_process() {
-       local p=$1
-       repeat=10
-
-       sleep $((5*$p))s &
-       export chpid=$! && wait $chpid &> /dev/null
-       chpid=0
-
-       while [ $repeat -gt 0 ]; do
-
-               # Remove old directories.
-               rm -rf $SCRATCH_MNT/$p
-               export chpid=$! && wait $chpid &> /dev/null
-
-               # Copy content -> partition.
-               mkdir $SCRATCH_MNT/$p
-               cp -axT $content/ $SCRATCH_MNT/$p/
-               export chpid=$! && wait $chpid &> /dev/null
-
-               check_sums
-               repeat=$(( $repeat - 1 ))
-       done
-}
-
-nproc=20
-content=$here
-
-# Check for FITRIM support
-echo -n "Checking FITRIM support: "
-_test_batched_discard $SCRATCH_MNT || _notrun "FITRIM not supported on $SCRATCH_DEV"
-echo "done."
-
-mkdir -p $tmp
-
-(
-cd $content
-find -P . -xdev -type f -print0 | xargs -0 md5sum | sort -o $tmp/content.sums
-)
-
-echo -n "Running the test: "
-pids=""
-fstrim_loop &
-fstrim_pid=$!
-p=1
-while [ $p -le $nproc ]; do
-       run_process $p &
-       pids="$pids $!"
-       p=$(($p+1))
-done
-echo "done."
-
-wait $pids
-kill $fstrim_pid
-wait $fstrim_pid
-
-status=0
-
-exit
diff --git a/251.out b/251.out
deleted file mode 100644 (file)
index 3017b5e..0000000
--- a/251.out
+++ /dev/null
@@ -1,3 +0,0 @@
-QA output created by 251
-Checking FITRIM support: done.
-Running the test: done.
diff --git a/255 b/255
deleted file mode 100755 (executable)
index d2973a8..0000000
--- a/255
+++ /dev/null
@@ -1,66 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 255
-#
-# Test Generic fallocate hole punching
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2010 Red Hat.  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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-_cleanup()
-{
-    rm -f $tmp.*
-}
-
-trap "_cleanup ; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.punch
-
-# real QA test starts here
-_supported_fs generic 
-_supported_os Linux
-
-_require_xfs_io_falloc_punch
-_require_xfs_io_falloc
-_require_xfs_io_fiemap
-
-testfile=$TEST_DIR/255.$$
-
-# Standard punch hole tests
-_test_generic_punch falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
-
-# Delayed allocation punch hole tests
-_test_generic_punch -d falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
-
-# Multi hole punch tests
-_test_generic_punch -k falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
-
-# Delayed allocation multi punch hole tests
-_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
-
-status=0 ; exit
diff --git a/255.out b/255.out
deleted file mode 100644 (file)
index 2ce882b..0000000
--- a/255.out
+++ /dev/null
@@ -1,307 +0,0 @@
-QA output created by 255
-       1. into a hole
-daa100df6e6711906b61c9ab5aa16032
-       2. into allocated space
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       3. into unwritten space
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-daa100df6e6711906b61c9ab5aa16032
-       4. hole -> data
-0: [0..23]: hole
-1: [24..31]: extent
-2: [32..39]: hole
-cc63069677939f69a6e8f68cae6a6dac
-       5. hole -> unwritten
-0: [0..23]: hole
-1: [24..31]: extent
-2: [32..39]: hole
-daa100df6e6711906b61c9ab5aa16032
-       6. data -> hole
-0: [0..7]: extent
-1: [8..39]: hole
-1b3779878366498b28c702ef88c4a773
-       7. data -> unwritten
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..31]: extent
-3: [32..39]: hole
-1b3779878366498b28c702ef88c4a773
-       8. unwritten -> hole
-0: [0..7]: extent
-1: [8..39]: hole
-daa100df6e6711906b61c9ab5aa16032
-       9. unwritten -> data
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..31]: extent
-3: [32..39]: hole
-cc63069677939f69a6e8f68cae6a6dac
-       10. hole -> data -> hole
-daa100df6e6711906b61c9ab5aa16032
-       11. data -> hole -> data
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       12. unwritten -> data -> unwritten
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-daa100df6e6711906b61c9ab5aa16032
-       13. data -> unwritten -> data
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       14. data -> hole @ EOF
-0: [0..23]: extent
-1: [24..39]: hole
-e1f024eedd27ea6b1c3e9b841c850404
-       15. data -> hole @ 0
-0: [0..15]: hole
-1: [16..39]: extent
-eecb7aa303d121835de05028751d301c
-       16. data -> cache cold ->hole
-0: [0..15]: hole
-1: [16..39]: extent
-eecb7aa303d121835de05028751d301c
-       17. data -> hole in single block file
-0: [0..7]: extent
-13535fd4d496bf0b74bb2335aa4d1b31
-       1. into a hole
-daa100df6e6711906b61c9ab5aa16032
-       2. into allocated space
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       3. into unwritten space
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-daa100df6e6711906b61c9ab5aa16032
-       4. hole -> data
-0: [0..23]: hole
-1: [24..31]: extent
-2: [32..39]: hole
-cc63069677939f69a6e8f68cae6a6dac
-       5. hole -> unwritten
-0: [0..23]: hole
-1: [24..31]: extent
-2: [32..39]: hole
-daa100df6e6711906b61c9ab5aa16032
-       6. data -> hole
-0: [0..7]: extent
-1: [8..39]: hole
-1b3779878366498b28c702ef88c4a773
-       7. data -> unwritten
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..31]: extent
-3: [32..39]: hole
-1b3779878366498b28c702ef88c4a773
-       8. unwritten -> hole
-0: [0..7]: extent
-1: [8..39]: hole
-daa100df6e6711906b61c9ab5aa16032
-       9. unwritten -> data
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..31]: extent
-3: [32..39]: hole
-cc63069677939f69a6e8f68cae6a6dac
-       10. hole -> data -> hole
-daa100df6e6711906b61c9ab5aa16032
-       11. data -> hole -> data
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       12. unwritten -> data -> unwritten
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-daa100df6e6711906b61c9ab5aa16032
-       13. data -> unwritten -> data
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       14. data -> hole @ EOF
-0: [0..23]: extent
-1: [24..39]: hole
-e1f024eedd27ea6b1c3e9b841c850404
-       15. data -> hole @ 0
-0: [0..15]: hole
-1: [16..39]: extent
-eecb7aa303d121835de05028751d301c
-       16. data -> cache cold ->hole
-0: [0..15]: hole
-1: [16..39]: extent
-eecb7aa303d121835de05028751d301c
-       17. data -> hole in single block file
-0: [0..7]: extent
-13535fd4d496bf0b74bb2335aa4d1b31
-       1. into a hole
-0: [0..7]: extent
-1: [8..39]: hole
-5a58e46082be047d0f13bee7974015b9
-       2. into allocated space
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       3. into unwritten space
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       4. hole -> data
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       5. hole -> unwritten
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       6. data -> hole
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       7. data -> unwritten
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       8. unwritten -> hole
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       9. unwritten -> data
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       10. hole -> data -> hole
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       11. data -> hole -> data
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       12. unwritten -> data -> unwritten
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       13. data -> unwritten -> data
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       14. data -> hole @ EOF
-0: [0..23]: extent
-1: [24..39]: hole
-e1f024eedd27ea6b1c3e9b841c850404
-       15. data -> hole @ 0
-0: [0..15]: hole
-1: [16..39]: extent
-eecb7aa303d121835de05028751d301c
-       16. data -> cache cold ->hole
-0: [0..15]: hole
-1: [16..39]: extent
-eecb7aa303d121835de05028751d301c
-       17. data -> hole in single block file
-0: [0..7]: extent
-13535fd4d496bf0b74bb2335aa4d1b31
-       1. into a hole
-0: [0..7]: extent
-1: [8..39]: hole
-5a58e46082be047d0f13bee7974015b9
-       2. into allocated space
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       3. into unwritten space
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       4. hole -> data
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       5. hole -> unwritten
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       6. data -> hole
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       7. data -> unwritten
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       8. unwritten -> hole
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       9. unwritten -> data
-0: [0..7]: extent
-1: [8..23]: hole
-2: [24..39]: extent
-cc58a7417c2d7763adc45b6fcd3fa024
-       10. hole -> data -> hole
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       11. data -> hole -> data
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       12. unwritten -> data -> unwritten
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       13. data -> unwritten -> data
-0: [0..7]: extent
-1: [8..31]: hole
-2: [32..39]: extent
-f6aeca13ec49e5b266cd1c913cd726e3
-       14. data -> hole @ EOF
-0: [0..23]: extent
-1: [24..39]: hole
-e1f024eedd27ea6b1c3e9b841c850404
-       15. data -> hole @ 0
-0: [0..15]: hole
-1: [16..39]: extent
-eecb7aa303d121835de05028751d301c
-       16. data -> cache cold ->hole
-0: [0..15]: hole
-1: [16..39]: extent
-eecb7aa303d121835de05028751d301c
-       17. data -> hole in single block file
-0: [0..7]: extent
-13535fd4d496bf0b74bb2335aa4d1b31
diff --git a/256 b/256
deleted file mode 100755 (executable)
index 0d72795..0000000
--- a/256
+++ /dev/null
@@ -1,176 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 256
-#
-# Test Full File System Hole Punching
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011 IBM Corporation.  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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-_cleanup()
-{
-    rm -f $tmp.*
-}
-
-trap "_cleanup ; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-. ./common.punch
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_xfs_io_falloc_punch
-_require_scratch
-_require_user
-
-testfile=$TEST_DIR/256.$$
-
-
-# _fill_fs()
-#
-# Fills a file system by repeatedly creating files in the given folder
-# starting with the given file size.  Files are reduced in size when
-# they can no longer fit untill no more files can be created.
-#
-# This routine is used by _test_full_fs_punch to test that a hole may
-# still be punched when the disk is full by borrowing reserved blocks.
-# All files are created as a non root user to prevent reserved blocks
-# from being consumed.
-#
-_fill_fs() {
-       local file_size=$1
-       local dir=$2
-       local block_size=$3
-       local file_count=1
-       local bytes_written=0
-
-       if [ $# -ne 3 ]
-       then
-               echo "USAGE: _fill_fs filesize dir block size"
-               exit 1
-       fi
-
-       # Creation of files or folders
-       # must not be done as root or
-       # reserved blocks will be consumed
-       _user_do "mkdir -p $dir &> /dev/null"
-       if [ $? -ne 0 ] ; then
-               return 0
-       fi
-
-       if [ $file_size -lt $block_size ]
-       then
-               $file_size = $block_size
-       fi
-
-       while [ $file_size -ge $block_size ]
-       do
-               bytes_written=0
-               _user_do "$XFS_IO_PROG -F -f -c \"pwrite 0 $file_size\" $dir/$file_count.bin &> /dev/null"
-
-               if [ -f $dir/$file_count.bin ]
-               then
-                       bytes_written=`$XFS_IO_PROG -F -c "stat"  $dir/$file_count.bin | grep stat.size | cut -d ' ' -f3`
-               fi
-
-               # If there was no room to make the file,
-               # then divide it in half, and keep going
-               if [ $bytes_written -lt $file_size ]
-               then
-                       file_size=$(( $file_size / 2 ))
-               fi
-               file_count=$(( $file_count + 1 ))
-
-       done
-}
-
-# _test_full_fs_punch()
-#
-# This function will test that a hole may be punched
-# even when the file system is full.  Reserved blocks
-# should be used to allow a punch hole to proceed even
-# when there is not enough blocks to further fragment the
-# file. To test this, this function will fragment the file
-# system by punching holes in regular intervals and filling
-# the file system between punches.
-#
-_test_full_fs_punch()
-{
-       local hole_len=$1      # The length of the holes to punch
-       local hole_interval=$2 # The interval between the holes
-       local iterations=$3    # The number of holes to punch
-       local file_name=$4     # File to punch holes in
-       local block_size=$5    # File system block size
-       local file_len=$(( $(( $hole_len + $hole_interval )) * $iterations ))
-       local path=`dirname $file_name`
-       local hole_offset=0
-
-       if [ $# -ne 5 ]
-       then
-               echo "USAGE: _test_full_fs_punch hole_len hole_interval iterations file_name block_size"
-               exit 1
-       fi
-
-       rm -f $file_name &> /dev/null
-
-       $XFS_IO_PROG -F -f -c "pwrite 0 $file_len" \
-               -c "fsync" $file_name &> /dev/null
-       chmod 666 $file_name
-
-       _fill_fs $(( 1024 * 1024 * 1024 )) $path/fill $block_size
-
-       for (( i=0; i<$iterations; i++ ))
-       do
-               # This part must not be done as root in order to
-               # test that reserved blocks are used when needed
-               _user_do "$XFS_IO_PROG -F -f -c \"fpunch $hole_offset $hole_len\" $file_name"
-               rc=$?
-               if [ $? -ne 0 ] ; then
-                       echo Punch hole failed
-                       break
-               fi
-
-               hole_offset=$(( $hole_offset + $hole_len + $hole_interval ))
-
-               _fill_fs $hole_len $path/fill.$i $block_size
-
-       done
-}
-
-# Make a small file system to fill
-umount $SCRATCH_DEV &> /dev/null
-_scratch_mkfs_sized $(( 1024 * 1024 * 1024 )) &> /dev/null
-_scratch_mount
-# Test must be able to write files with non-root permissions
-chmod 777 $SCRATCH_MNT
-
-block_size=`stat -f $SCRATCH_DEV | grep "Block size" | cut -d " " -f3`
-_test_full_fs_punch $(( $block_size * 2 )) $block_size 500 $SCRATCH_MNT/252.$$ $block_size
-
-status=0 ; exit
diff --git a/256.out b/256.out
deleted file mode 100644 (file)
index e1b0437..0000000
--- a/256.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 256
diff --git a/257 b/257
deleted file mode 100755 (executable)
index b58bd56..0000000
--- a/257
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /bin/bash
-#
-# Check that no duplicate d_off values are returned and that those
-# values are seekable. Most work is done by the C program here.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011 Gražvydas Ignotas
-#
-# 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-_cleanup()
-{
-       rm -rf $TEST_DIR/ttt
-}
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-mkdir $TEST_DIR/ttt
-for n in {1..168}; do
-    touch $TEST_DIR/ttt/$n;
-done
-src/t_dir_offset2 $TEST_DIR/ttt
-
-# success, all done
-echo "*** done"
-rm -f $seq.full
-status=0
diff --git a/257.out b/257.out
deleted file mode 100644 (file)
index ac232ec..0000000
--- a/257.out
+++ /dev/null
@@ -1,2 +0,0 @@
-QA output created by 257
-*** done
diff --git a/258 b/258
deleted file mode 100755 (executable)
index 87817bc..0000000
--- a/258
+++ /dev/null
@@ -1,74 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 258
-#
-# Test timestamps prior to epoch
-# On 64-bit, ext2/3/4 was sign-extending when read from disk
-# See also commit 4d7bf11d649c72621ca31b8ea12b9c94af380e63
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-
-_cleanup()
-{
-    rm -f $tmp.*
-}
-
-trap "_cleanup ; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-TESTFILE=$TEST_DIR/timestamp-test.txt
-
-# Create a file with a timestamp prior to the epoch
-echo "Creating file with timestamp of Jan 1, 1960"
-touch -t 196001010101 $TESTFILE
-# Should yield -315593940 (prior to epoch)
-echo "Testing for negative seconds since epoch"
-ts=`stat -c %X $TESTFILE`
-if [ "$ts" -ge 0 ]; then
-       echo "Timestamp wrapped: $ts"
-       _fail "Timestamp wrapped"
-fi
-
-# unmount, remount, and check the timestamp
-echo "Remounting to flush cache"
-umount $TEST_DEV
-mount $TEST_DEV $TEST_DIR
-
-# Should yield -315593940 (prior to epoch)
-echo "Testing for negative seconds since epoch"
-ts=`stat -c %X $TESTFILE`
-if [ "$ts" -ge 0 ]; then
-       echo "Timestamp wrapped: $ts"
-       _fail "Timestamp wrapped"
-fi
-
-status=0 ; exit
diff --git a/258.out b/258.out
deleted file mode 100644 (file)
index 87fae0f..0000000
--- a/258.out
+++ /dev/null
@@ -1,5 +0,0 @@
-QA output created by 258
-Creating file with timestamp of Jan 1, 1960
-Testing for negative seconds since epoch
-Remounting to flush cache
-Testing for negative seconds since epoch
diff --git a/260 b/260
deleted file mode 100755 (executable)
index 65a01c3..0000000
--- a/260
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/bin/bash
-# FS QA Test No. 260
-#
-# Purpose of this test is to check FITRIM argument handling to make sure
-# that the argument processing is right and that it does not overflow.
-#
-#-----------------------------------------------------------------------
-# Copyright 2011 (C) Red Hat, Inc., Lukas Czerner <lczerner@redhat.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`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=`mktemp -d`
-status=0
-trap "exit \$status" 0 1 2 3 15
-chpid=0
-mypid=$$
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_require_math
-_require_fstrim
-
-_require_scratch
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-
-_test_batched_discard $SCRATCH_MNT || _notrun "FITRIM not supported on $SCRATCH_DEV"
-
-fssize=$(df -k | grep "$SCRATCH_MNT" | grep "$SCRATCH_DEV"  | awk '{print $2}')
-
-beyond_eofs=$(_math "$fssize*2048")
-max_64bit=$(_math "2^64 - 1")
-
-# All these tests should return EINVAL
-# since the start is beyond the end of
-# the file system
-
-echo "[+] Start beyond the end of fs (should fail)"
-out=$($FSTRIM_PROG -o $beyond_eofs $SCRATCH_MNT 2>&1)
-[ $? -eq 0 ] && status=1
-echo $out | _filter_scratch
-
-echo "[+] Start beyond the end of fs with len set (should fail)"
-out=$($FSTRIM_PROG -o $beyond_eofs -l1M $SCRATCH_MNT 2>&1)
-[ $? -eq 0 ] && status=1
-echo $out | _filter_scratch
-
-echo "[+] Start = 2^64-1 (should fail)"
-out=$($FSTRIM_PROG -o $max_64bit $SCRATCH_MNT 2>&1)
-[ $? -eq 0 ] && status=1
-echo $out | _filter_scratch
-
-echo "[+] Start = 2^64-1 and len is set (should fail)"
-out=$($FSTRIM_PROG -o $max_64bit -l1M $SCRATCH_MNT 2>&1)
-[ $? -eq 0 ] && status=1
-echo $out | _filter_scratch
-
-_scratch_unmount
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-
-# All these tests should succeed
-# since the length should be truncated
-
-echo "[+] Default length (should succeed)"
-$FSTRIM_PROG $SCRATCH_MNT
-[ $? -ne 0 ] && status=1
-echo "[+] Default length with start set (should succeed)"
-$FSTRIM_PROG -o10M $SCRATCH_MNT
-[ $? -ne 0 ] && status=1
-echo "[+] Length beyond the end of fs (should succeed)"
-$FSTRIM_PROG -l $beyond_eofs $SCRATCH_MNT
-[ $? -ne 0 ] && status=1
-echo "[+] Length beyond the end of fs with start set (should succeed)"
-$FSTRIM_PROG -o10M -l $beyond_eofs $SCRATCH_MNT
-[ $? -ne 0 ] && status=1
-
-_scratch_unmount
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-
-# This is a bit fuzzy, but since the file system is fresh
-# there should be at least (fssize/2) free space to trim.
-# This is supposed to catch wrong FITRIM argument handling
-out=$($FSTRIM_PROG -v -o10M $SCRATCH_MNT)
-nopref=${out##*: }
-bytes=${nopref%% *}
-
-if [ $bytes -gt $(_math "$fssize*1024") ]; then
-       status=1
-       echo "After the full fs discard $bytes bytes were discarded"\
-            "however the file system is $(_math "$fssize*1024") bytes long."
-fi
-
-# Btrfs is special and this test does not apply to it
-# It is because btrfs does not have not-yet-used parts of the device
-# mapped and since we got here right after the mkfs, there is not
-# enough free extents in the root tree.
-if [ $bytes -le $(_math "$fssize*512") ] && [ $FSTYP != "btrfs" ]; then
-       status=1
-       echo "After the full fs discard $bytes bytes were discarded"\
-            "however the file system is $(_math "$fssize*1024") bytes long."
-fi
-
-# Now to catch overflows due to fsblk->allocation group number conversion
-# This is different for every file system and it also apply just to some of
-# them. In order to add check specific for file system you're interested in
-# compute the arguments as you need and make the file system with proper
-# alignment
-
-# (2^32-1) + 2 (this is set to overflow 32bit variable by 2)
-base=$(_math "2^32+1")
-
-case $FSTYP in
-       ext[34])
-               agsize=32768
-               bsize=4096
-               start=$(_math "$base*$agsize*$bsize")
-               len=$start
-               export MKFS_OPTIONS="-F -b $bsize -g $agsize"
-               ;;
-       xfs)
-               agsize=65538
-               bsize=4096
-               start=$(_math "$base*$agsize*$bsize")
-               len=$start
-               export MKFS_OPTIONS="-f -d agsize=$(_math "$agsize*$bsize") -b size=$bsize"
-               ;;
-       *)
-               # (2^32-1) * 4096 * 65536 == 32bit max size * block size * ag size
-               start=$(_math "(2^32 - 1) * 4096 * 65536")
-               len=$start
-               ;;
-esac
-
-_scratch_unmount
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-# It should fail since $start is beyond the end of file system
-$FSTRIM_PROG -o$start -l10M $SCRATCH_MNT &> /dev/null
-if [ $? -eq 0 ]; then
-       status=1
-       echo "It seems that fs logic handling start"\
-            "argument overflows"
-fi
-
-_scratch_unmount
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-
-# len should be big enough to cover the whole file system, so if the
-# number of discarded bytes is smaller than file system size/2 then it
-# most likely overflowed
-# Btrfs is special and this test does not apply to it
-# It is because btrfs does not have not-yet-used parts of the device
-# mapped and since we got here right after the mkfs, there is not
-# enough free extents in the root tree.
-out=$($FSTRIM_PROG -v -l$len $SCRATCH_MNT)
-nopref=${out##*: }
-bytes=${nopref%% *}
-if [ $bytes -le $(_math "$fssize*512") ] && [ $FSTYP != "btrfs" ]; then
-       status=1
-       echo "It seems that fs logic handling len argument overflows"
-fi
-
-echo "Test done"
-exit
diff --git a/260.out b/260.out
deleted file mode 100644 (file)
index a16c4f7..0000000
--- a/260.out
+++ /dev/null
@@ -1,14 +0,0 @@
-QA output created by 260
-[+] Start beyond the end of fs (should fail)
-fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
-[+] Start beyond the end of fs with len set (should fail)
-fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
-[+] Start = 2^64-1 (should fail)
-fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
-[+] Start = 2^64-1 and len is set (should fail)
-fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
-[+] Default length (should succeed)
-[+] Default length with start set (should succeed)
-[+] Length beyond the end of fs (should succeed)
-[+] Length beyond the end of fs with start set (should succeed)
-Test done
diff --git a/263 b/263
deleted file mode 100755 (executable)
index 18cd5de..0000000
--- a/263
+++ /dev/null
@@ -1,62 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 263
-#
-# fsx exercising direct IO vs sub-block buffered I/O
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2000-2004 Silicon Graphics, 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`
-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
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-rm -f $seq.full
-
-run_fsx()
-{
-       echo fsx $@ | tee -a $seq.full
-       args=`echo $@ | sed -e "s/ BSIZE / $bsize /g" -e "s/ PSIZE / $psize /g"`
-       rm -f $TEST_DIR/junk
-       $here/ltp/fsx $args $TEST_DIR/junk >>$seq.full 2>&1
-       if [ $? -ne 0 ]; then
-               cat $seq.full
-               exit 1
-       fi
-}
-
-psize=`$here/src/feature -s`
-bsize=`blockdev --getss $TEST_DEV`
-
-run_fsx -N 10000  -o 8192   -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
-run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
-
-status=0
-exit
diff --git a/263.out b/263.out
deleted file mode 100644 (file)
index 64699f6..0000000
--- a/263.out
+++ /dev/null
@@ -1,3 +0,0 @@
-QA output created by 263
-fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
-fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
diff --git a/269 b/269
deleted file mode 100755 (executable)
index ed27fb4..0000000
--- a/269
+++ /dev/null
@@ -1,83 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 269
-#
-# Run fsstress and ENSPC hitters in parallel, check fs consistency an the end
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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
-# Disable all sync operations to get higher load
-FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0"
-_workout()
-{
-       echo ""
-       echo "Run fsstress"
-       echo ""
-       num_iterations=10
-       enospc_time=2
-       out=$SCRATCH_MNT/fsstress.$$
-       args=`_scale_fsstress_args -p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out`
-       echo "fsstress $args" >> $here/$seq.full
-       $FSSTRESS_PROG $args > /dev/null 2>&1 &
-       pid=$!
-       echo "Run dd writers in parallel"
-       for ((i=0; i < num_iterations; i++))
-       do
-               # File will be opened with O_TRUNC each time
-               dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M \
-                       >> $here/$seq.full 2>&1
-               sleep $enospc_time
-       done
-       kill $pid
-       wait $pid
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_need_to_be_root
-_require_scratch
-
-_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1
-_scratch_mount
-
-if ! _workout; then
-       umount $SCRATCH_DEV 2>/dev/null
-       exit
-fi
-
-if ! _scratch_unmount; then
-       echo "failed to umount"
-       status=1
-       exit
-fi
-_check_scratch_fs
-status=$?
-exit
diff --git a/269.out b/269.out
deleted file mode 100644 (file)
index 0a83965..0000000
--- a/269.out
+++ /dev/null
@@ -1,5 +0,0 @@
-QA output created by 269
-
-Run fsstress
-
-Run dd writers in parallel
diff --git a/270 b/270
deleted file mode 100755 (executable)
index 7841cd1..0000000
--- a/270
+++ /dev/null
@@ -1,108 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 270
-#
-# Run fsstress and ENSPC hitters in parallel, check quota and 
-# fs consistency an the end
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2006 Silicon Graphics, 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`
-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.quota
-
-# Disable all sync operations to get higher load
-FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0"
-_workout()
-{
-       echo ""
-       echo "Run fsstress"
-       echo ""
-       num_iterations=10
-       enospc_time=2
-       out=$SCRATCH_MNT/fsstress.$$
-       args=`_scale_fsstress_args -p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out`
-       echo "fsstress $args" >> $here/$seq.full
-       # Grant chown capability 
-       cp $FSSTRESS_PROG  $tmp.fsstress.bin
-       if [ "`whereis setcap`" == "setcap:" ]; then
-            _notrun "setcap not installed."
-       fi
-       setcap cap_chown=epi  $tmp.fsstress.bin
-
-       (su $qa_user -c "$tmp.fsstress.bin $args" &) > /dev/null 2>&1
-       pid=$!
-
-       echo "Run dd writers in parallel"
-       for ((i=0; i < num_iterations; i++))
-       do
-               # File will be opened with O_TRUNC each time
-               su $qa_user -c "dd if=/dev/zero \
-                       of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M " \
-                       >> $here/$seq.full 2>&1
-               sleep $enospc_time
-       done
-
-       killall $tmp.fsstress.bin
-       wait $pid
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_require_quota
-_require_user
-_need_to_be_root
-_require_scratch
-
-_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1
-_scratch_mount "-o usrquota,grpquota"
-chmod 777 $SCRATCH_MNT
-quotacheck -u -g $SCRATCH_MNT 2>/dev/null
-quotaon -u -g $SCRATCH_MNT 2>/dev/null
-
-if ! _workout; then
-       _scratch_unmount 2>/dev/null
-       exit
-fi
-
-if ! _check_quota_usage; then
-       _scratch_unmount 2>/dev/null
-       status=1
-       exit
-fi
-
-echo Comparing filesystem consistency
-if ! _scratch_unmount; then
-       echo "failed to umount"
-       status=1
-       exit
-fi
-_check_scratch_fs
-status=$?
-exit
diff --git a/270.out b/270.out
deleted file mode 100644 (file)
index bbd8026..0000000
--- a/270.out
+++ /dev/null
@@ -1,8 +0,0 @@
-QA output created by 270
-
-Run fsstress
-
-Run dd writers in parallel
-Comparing user usage
-Comparing group usage
-Comparing filesystem consistency
diff --git a/273 b/273
deleted file mode 100755 (executable)
index 4473fd4..0000000
--- a/273
+++ /dev/null
@@ -1,142 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 273
-#
-# reservation test with heavy cp workload
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011-2012 Fujitsu, 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
-#
-#-----------------------------------------------------------------------
-#
-#creator
-
-seq=`basename $0`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0       # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-       cd /
-       rm -rf $tmp.*
-       _scratch_unmount
-}
-
-. ./common.rc
-. ./common.filter
-
-threads=50
-count=2
-
-_threads_set()
-{
-       _cpu_num=`cat /proc/cpuinfo | grep "processor" | wc -l`
-       threads=$(($_cpu_num * 50))
-       if [ $threads -gt 200 ]
-       then
-               threads=200
-       fi
-}
-
-_file_create()
-{
-       _i=0
-
-       if ! mkdir $SCRATCH_MNT/origin
-       then
-               echo "mkdir origin err"
-               status=1
-               exit
-       fi
-
-       cd $SCRATCH_MNT/origin
-
-       _disksize=`df --block-size=1 $SCRATCH_DEV | awk -v sd=$SCRATCH_DEV 'BEGIN{c=0}{for(i=1;i<=NF;++i){a[c]=$i;++c}}END{for(entry in a){if(a[entry] ~ sd){print a[entry + 3]; break}}}'`
-       _disksize=$(($_disksize / 3))
-       _num=$(($_disksize / $count / $threads / 4096))
-       _count=$count
-       while [ $_i -lt $_num ]
-       do
-               dd if=/dev/zero of=file_$_i bs=4096 count=$_count >/dev/null 2>&1
-               _i=$(($_i + 1))
-       done
-
-       cd $here
-}
-
-_porter()
-{
-       _suffix=$1
-
-       if ! mkdir $SCRATCH_MNT/sub_$_suffix
-       then
-               echo "mkdir sub_xxx err"
-               status=1
-               exit
-       fi
-
-       cp -r $SCRATCH_MNT/origin $SCRATCH_MNT/sub_$_suffix >>$seq.full 2>&1
-       if [ $? -ne 0 ]
-       then
-               echo "_porter $_suffix not complete"
-       fi
-       
-       sync
-}
-
-_do_workload()
-{
-       _pids=""
-       _pid=1
-       
-       _threads_set
-       _file_create
-
-       _threads=$threads
-
-       while [ $_pid -lt $_threads ]
-       do
-               _porter $_pid &
-               _pids="$_pids $!"
-               _pid=$(($_pid + 1))
-       done
-
-       wait $_pids
-}
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-_require_scratch
-
-echo "------------------------------"
-echo "start the workload"
-echo "------------------------------"
-
-rm -f $seq.full
-
-_scratch_unmount 2>/dev/null
-_scratch_mkfs_sized $((2 * 1024 * 1024 * 1024)) >>$seq.full 2>&1
-_scratch_mount
-
-_do_workload
-
-_check_scratch_fs
-status=$?
-exit
diff --git a/273.out b/273.out
deleted file mode 100644 (file)
index 146af43..0000000
--- a/273.out
+++ /dev/null
@@ -1,4 +0,0 @@
-QA output created by 273
-------------------------------
-start the workload
-------------------------------
diff --git a/274 b/274
deleted file mode 100755 (executable)
index 9b0fb71..0000000
--- a/274
+++ /dev/null
@@ -1,100 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 274
-#
-# preallocation test:
-# Preallocate space to a file, and fill the rest of the fs to 100%.
-# Then test a write into that preallocated space, which should succeed.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011-2012 Fujitsu, 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
-#
-#-----------------------------------------------------------------------
-#
-#creator
-
-seq=`basename $0`
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=0    # success is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-       cd /
-       rm -f $tmp.*
-       _scratch_unmount
-}
-
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-_require_scratch
-_require_xfs_io_falloc
-
-echo "------------------------------"
-echo "preallocation test"
-echo "------------------------------"
-
-rm -f $seq.full
-
-umount $SCRATCH_DEV 2>/dev/null
-_scratch_mkfs_sized $((1 * 1024 * 1024 * 1024)) >>$seq.full 2>&1
-_scratch_mount
-
-# Create a 4k file and Allocate 4M past EOF on that file
-xfs_io -F -f -c "pwrite 0 4k" -c "falloc -k 4k 4m" $SCRATCH_MNT/test \
-       >>$seq.full 2>&1 || _fail "failed to create test file"
-
-# Fill the rest of the fs completely
-# Note, this will show ENOSPC errors in $seq.full, that's ok.
-echo "Fill fs with 1M IOs; ENOSPC expected" >> $seq.full
-dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=1M >>$seq.full 2>&1
-echo "Fill fs with 4K IOs; ENOSPC expected" >> $seq.full
-dd if=/dev/zero of=$SCRATCH_MNT/tmp2 bs=4K >>$seq.full 2>&1
-sync
-# Last effort, use O_SYNC
-echo "Fill fs with 4K DIOs; ENOSPC expected" >> $seq.full
-dd if=/dev/zero of=$SCRATCH_MNT/tmp3 bs=4K oflag=sync >>$seq.full 2>&1
-# Save space usage info
-echo "Post-fill space:" >> $seq.full
-df $SCRATCH_MNT >>$seq.full 2>&1
-
-# Now attempt a write into all of the preallocated space -
-# in a very nasty way, badly fragmenting it and then filling it in.
-echo "Fill in prealloc space; fragment at offsets:" >> $seq.full
-for i in `seq 1 2 1023`; do
-       echo -n "$i " >> $seq.full
-       dd if=/dev/zero of=$SCRATCH_MNT/test seek=$i bs=4K count=1 conv=notrunc \
-               >>$seq.full 2>/dev/null || _fail "failed to write to test file"
-done
-sync
-echo >> $seq.full
-echo "Fill in prealloc space; fill holes at offsets:" >> $seq.full
-for i in `seq 2 2 1023`; do
-       echo -n "$i " >> $seq.full
-       dd if=/dev/zero of=$SCRATCH_MNT/test seek=$i bs=4K count=1 conv=notrunc \
-               >>$seq.full 2>/dev/null || _fail "failed to fill test file"
-done
-sync
-echo >> $seq.full
-
-echo "done"
-exit
diff --git a/274.out b/274.out
deleted file mode 100644 (file)
index edbf3cc..0000000
--- a/274.out
+++ /dev/null
@@ -1,5 +0,0 @@
-QA output created by 274
-------------------------------
-preallocation test
-------------------------------
-done
diff --git a/275 b/275
deleted file mode 100755 (executable)
index dc1eeeb..0000000
--- a/275
+++ /dev/null
@@ -1,92 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 275
-#
-# The posix write test.  When write size is larger than disk free size,
-# should write as much as possible until ENOSPC.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011-2012 Fujitsu, 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
-#
-#-----------------------------------------------------------------------
-#
-#creator
-
-seq=`basename $0`
-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 /
-       _scratch_unmount
-}
-
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os IRIX Linux
-_require_scratch
-
-echo "------------------------------"
-echo "write until ENOSPC test"
-echo "------------------------------"
-
-rm -f $seq.full
-
-umount $SCRATCH_DEV 2>/dev/null
-_scratch_mkfs_sized $((2 * 1024 * 1024 * 1024)) >>$seq.full 2>&1
-_scratch_mount
-
-dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=256K count=1 >>$seq.full 2>&1
-[ $? -ne 0 ] && _fail "Error creating file"
-
-# Attempt to completely fill fs
-dd if=/dev/zero of=$SCRATCH_MNT/tmp2 bs=1M >>$seq.full 2>&1
-sync
-dd if=/dev/zero of=$SCRATCH_MNT/tmp3 bs=4K >>$seq.full 2>&1
-sync
-# Last effort, use O_SYNC
-dd if=/dev/zero of=$SCRATCH_MNT/tmp4 bs=4K oflag=sync >>$seq.full 2>&1
-# Save space usage info to the full file
-echo "Pre rm space:" >> $seq.full
-df $SCRATCH_MNT >>$seq.full 2>&1
-
-# Should leave approx 256k free
-rm -f $SCRATCH_MNT/tmp1
-sync
-echo "Post rm space:" >> $seq.full
-df $SCRATCH_MNT >>$seq.full 2>&1
-_freespace=`df -k $SCRATCH_MNT | tail -n 1 | awk '{print $4}'`
-[ $_freespace -gt 1024 ] && _fail "could not sufficiently fill filesystem"
-
-# Try a write larger than available space
-dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=1M count=1 >>$seq.full 2>&1
-echo "Bytes written until ENOSPC:" >>$seq.full
-du $SCRATCH_MNT/tmp1 >>$seq.full
-
-# And at least some of it should succeed.
-_filesize=`ls -l $SCRATCH_MNT/tmp1 | awk '{print $5}'`
-[ $_filesize -eq 0 ] && _fail "write file err: Partial write until enospc failed; wrote 0 bytes."
-
-echo "done"
-status=0
-exit
diff --git a/275.out b/275.out
deleted file mode 100644 (file)
index 69b9d52..0000000
--- a/275.out
+++ /dev/null
@@ -1,5 +0,0 @@
-QA output created by 275
-------------------------------
-write until ENOSPC test
-------------------------------
-done
diff --git a/277 b/277
deleted file mode 100755 (executable)
index 8ef809c..0000000
--- a/277
+++ /dev/null
@@ -1,69 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 277
-#
-# Check if ctime update caused by chattr is written to disk
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011 Fujitsu.  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`
-echo "QA output created by $seq"
-
-status=1       # failure is the default!
-
-_cleanup()
-{
-    rm -f $SCRATCH_MNT/tmp*
-}
-
-trap "_cleanup ; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_require_scratch
-
-_scratch_mkfs > /dev/null 2>&1
-_scratch_mount
-
-touch $SCRATCH_MNT/tmp
-_scratch_remount
-ctime1=`stat -c %z $SCRATCH_MNT/tmp`
-
-sleep 1
-chattr +A $SCRATCH_MNT/tmp
-chattr -A $SCRATCH_MNT/tmp
-ctime2=`stat -c %z $SCRATCH_MNT/tmp`
-
-_scratch_remount
-ctime3=`stat -c %z $SCRATCH_MNT/tmp`
-
-if [ "$ctime1" == "$ctime2" ]; then
-       echo "error: ctime not updated after chattr"
-elif [ "$ctime1" == "$ctime3" ]; then
-       echo "error: on disk ctime not updated"
-else
-       status=0
-fi
-
-exit
diff --git a/277.out b/277.out
deleted file mode 100644 (file)
index 9614b16..0000000
--- a/277.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 277
diff --git a/280 b/280
deleted file mode 100755 (executable)
index 336bea6..0000000
--- a/280
+++ /dev/null
@@ -1,71 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 280
-#
-# Test quota vs. suspend/freeze deadlock, 
-# dcdbed85 quota: Fix deadlock with suspend and quotas
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2012 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`
-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
-. ./common.quota
-
-_require_scratch
-_require_quota
-_require_freeze
-
-# real QA test starts here
-
-# Modify as appropriate.
-_supported_os Linux
-_supported_fs generic
-
-rm -f $seq.full
-
-umount $SCRATCH_DEV 2>/dev/null
-_scratch_mkfs >> $seq.full 2>&1
-_scratch_mount "-o usrquota,grpquota"
-quotacheck -u -g $SCRATCH_MNT 2>/dev/null
-quotaon $SCRATCH_MNT 2>/dev/null
-xfs_freeze -f $SCRATCH_MNT
-setquota -u root 1 2 3 4 $SCRATCH_MNT &
-sleep 1
-xfs_freeze -u $SCRATCH_MNT
-umount $SCRATCH_DEV
-
-# Failure comes in the form of a deadlock.
-
-# success, all done
-status=0
-exit
diff --git a/280.out b/280.out
deleted file mode 100644 (file)
index fb29270..0000000
--- a/280.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 280
diff --git a/285 b/285
deleted file mode 100644 (file)
index 3bf080c..0000000
--- a/285
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 285
-#
-# SEEK_DATA/SEEK_HOLE sanity tests.
-#
-# Improved by Jeff.liu@oracle.com
-# Creater: josef@redhat.com
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011 Oracle Inc.  All Rights Reserved.
-# Copyright (c) 2011 Red Hat.  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`
-echo "QA output created by $seq"
-
-here=`pwd`
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-_supported_fs generic
-_supported_os Linux
-
-BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
-
-[ -x $here/src/seek_sanity_test ] || _notrun "seek_sanitfy_tester not built"
-
-_cleanup()
-{
-       eval "rm -f $BASE_TEST_FILE.*"
-}
-
-$here/src/seek_sanity_test $BASE_TEST_FILE > $seq.full 2>&1 ||
-       _fail "seek sanity check failed!"
-
-# success, all done
-status=0
-exit
diff --git a/285.out b/285.out
deleted file mode 100644 (file)
index 58759aa..0000000
--- a/285.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 285
diff --git a/286 b/286
deleted file mode 100644 (file)
index 1bf0c87..0000000
--- a/286
+++ /dev/null
@@ -1,197 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 286
-#
-# SEEK_DATA/SEEK_HOLE copy tests.
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2011 Oracle 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`
-echo "QA output created by $seq"
-
-here=`pwd`
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-src=$TEST_DIR/seek_copy_testfile
-dest=$TEST_DIR/seek_copy_testfile.dest
-
-[ -x $here/src/seek_copy_test ] || _notrun "seek_copy_test not built"
-
-_cleanup()
-{
-       rm -f $src $dest
-}
-
-# seek_copy_test_01: tests file with holes and written data extents.
-# verify results:
-# 1. file size is identical.
-# 2. perform cmp(1) to compare SRC and DEST file byte by byte.
-test01()
-{
-       rm -f $src $dest
-
-       write_cmd="-c \"truncate 100m\""
-       for i in $(seq 0 5 100); do
-               offset=$(($i * $((1 << 20))))
-               write_cmd="$write_cmd -c \"pwrite $offset 1m\""
-       done
-
-       echo "*** test01() create sparse file ***" >>$seq.full
-       eval ${XFS_IO_PROG} -F -f "${write_cmd}" $src >>$seq.full 2>&1 ||
-               _fail "create sparse file failed!"
-       echo "*** test01() create sparse file done ***" >>$seq.full
-       echo >>$seq.full
-
-       $here/src/seek_copy_test $src $dest
-       
-       test $(stat --printf "%s" $src) = $(stat --printf "%s" $dest) ||
-               _fail "TEST01: file size check failed"
-
-       cmp $src $dest || _fail "TEST01: file bytes check failed"
-}
-
-# seek_copy_test_02 - tests file with holes, written and unwritten extents.
-# verify results:
-# 1. file size is identical.
-# 2. perform cmp(1) to compare SRC and DEST file byte by byte.
-test02()
-{
-       rm -rf $src $dest
-
-       write_cmd="-c \"truncate 200m\""
-       for i in $(seq 0 10 100); do
-               offset=$(($((6 << 20)) + $i * $((1 << 20))))
-               write_cmd="$write_cmd -c \"falloc $offset 3m\" -c \"pwrite $offset 1m\""
-       done
-
-       echo "*** test02() create sparse file ***" >>$seq.full
-       eval ${XFS_IO_PROG} -F -f "${write_cmd}" $src >>$seq.full 2>&1 ||
-               _fail "create sparse file failed!"
-       echo "*** test02() create sparse file done ***" >>$seq.full
-       echo >>$seq.full
-
-       $here/src/seek_copy_test $src $dest
-
-       test $(stat --printf "%s" $src) = $(stat --printf "%s" $dest) ||
-               _fail "TEST02: file size check failed"
-
-       cmp $src $dest || _fail "TEST02: file bytes check failed"
-}
-
-# seek_copy_test_03 - tests file with unwritten with data, repeated unwritten
-# without data, as well as data extents mapping.
-# verify results:
-# 1. file size is identical.
-# 2. perform cmp(1) to compare SRC and DEST file byte by byte.
-test03()
-{
-       rm -rf $src $dest
-
-       write_cmd="-c \"truncate 200m\""
-
-       #
-       # Firstly, make the file with allocated && reserved extents
-       # mapping without real data wrote.
-       #
-       for i in $(seq 0 10 180); do
-               offset=$(($((10 << 20)) + $i * $((1 << 20))))
-               write_cmd="$write_cmd -c \"falloc $offset 10m\""
-       done
-
-       #
-       # Secondly, write data to some unwritten extents, hence we
-       # have a test file will extents mapping as:
-       # |data|multiple unwritten_without_data|data| repeat...
-       for i in $(seq 0 60 180); do
-               offset=$(($((20 << 20)) + $i * $((1 << 20))))
-               write_cmd="$write_cmd -c \"pwrite $offset 10m\""
-       done
-
-       echo "*** test03() create sparse file ***" >>$seq.full
-       eval ${XFS_IO_PROG} -F -f "${write_cmd}" $src >>$seq.full 2>&1 ||
-               _fail "create sparse file failed!"
-       echo "*** test03() create sparse file done ***" >>$seq.full
-       echo >>$seq.full
-       $here/src/seek_copy_test $src $dest
-
-       test $(stat --printf "%s" $src) = $(stat --printf "%s" $dest) ||
-               _fail "TEST03: file size check failed"
-
-       cmp $src $dest || _fail "TEST03: file bytes check failed"
-}
-
-# seek_copy_test_04 - tests file with hole, repeated unwritten
-# without data, as well as data extents mapping.
-# verify results:
-# 1. file size is identical.
-# 2. perform cmp(1) to compare SRC and DEST file byte by byte.
-test04()
-{
-       rm -rf $src $dest
-
-       write_cmd="-c \"truncate 200m\""
-
-       #
-       # Firstly, make the file with allocated && reserved extents
-       # mapping without real data wrote.
-       #
-       for i in $(seq 30 30 180); do
-               offset=$(($((30 << 20)) + $i * $((1 << 20))))
-               write_cmd="$write_cmd -c \"falloc $offset 5m\""
-       done
-
-       #
-       # Secondly, write data to some unwritten extents, hence we
-       # have a test file will extents mapping as:
-       # |hole|multiple unwritten_without_data|hole|data| repeat...
-       for i in $(seq 30 90 180); do
-               offset=$(($((30 << 20)) + $i * $((1 << 20))))
-               write_cmd="$write_cmd -c \"pwrite $offset 2m\""
-       done
-
-       echo "*** test04() create sparse file ***" >>$seq.full
-       eval ${XFS_IO_PROG} -F -f "${write_cmd}" $src >>$seq.full 2>&1 ||
-               _fail "create sparse file failed!"
-       echo "*** test04() create sparse file done ***" >>$seq.full
-       echo >>$seq.full
-       $here/src/seek_copy_test $src $dest
-
-       test $(stat --printf "%s" $src) = $(stat --printf "%s" $dest) ||
-               _fail "TEST04: file size check failed"
-
-       cmp $src $dest || _fail "TEST04: file bytes check failed"
-}
-
-rm -f $seq.full
-test01
-test02
-test03
-test04
-
-status=0
-exit
diff --git a/286.out b/286.out
deleted file mode 100644 (file)
index 6415ad8..0000000
--- a/286.out
+++ /dev/null
@@ -1 +0,0 @@
-QA output created by 286
diff --git a/288 b/288
deleted file mode 100644 (file)
index 9e2e583..0000000
--- a/288
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/bash
-# FS QA Test No. 288
-#
-# This check the FITRIM argument handling in the corner case where length is
-# smaller than block size of zero.
-#
-#-----------------------------------------------------------------------
-# Copyright 2012 (C) Red Hat, Inc., Lukas Czerner <lczerner@redhat.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`
-echo "QA output created by $seq"
-
-status=0
-trap "exit \$status" 0 1 2 3 15
-
-# get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-
-_require_fstrim
-_require_scratch
-
-_scratch_mkfs >/dev/null 2>&1
-_scratch_mount
-_test_batched_discard $SCRATCH_MNT || _notrun "FITRIM not supported on $SCRATCH_DEV"
-
-echo "[+] Length is zero (should fail)"
-out=$("$FSTRIM_PROG" -v -o0 -l0 $SCRATCH_MNT 2>&1)
-[ $? -eq 0 ] && status=1
-echo $out | _filter_scratch
-
-echo "[+] Length is smaller than block size (should fail)"
-out=$("$FSTRIM_PROG" -v -o0 -l100 $SCRATCH_MNT 2>&1)
-[ $? -eq 0 ] && status=1
-echo $out | _filter_scratch
-
-echo "Test done"
-exit
diff --git a/288.out b/288.out
deleted file mode 100644 (file)
index a4e2d7b..0000000
--- a/288.out
+++ /dev/null
@@ -1,6 +0,0 @@
-QA output created by 288
-[+] Length is zero (should fail)
-fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
-[+] Length is smaller than block size (should fail)
-fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
-Test done
diff --git a/294 b/294
deleted file mode 100644 (file)
index 3433c9b..0000000
--- a/294
+++ /dev/null
@@ -1,71 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 294
-#
-# Tests for EEXIST (not EROFS) for inode creations, if
-# we ask to create an already-existing entity on an RO filesystem
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2012 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`
-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
-
-# real QA test starts here
-
-# Modify as appropriate.
-_supported_fs generic
-_supported_os Linux
-_require_scratch
-
-THIS_TEST_DIR=$SCRATCH_MNT/$seq.test
-
-_create_files()
-{
-       mknod $THIS_TEST_DIR/testnode c 1 3
-       mkdir $THIS_TEST_DIR/testdir
-       touch $THIS_TEST_DIR/testtarget
-       ln -s $THIS_TEST_DIR/testtarget $THIS_TEST_DIR/testlink 2>&1 | _filter_ln
-}
-
-_scratch_mount
-
-rm -rf $THIS_TEST_DIR
-mkdir $THIS_TEST_DIR || _fail "Could not create dir for test"
-
-_create_files 2>&1 | _filter_scratch
-_scratch_mount -o remount,ro || _fail "Could not remount scratch readonly"
-_create_files 2>&1 | _filter_scratch
-
-# success, all done
-status=0
-exit
diff --git a/294.out b/294.out
deleted file mode 100644 (file)
index 027d9fc..0000000
--- a/294.out
+++ /dev/null
@@ -1,5 +0,0 @@
-QA output created by 294
-mknod: `SCRATCH_MNT/294.test/testnode': File exists
-mkdir: cannot create directory `SCRATCH_MNT/294.test/testdir': File exists
-touch: cannot touch `SCRATCH_MNT/294.test/testtarget': Read-only file system
-ln: creating symbolic link `SCRATCH_MNT/294.test/testlink': File exists
diff --git a/299 b/299
deleted file mode 100644 (file)
index 80aa07e..0000000
--- a/299
+++ /dev/null
@@ -1,155 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 299
-#
-# AIO/DIO stress test
-# Run random AIO/DIO activity and fallocate/truncate simultaneously
-# Test will operate on huge sparsed files so ENOSPC is expected.
-#
-#-----------------------------------------------------------------------
-# (c) 2013 Dmitry Monakhov
-#
-# 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`
-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
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_need_to_be_root
-_require_scratch
-
-NUM_JOBS=$((4*LOAD_FACTOR))
-BLK_DEV_SIZE=`blockdev --getsz $SCRATCH_DEV`
-FILE_SIZE=$((BLK_DEV_SIZE * 512))
-
-cat >$tmp-$seq.fio <<EOF
-###########
-# $seq test fio activity
-# Filenames derived from jobsname and jobid like follows:
-# ${JOB_NAME}.${JOB_ID}.${ITERATION_ID}
-[global]
-ioengine=libaio
-bs=128k
-directory=${SCRATCH_MNT}
-filesize=${FILE_SIZE}
-size=999G
-iodepth=128*${LOAD_FACTOR}
-continue_on_error=write
-ignore_error=,ENOSPC
-error_dump=0
-create_on_open=1
-fallocate=none
-exitall=1
-
-## Perform direct aio, to files which may be truncated
-## by external task
-[direct_aio]
-direct=1
-buffered=0
-numjobs=${NUM_JOBS}
-rw=randwrite
-runtime=100*${TIME_FACTOR}
-time_based
-
-# Perform direct aio and verify data
-# This test case should check use-after-free issues
-[aio-dio-verifier]
-numjobs=1
-verify=crc32c-intel
-verify_fatal=1
-verify_dump=1
-verify_backlog=1024
-verify_async=4
-verifysort=1
-direct=1
-bs=4k
-rw=randrw
-filename=aio-dio-verifier
-
-# Perform buffered aio and verify data
-# This test case should check use-after-free issues
-[buffered-aio-verifier]
-numjobs=1
-verify=crc32c-intel
-verify_fatal=1
-verify_dump=1
-verify_backlog=1024
-verify_async=4
-verifysort=1
-direct=0
-buffered=1
-bs=4k
-rw=randrw
-filename=buffered-aio-verifier
-EOF
-
-_require_fio $tmp-$seq.fio
-
-_workout()
-{
-       echo ""
-       echo "Run fio with random aio-dio pattern"
-       echo ""
-       cat $tmp-$seq.fio >>  $seq.full
-       run_check $FIO_PROG $tmp-$seq.fio &
-       pid=$!
-       echo "Start fallocate/truncate loop"
-
-       for ((i=0; ; i++))
-       do
-           for ((k=1; k <= NUM_JOBS; k++))
-           do
-               fallocate -l $FILE_SIZE $SCRATCH_MNT/direct_aio.$k.0 \
-                       >> $seq.full 2>&1
-           done
-           for ((k=1; k <= NUM_JOBS; k++))
-           do
-               truncate -s 0 $SCRATCH_MNT/direct_aio.$k.0
-           done
-           # Following like will check that pid is still run.
-           # Once fio exit we can stop fallocate/truncate loop
-           kill -0 $pid > /dev/null 2>&1 || break
-       done
-       wait $pid
-}
-
-_scratch_mkfs >> $seq.full 2>&1
-_scratch_mount
-
-if ! _workout; then
-       umount $SCRATCH_DEV 2>/dev/null
-       exit
-fi
-
-if ! _scratch_unmount; then
-       echo "failed to umount"
-       status=1
-       exit
-fi
-_check_scratch_fs
-status=$?
-exit
diff --git a/299.out b/299.out
deleted file mode 100644 (file)
index fb41f3b..0000000
--- a/299.out
+++ /dev/null
@@ -1,5 +0,0 @@
-QA output created by 299
-
-Run fio with random aio-dio pattern
-
-Start fallocate/truncate loop
diff --git a/300 b/300
deleted file mode 100644 (file)
index 854efc8..0000000
--- a/300
+++ /dev/null
@@ -1,151 +0,0 @@
-#! /bin/bash
-# FSQA Test No. 300
-#
-# AIO/DIO stress test
-# Run random AIO/DIO activity and fallocate/punch_hole simultaneously
-# Test will operate on huge sparsed file so ENOSPC is expected.
-#
-#-----------------------------------------------------------------------
-# (c) 2013 Dmitry Monakhov
-#
-# 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`
-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
-
-# real QA test starts here
-_supported_fs generic
-_supported_os Linux
-_need_to_be_root
-_require_scratch
-
-NUM_JOBS=$((4*LOAD_FACTOR))
-BLK_DEV_SIZE=`blockdev --getsz $SCRATCH_DEV`
-if [ $((BLK_DEV_SIZE)) -gt 1048576 ]
-then
-    BLK_DEV_SIZE=1048576
-fi
-FS_SIZE=$((BLK_DEV_SIZE * 512))
-
-cat >$tmp-$seq.fio <<EOF
-###########
-# $seq test fio activity
-# Run DIO, fallocate and punch_hole threads on a single in parallel
-#
-# If race exist old dio request may rewrite punched block after it was
-# allocated to another file, we will catch that by verifying blocks content
-#
-[global]
-directory=${SCRATCH_MNT}
-filesize=${FS_SIZE}
-size=999G
-continue_on_error=write
-ignore_error=,ENOSPC
-error_dump=0
-
-create_on_open=1
-fallocate=none
-exitall=1
-
-## Perform direct aio, to files which may be truncated
-## by external task
-[direct_aio_raicer]
-ioengine=libaio
-iodepth=128*${LOAD_FACTOR}
-bs=128k
-direct=1
-numjobs=${NUM_JOBS}
-rw=randwrite
-runtime=100*${TIME_FACTOR}
-time_based
-filename=racer
-
-# Run falloc and punch_hole threads in parallel
-# After activity file will be highly fragmented
-[falloc_raicer]
-ioengine=falloc
-runtime=100*${TIME_FACTOR}
-iodepth=1
-bssplit=128k/80:512k/10:32k/10
-rw=randwrite
-numjobs=1
-filename=racer
-
-[punch_hole_raicer]
-ioengine=falloc
-runtime=100*${TIME_FACTOR}
-bs=4k
-time_based=10
-rw=randtrim
-numjobs=2
-filename=racer
-time_based
-
-# Verifier thread continiously write to newly allcated blocks
-# and veryfy written content
-[aio-dio-verifier]
-ioengine=libaio
-iodepth=128*${LOAD_FACTOR}
-numjobs=1
-verify=crc32c-intel
-verify_fatal=1
-verify_dump=1
-verify_backlog=1024
-verify_async=4
-verifysort=1
-direct=1
-bs=4k
-rw=randwrite
-filename=aio-dio-verifier
-EOF
-
-_workout()
-{
-       echo ""
-       echo "Run fio with random aio-dio pattern"
-       echo ""
-       cat $tmp-$seq.fio >>  $seq.full
-       run_check $FIO_PROG $tmp-$seq.fio
-}
-
-_require_fio $tmp-$seq.fio
-
-_scratch_mkfs_sized $FS_SIZE >> $seq.full 2>&1
-_scratch_mount
-
-if ! _workout; then
-       umount $SCRATCH_DEV 2>/dev/null
-       exit
-fi
-
-if ! _scratch_unmount; then
-       echo "failed to umount"
-       status=1
-       exit
-fi
-_check_scratch_fs
-status=$?
-exit
diff --git a/300.out b/300.out
deleted file mode 100644 (file)
index ac8a81e..0000000
--- a/300.out
+++ /dev/null
@@ -1,4 +0,0 @@
-QA output created by 300
-
-Run fio with random aio-dio pattern
-
diff --git a/306 b/306
deleted file mode 100644 (file)
index 0be57dd..0000000
--- a/306
+++ /dev/null
@@ -1,79 +0,0 @@
-#! /bin/bash
-# FS QA Test No. 306
-#
-# Test RW open of a device on a RO fs
-#
-#-----------------------------------------------------------------------
-# Copyright (c) 2013 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`
-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
-
-# real QA test starts here
-
-# Modify as appropriate.
-_supported_fs generic
-_supported_os Linux
-_require_scratch
-
-DEVNULL=$SCRATCH_MNT/devnull
-DEVZERO=$SCRATCH_MNT/devzero
-
-rm -f $seq.full
-_scratch_mkfs > $seq.full 2>&1
-_scratch_mount
-
-rm -f $DEVNULL $DEVZERO
-
-mknod $DEVNULL c 1 3 || _fail "Could not create devnull device"
-mknod $DEVZERO c 1 5 || _fail "Could not create devzero device"
-
-_scratch_unmount || _fail "Could not unmount scratch device"
-_scratch_mount -o ro || _fail "Could notemount scratch readonly"
-
-# We should be able to read & write to/from these devices even on an RO fs
-echo "== try to create new file"
-touch $SCRATCH_MNT/this_should_fail 2>&1 | _filter_scratch
-echo "== pwrite to null device"
-$XFS_IO_PROG -c "pwrite 0 512" /dev/null | _filter_xfs_io
-echo "== pread from zero device"
-$XFS_IO_PROG -c "pread 0 512" /dev/zero | _filter_xfs_io
-
-echo "== truncating write to null device"
-echo foo > $DEVNULL 2>&1 | _filter_scratch
-echo "== appending write to null device"
-echo foo >> $DEVNULL 2>&1 | _filter_scratch
-
-# success, all done
-status=0
-exit
diff --git a/306.out b/306.out
deleted file mode 100644 (file)
index 8644f38..0000000
--- a/306.out
+++ /dev/null
@@ -1,11 +0,0 @@
-QA output created by 306
-== try to create new file
-touch: cannot touch `SCRATCH_MNT/this_should_fail': Read-only file system
-== pwrite to null device
-wrote 512/512 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-== pread from zero device
-read 512/512 bytes at offset 0
-XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-== truncating write to null device
-== appending write to null device
diff --git a/group b/group
index aaa87dd2f32f8eea6e887446bc65b99cc716518d..07ba4f6139ce52cc7acb142b6670206f0ff30627 100644 (file)
--- a/group
+++ b/group
@@ -121,26 +121,15 @@ stress
 
 # test-group association ... one line per test
 #
-001 rw dir udf auto quick
-002 metadata udf auto quick
 003 db auto quick
 004 db auto quick
-005 dir udf auto quick
-006 dir udf auto quick
-007 dir udf auto quick
 008 rw ioctl auto quick
 009 rw ioctl auto prealloc quick
-010 other udf auto
-011 dir udf auto quick
 012 rw auto quick
-013 other ioctl udf auto quick
-014 rw udf auto quick
-015 other auto quick
 016 rw auto quick
 017 mount auto quick stress
 018 deprecated # log logprint v2log
 019 mkfs auto quick
-020 metadata attr udf auto quick
 021 db attr auto quick
 022 dump ioctl tape
 023 dump ioctl tape
@@ -173,7 +162,6 @@ stress
 050 quota auto quick
 051 acl udf auto quick
 052 quota db auto quick
-053 acl repair auto quick
 054 quota auto quick
 055 dump ioctl remote tape
 056 dump ioctl auto quick
@@ -182,24 +170,15 @@ stress
 059 dump ioctl auto quick
 060 dump ioctl auto quick
 061 dump ioctl auto quick
-062 attr udf auto quick
 063 dump attr auto quick
 064 dump auto
 065 dump auto
 066 dump ioctl auto quick
 067 acl attr auto quick
-068 other auto freeze dangerous stress
-069 rw udf auto quick
-070 attr udf auto quick stress
 071 rw auto
 072 rw auto prealloc quick
 073 copy auto
-074 rw udf auto
-075 rw udf auto quick
-076 metadata rw udf auto quick stress
-077 acl attr auto enospc
 078 growfs auto quick
-079 acl attr ioctl metadata auto quick
 080 rw ioctl
 081 deprecated # log logprint quota
 082 deprecated # log logprint v2log
@@ -208,60 +187,35 @@ stress
 085 log auto quick
 086 log v2log auto
 087 log v2log auto quota stress
-088 perms auto quick
-089 metadata auto
 090 rw auto
-091 rw auto quick
 092 other auto quick
-093 attr cap udf auto
 094 metadata dir ioctl auto
 095 log v2log auto
 096 mkfs v2log auto quick
-097 udf auto
 098 udf auto
-099 udf auto
-100 udf auto
 101 udf
 102 udf
 103 metadata dir ioctl auto quick
 104 growfs ioctl prealloc auto stress
-105 acl auto quick
 106 quota
 107 quota
 108 quota auto quick
 109 metadata auto
 110 repair auto
 111 ioctl
-112 rw aio auto quick
-113 rw aio auto quick
 114 parent attr stress
 115 parent attr
 116 quota auto quick
-117 attr auto quick
 118 quota auto quick
 119 log v2log auto freeze dangerous
-120 other auto quick
 121 log auto quick
 122 other auto quick
-123 perms auto quick
-124 pattern auto quick
-125 other auto
-126 perms auto quick
-127 rw auto
-128 perms auto quick
-129 rw auto quick
-130 pattern auto quick
-131 perms auto quick
-132 pattern auto
-133 rw auto
 134 quota auto quick
-135 metadata auto quick
 136 attr2
 137 metadata log auto
 138 metadata log auto
 139 metadata log auto
 140 metadata log auto
-141 rw auto quick
 142 dmapi auto
 143 dmapi auto
 144 dmapi auto
@@ -315,119 +269,62 @@ stress
 189 mount auto quick
 190 rw auto quick
 191 nfs4acl auto
-192 atime auto
-193 metadata auto quick
 194 rw auto
 195 ioctl dump auto quick
 196 quota auto quick
 197 dir auto quick
-198 auto aio quick
 199 mount auto quick
 200 mount auto quick
 201 metadata auto quick
 202 repair auto quick
 203 ioctl auto
-204 metadata rw auto
 205 metadata rw auto
 206 growfs auto quick
-207 auto aio quick
-208 auto aio
-209 auto aio
-210 auto aio quick
-211 auto aio quick
-212 auto aio quick
-213 rw auto prealloc quick enospc
-214 rw auto prealloc quick
-215 auto metadata quick
 216 log metadata auto quick
 217 log metadata auto
 218 auto fsr quick
-219 auto quota quick
 220 auto quota quick
-221 auto metadata quick
 222 auto fsr ioctl quick
-223 auto quick
-224 auto
-225 auto quick
-226 auto enospc
 227 auto fsr
-228 rw auto prealloc quick
 229 auto rw
-230 auto quota quick
-231 auto quota
-232 auto quota stress
-233 auto quota stress
-234 auto quota
-235 auto quota quick
-236 auto quick metadata
-237 auto quick acl
 238 auto quick metadata ioctl
-239 auto aio rw
-240 auto aio quick rw
-241 auto
 242 auto quick prealloc
 243 auto quick prealloc
 244 auto quota quick
-245 auto quick dir
-246 auto quick rw
-247 auto quick rw
-248 auto quick rw
-249 auto quick rw 
 250 auto quick rw prealloc metadata
-251 ioctl trim
 252 auto quick prealloc
 253 auto quick
 254 auto quick
-255 auto quick prealloc
-256 auto quick
-257 dir auto quick
-258 auto quick
 259 auto quick
-260 auto quick trim
 261 auto quick quota
 262 auto quick quota
-263 rw auto quick
 264 auto
 265 auto
 266 dump ioctl auto quick
 267 dump ioctl tape
 268 dump ioctl tape
-269 auto rw prealloc ioctl enospc stress
-270 auto quota rw prealloc ioctl enospc stress
 271 auto rw quick
 272 auto enospc rw
-273 auto rw
-274 auto rw prealloc
-275 auto rw
 276 auto rw metadata
-277 auto ioctl quick metadata
 278 repair auto
 279 auto mkfs
-280 auto quota freeze dangerous
 281 dump ioctl auto quick
 282 dump ioctl auto quick
 283 dump ioctl auto quick
 284 auto
-285 auto rw
-286 other
 287 auto dump quota quick
-288 auto quick ioctl trim
 289 auto quick
 290 auto rw prealloc quick ioctl
 291 repair
 292 auto mkfs quick
 293 auto quick
-294 auto quick
 295 auto logprint quick
 296 dump auto quick
 297 auto freeze
 298 auto trim
-299 auto aio enospc rw stress
-300 auto aio enospc preallocrw stress
 301 aio dangerous ioctl rw stress
 302 aio dangerous ioctl rw stress
 303 aio dangerous ioctl rw stress
 304 aio dangerous ioctl rw stress
 305 aio dangerous enospc rw stress
-306 auto quick rw
 307 auto quick
diff --git a/tests/generic/001 b/tests/generic/001
new file mode 100755 (executable)
index 0000000..b9997f3
--- /dev/null
@@ -0,0 +1,319 @@
+#! /bin/bash
+# FS QA Test No. 001
+#
+# Random file copier to produce chains of identical files so the head
+# and the tail can be diff'd at the end of each iteration.
+#
+# Exercises creat, write and unlink for a variety of directory sizes, and
+# checks for data corruption.
+#
+# run [config]
+#
+# config has one line per file with filename and byte size, else use
+# the default one below.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2001 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+tmp=/tmp/$$
+here=`pwd`
+status=1
+done_cleanup=false
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+verbose=true
+verify=$here/verify_fill
+
+if [ $# -eq 0 ]
+then
+    # use the default config
+    #
+    cat <<End-of-File >$tmp.config
+# pathname     size in bytes
+#
+small          10
+big            102400
+sub/small      10
+sub/big                102400
+#
+sub/a          1
+sub/b          2
+sub/c          4
+sub/d          8
+sub/e          16
+sub/f          32
+sub/g          64
+sub/h          128
+sub/i          256
+sub/j          512
+sub/k          1024
+sub/l          2048
+sub/m          4096
+sub/n          8192
+#
+sub/a00                100
+sub/b00                200
+sub/c00                400
+sub/d00                800
+sub/e00                1600
+sub/f00                3200
+sub/g00                6400
+sub/h00                12800
+sub/i00                25600
+sub/j00                51200
+sub/k00                102400
+sub/l00                204800
+sub/m00                409600
+sub/n00                819200
+#
+sub/a000       1000
+sub/e000       16000
+sub/h000       128000
+sub/k000       1024000
+End-of-File
+elif [ $# -eq 1 ]
+then
+    if [ -f $1 ]
+    then
+       cp $1 $tmp.config
+    else
+       echo "Error: cannot open config \"$1\""
+       exit 1
+    fi
+else
+    echo "Usage: run [config]"
+    exit 1
+fi
+
+ncopy=200              # number of file copies in the chain step
+udf_fsize=20240                # number of sectors for UDF
+
+_setup()
+{
+    if mkdir -p $testdir/$$
+    then
+       :
+    else
+       echo "Error: cannot mkdir \"$testdir/$$\""
+       exit 1
+    fi
+    cd $testdir/$$
+
+    $verbose && echo -n "setup "
+    sed -e '/^#/d' $tmp.config \
+    | while read file nbytes
+    do
+       dir=`dirname $file`
+       if [ "$dir" != "." ]
+       then
+           if [ ! -d $dir ]
+           then
+               if mkdir $dir
+               then
+                   :
+               else
+                   $verbose && echo
+                   echo "Error: cannot mkdir \"$dir\""
+                   exit 1
+               fi
+           fi
+       fi
+       rm -f $file
+       if $here/src/fill $file $file $nbytes
+       then
+           :
+       else
+           $verbose && echo
+           echo "Error: cannot create \"$file\""
+           exit 1
+       fi
+       $verbose && echo -n "."
+    done
+    $verbose && echo
+}
+
+_mark_iteration()
+{
+    $verbose && echo -n "mark_iteration "
+    sed -e '/^#/d' $tmp.config \
+    | while read file nbytes
+    do
+       if [ ! -f $file ]
+       then
+           $verbose && echo
+           echo "Error: $file vanished!"
+           touch $tmp.bad
+           continue
+       fi
+       sed -e "s/ [0-9][0-9]* / $1 /" <$file >$file.tmp
+       mv $file.tmp $file
+       $verbose && echo -n "."
+    done
+    $verbose && echo
+}
+
+# for each file, make a number of copies forming a chain like foo.0,
+# foo.1, foo.2, ... foo.N
+#
+# files are chosen at random, so the lengths of the chains are different
+#
+# then rename foo.N to foo.last and remove all of the other files in
+# the chain
+#
+_chain()
+{
+    $AWK_PROG -v full_file=$here/$seq.full -v verify=$verify <$tmp.config '
+BEGIN  { nfile = 0 }
+/^\#/  { next }
+       { file[nfile] = $1
+         size[nfile] = $2
+         link[nfile] = 0
+         nfile++
+         total_size += $2
+       }
+END    { srand('$iter')
+         for (i=0; i < '$ncopy'; i++) {
+           # choose a file at random, and add one copy to that chain
+           j = -1
+           while (j < 0 || j >= nfile)
+               j = int(rand() * nfile)
+           if (link[j] == 0) {
+               # previous should already exist and next one should not exist
+               printf "if [ ! -f %s ]; then echo \"%s missing!\"; exit; fi\n",file[j],file[j]
+               printf "if [ -f %s.0 ]; then echo \"%s.0 already present!\"; exit; fi\n",file[j],file[j]
+               printf "cp %s %s.0 || exit 1\n",file[j],file[j]
+               printf "ls -i %s.0\n", file[j] >full_file;
+               total_size += size[j]
+               printf "# total size = %d\n", total_size 
+           }
+           else {
+               # previous should already exist and next one should not exist
+               printf "if [ ! -f %s.%d ]; then echo \"%s.%d missing!\"; exit; fi\n",file[j],link[j]-1,file[j],link[j]-1
+               printf "if [ -f %s.%d ]; then echo \"%s.%d already present!\"; exit; fi\n",file[j],link[j],file[j],link[j]
+               printf "cp %s.%d %s.%d || exit 1\n",file[j],link[j]-1,file[j],link[j]
+               printf "ls -i %s.%d\n", file[j], link[j] >full_file;
+               total_size += size[j]
+               printf "# total size = %d\n", total_size 
+           }
+           link[j]++
+         }
+         # close all the chains, 
+         # if have at least one copy then move the last copy to "file[j].last"
+         # and remove all of the other files except the head of the chain
+         for (j=0; j<nfile; j++) {
+           if (link[j] > 0) {
+               printf "mv %s.%d %s.last\n",file[j],link[j]-1,file[j]
+               printf "ls -i %s.last\n", file[j] >full_file;
+           }
+           for (i=0; i<link[j]-1; i++) {
+               printf "rm -f %s.%d\n",file[j],i
+           }
+         }
+       }' \
+       | tee -a $here/$seq.full | sh
+}
+
+_check()
+{
+    rm -f $tmp.bad
+    $verbose && echo -n "check "
+    sed -e '/^#/d' $tmp.config \
+    | while read file nbytes
+    do
+       # the file is never removed so it should exist
+       if [ ! -f $file ]
+       then
+           $verbose && echo
+           echo "Error: $file vanished!"
+           touch $tmp.bad
+           continue
+       fi
+       # checks that the file and its last copy are the same
+       if [ -f $file.last ]
+       then
+           if cmp $file $file.last >/dev/null 2>&1
+           then
+               $verbose && echo -n "."
+           else
+               $verbose && echo
+               echo "Error: corruption for $file ..."
+               diff -c $file $file.last
+               touch $tmp.bad
+           fi
+       else
+           $verbose && echo -n "."
+       fi
+    done
+    $verbose && echo
+}
+
+_cleanup()
+{
+    # cleanup
+    #
+    if $done_cleanup
+    then
+       :
+    elif [ $status -eq 0 ]
+    then
+       $verbose && echo "cleanup"
+       cd /
+       rm -rf $testdir/$$
+       _cleanup_testdir
+       done_cleanup=true
+    fi
+}
+
+rm -f $here/$seq.full
+status=0
+_cleanup
+status=1
+done_cleanup=false
+
+_setup_testdir
+_setup
+
+# do the test
+#
+for iter in 1 2 3 4 5
+do
+    echo -n "iter $iter chain ... "
+    echo "iter $iter" >> $here/$seq.full
+    _chain
+    _check
+    if [ -f $tmp.bad ]
+    then
+       echo "Fatal error: test abandoned without changes"
+       exit 1
+    fi
+done
+
+status=0
+exit
diff --git a/tests/generic/001.out b/tests/generic/001.out
new file mode 100644 (file)
index 0000000..e843a58
--- /dev/null
@@ -0,0 +1,9 @@
+QA output created by 001
+cleanup
+setup ....................................
+iter 1 chain ... check ....................................
+iter 2 chain ... check ....................................
+iter 3 chain ... check ....................................
+iter 4 chain ... check ....................................
+iter 5 chain ... check ....................................
+cleanup
diff --git a/tests/generic/002 b/tests/generic/002
new file mode 100755 (executable)
index 0000000..db63fa0
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/bash
+# FS QA Test No. 002
+#
+# simple inode link count test for a regular file
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2001 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+tmp=/tmp/$$
+here=`pwd`
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    rm -f $tmp.*
+    _cleanup_testdir
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_setup_testdir
+
+echo "Silence is goodness ..."
+
+# ensure target directory exists
+mkdir `dirname $testdir/$tmp` 2>/dev/null
+
+touch $testdir/$tmp.1
+for l in 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+do
+    ln $testdir/$tmp.1 $testdir/$tmp.$l
+    x=`src/lstat64 $testdir/$tmp.1 | sed -n -e '/ Links: /s/.*Links: *//p'`
+    if [ "$l" -ne $x ]
+    then
+       echo "Arrgh, created link #$l and lstat64 looks like ..."
+       src/lstat64 $testdir/$tmp.1
+       status=1
+    fi
+done
+
+for l in 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+do
+    x=`src/lstat64 $testdir/$tmp.1 | sed -n -e '/ Links: /s/.*Links: *//p'`
+    if [ "$l" -ne $x ]
+    then
+       echo "Arrgh, about to remove link #$l and lstat64 looks like ..."
+       src/lstat64 $testdir/$tmp.1
+       status=1
+    fi
+    rm -f $testdir/$tmp.$l
+done
+
+# success, all done
+exit
diff --git a/tests/generic/002.out b/tests/generic/002.out
new file mode 100644 (file)
index 0000000..11426b5
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 002
+Silence is goodness ...
diff --git a/tests/generic/005 b/tests/generic/005
new file mode 100755 (executable)
index 0000000..27da3d3
--- /dev/null
@@ -0,0 +1,99 @@
+#! /bin/bash
+# FS QA Test No. 005
+#
+# Test symlinks & ELOOP
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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
+#
+#-----------------------------------------------------------------------
+#
+
+#
+# Note1: On Linux, ELOOP limit used to be 32 but changed to 8, and lately
+# its become 5.  Who knows what it might be next.
+# Note2: On IRIX, the limit is around the 30 mark.
+# 
+# What we are looking for here is: no panic due to blowing the stack;
+# and that the ELOOP error code is returned at some point (the actual
+# limit point is unimportant, just checking that we do hit it).
+# 
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd $testdir
+    rm -f symlink_{0,1,2,3,4}{0,1,2,3,4,5,6,7,8,9} symlink_self empty_file
+    cd /
+    _cleanup_testdir
+}
+
+_touch()
+{
+    # On IRIX: Too many symbolic links in path name traversal
+    # On Linux: Too many levels of symbolic links
+    touch $@ 2>&1 | grep -q 'Too many.*symbolic links'
+    if [ $? -eq 0 ]; then
+       echo "ELOOP returned.  Good."
+    else
+       echo "No ELOOP?  Unexpected!"
+    fi
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+
+# IRIX UDF does not support symlinks
+if [ $FSTYP == 'udf' ]; then
+    _supported_os Linux
+else
+    _supported_os Linux IRIX
+fi
+
+_setup_testdir
+
+cd $testdir
+
+o=empty_file
+touch $o
+for f in symlink_{0,1,2,3,4}{0,1,2,3,4,5,6,7,8,9}
+do
+    ln -s $o $f
+    o=$f
+done
+
+ln -s symlink_self symlink_self
+
+echo "*** touch deep symlinks"
+echo ""
+_touch symlink_{0,1,2,3,4}{0,1,2,3,4,5,6,7,8,9}
+echo ""
+echo "*** touch recusive symlinks"
+echo ""
+_touch symlink_self
+
+exit
diff --git a/tests/generic/005.out b/tests/generic/005.out
new file mode 100644 (file)
index 0000000..b3ccffa
--- /dev/null
@@ -0,0 +1,8 @@
+QA output created by 005
+*** touch deep symlinks
+
+ELOOP returned.  Good.
+
+*** touch recusive symlinks
+
+ELOOP returned.  Good.
diff --git a/tests/generic/006 b/tests/generic/006
new file mode 100755 (executable)
index 0000000..1437b46
--- /dev/null
@@ -0,0 +1,78 @@
+#! /bin/bash
+# FS QA Test No. 006
+#
+# permname
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2001 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -f $tmp.*
+    rm -rf $testdir/permname.$$
+    _cleanup_testdir
+}
+
+_count()
+{
+    $AWK_PROG '
+        BEGIN   { count = 0 }
+                { count ++ }
+        END     { print count " files created" }
+    '
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_setup_testdir
+
+mkdir $testdir/permname.$$
+
+echo ""
+echo "single thread permname"
+echo "----------------------"
+mkdir $testdir/permname.$$/a
+cd $testdir/permname.$$/a
+$here/src/permname -c 4 -l 6 -p 1 || echo "permname returned $?"
+find . | _count
+
+echo ""
+echo "multi thread permname"
+echo "----------------------"
+mkdir $testdir/permname.$$/b
+cd $testdir/permname.$$/b
+$here/src/permname -c 4 -l 6 -p 4 || echo "permname returned $?"
+find . | _count
+
+exit
diff --git a/tests/generic/006.out b/tests/generic/006.out
new file mode 100644 (file)
index 0000000..ce17a49
--- /dev/null
@@ -0,0 +1,11 @@
+QA output created by 006
+
+single thread permname
+----------------------
+alpha size = 4, name length = 6, total files = 4096, nproc=1
+4097 files created
+
+multi thread permname
+----------------------
+alpha size = 4, name length = 6, total files = 4096, nproc=4
+4097 files created
diff --git a/tests/generic/007 b/tests/generic/007
new file mode 100755 (executable)
index 0000000..2bb981f
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/bash
+# FS QA Test No. 007
+#
+# drive the src/nametest program
+# which does a heap of open(create)/unlink/stat
+# and checks that error codes make sense with its
+# memory of the files created.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2001 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -f $tmp.*
+    rm -rf $testdir/$seq
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_setup_testdir
+
+status=1 # default failure 
+sourcefile=$tmp.nametest
+seed=1
+iterations=100000
+num_filenames=100
+
+# need to create an input file with a list of
+# filenames on each line 
+i=1
+while [ $i -le $num_filenames ]; do
+  echo "nametest.$i" >>$sourcefile
+  let i=$i+1
+done
+
+mkdir $testdir/$seq
+cd $testdir/$seq
+$here/src/nametest -l $sourcefile -s $seed -i $iterations -z
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/007.out b/tests/generic/007.out
new file mode 100644 (file)
index 0000000..514b44a
--- /dev/null
@@ -0,0 +1,22 @@
+QA output created by 007
+.Seed = 1 (use "-s 1" to re-execute this test)
+.......................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+.........................................................................
+....................................................
+creates:  18736 OK,  18802 EEXIST  ( 37538 total, 50% EEXIST)
+removes:  18675 OK,  19927 ENOENT  ( 38602 total, 51% ENOENT)
+lookups:  12000 OK,  11860 ENOENT  ( 23860 total, 49% ENOENT)
+total  :  49411 OK,  50589 w/error (100000 total, 50% w/error)
+
+cleanup:     61 removes
diff --git a/tests/generic/010 b/tests/generic/010
new file mode 100755 (executable)
index 0000000..245f407
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/bash
+# FS QA Test No. 010
+#
+# dbtest
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2002 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -f $tmp.*
+    rm -f $testdir/DBtest*.{pag,dir}
+    _cleanup_testdir
+}
+
+# filter random number output from dbtest
+#
+_filter_dbtest()
+{
+    sed \
+        -e '/were [0-9][0-9]* duplicate/s//were BLEEP duplicate/' \
+        -e '/using [0-9][0-9]* as seed/s//using BLEEP as seed/'
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+[ -x $here/src/dbtest ] || _notrun "dbtest was not built for this platform"
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_setup_testdir
+
+rm -f $seq.full
+
+cd $testdir
+
+$here/src/dbtest -l 5 -n 1000 2>&1 | tee -a $here/$seq.full | _filter_dbtest
+
+# success, all done
+exit
diff --git a/tests/generic/010.out b/tests/generic/010.out
new file mode 100644 (file)
index 0000000..56a3ccb
--- /dev/null
@@ -0,0 +1,58 @@
+QA output created by 010
+dbtest v1.0
+
+Creating database containing 1000 records...
+       performing lookups for 5 iterations...
+       using BLEEP as seed for srandom()...
+
+       
+There were BLEEP duplicate checksums generated
+
+Performing lookups on database...
+
+       Sequential lookups...
+
+
+       Random lookups...
+
+Lookups succeeded...
+
+Performing lookups on database...
+
+       Sequential lookups...
+
+
+       Random lookups...
+
+Lookups succeeded...
+
+Performing lookups on database...
+
+       Sequential lookups...
+
+
+       Random lookups...
+
+Lookups succeeded...
+
+Performing lookups on database...
+
+       Sequential lookups...
+
+
+       Random lookups...
+
+Lookups succeeded...
+
+Performing lookups on database...
+
+       Sequential lookups...
+
+
+       Random lookups...
+
+Lookups succeeded...
+
+Cleaning up database...
+       
+There were BLEEP duplicate checksums generated
diff --git a/tests/generic/011 b/tests/generic/011
new file mode 100755 (executable)
index 0000000..4ede2d8
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/bash
+# FS QA Test No. 011
+#
+# dirstress
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2001 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+out=""
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -f $tmp.*
+    [ -n "$out" ] && rm -rf $out
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_setup_testdir
+
+out=$testdir/dirstress.$$
+
+rm -f $seq.full
+
+_test()
+{
+    test="$1"
+    args="$2"
+    count="$3"
+    
+    echo "*** TEST $test $args -f <count>"
+    if ! $here/src/dirstress -d $out -f $count $args >$tmp.out 2>&1
+    then
+        echo "    dirstress failed"
+        echo "*** TEST $test -d $out -f $count $args" >>$seq.full
+        cat $tmp.out >>$seq.full
+        status=1
+    fi
+}
+
+# dirstress doesn't check returns - this is a crash & burn test.
+if ! mkdir $out
+then
+    echo "!! couldn't mkdir $out"
+    status=1
+    exit
+fi
+
+count=1000
+_test 1 "-p 1 -n 1" $count
+_test 2 "-p 5 -n 1" $count
+_test 3 "-p 5 -n 5" $count
+
+# if error
+exit
diff --git a/tests/generic/011.out b/tests/generic/011.out
new file mode 100644 (file)
index 0000000..546a4db
--- /dev/null
@@ -0,0 +1,4 @@
+QA output created by 011
+*** TEST 1 -p 1 -n 1 -f <count>
+*** TEST 2 -p 5 -n 1 -f <count>
+*** TEST 3 -p 5 -n 5 -f <count>
diff --git a/tests/generic/013 b/tests/generic/013
new file mode 100755 (executable)
index 0000000..0879a2a
--- /dev/null
@@ -0,0 +1,136 @@
+#! /bin/bash
+# FS QA Test No. 013
+#
+# fsstress
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2002 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    # we might get here with a RO FS
+    mount -o remount,rw $TEST_DEV >/dev/null 2>&1
+    # now remove fsstress directory.
+    # N.B. rm(1) on IRIX can find problems when building up a long pathname
+    # such that what it has is greater the 1024 chars and will
+    # stop and complain - so get rid of complaint
+    # Ref. pv#935754
+    rm -rf $testdir/fsstress.$$.* 2>&1 | grep -v 'Path too long'
+    _cleanup_testdir
+}
+
+_filesize()
+{
+    ls -l $1 | $AWK_PROG '{print "    filesize = " $5}'
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_do_test()
+{
+    _n="$1"
+    _param="$2"
+    _count="$3"
+
+    out=$testdir/fsstress.$$.$_n
+    rm -rf $out
+    if ! mkdir $out
+    then
+        echo "    failed to mkdir $out"
+        status=1
+        exit
+    fi
+
+    echo ""
+    echo "-----------------------------------------------"
+    echo "fsstress.$_n : $_param"
+    echo "-----------------------------------------------"
+    # -m limits number of users/groups so check doesn't fail (malloc) later
+    dbgoutfile=$seq.full
+    if ! $FSSTRESS_PROG $_param $FSSTRESS_AVOID -v -m 8 -n $_count -d $out >>$dbgoutfile 2>&1
+    then
+        echo "    fsstress (count=$_count) returned $? - see $seq.full"
+        echo "--------------------------------------"       >>$here/$seq.full
+        echo "$_n - output from fsstress:"                  >>$here/$seq.full
+        echo "--------------------------------------"       >>$here/$seq.full
+        echo "<NOT LOGGED>"                                 >>$here/$seq.full
+        #cat $tmp.out                                       >>$here/$seq.full
+        status=1
+    fi
+
+    _check_test_fs
+}
+
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_setup_testdir
+
+rm -f $here/$seq.full
+echo "brevity is wit..."
+
+count=1000
+procs=20
+
+_check_test_fs
+
+# the default
+
+_do_test 1 "-r" $count
+
+# and the default with multiprocess
+
+_do_test 2 "-p $procs -r" $count
+
+# from Glen's notes
+
+_do_test 3 "-p 4 -z -f rmdir=10 -f link=10 -f creat=10 -f mkdir=10 -f rename=30 -f stat=30 -f unlink=30 -f truncate=20" $count
+
+# if all ok by here then probably don't need $seq.full
+rm -f $seq.full
+
+exit
+
+# Test with error injection:
+#
+# (error injection)
+# fsstress -n 1000 -d $scratch -p 4 -z -f rmdir=10 -f link=10 -f creat=10 \
+#          -f mkdir=10 -f rename=30 -f stat=30 -f unlink=30 -f truncate=20 \
+#          -e 1
+#
+# Error values 1 - 6 test IFLUSH
+#         1 - corrupt buffer being flushed to di_core.di_magic
+#         2 - corrupt inode being flushed i_d.di_magic
+#         3 - corrupt S_IFREG format check
+#         4 - corrupt S_IFDIR format check
+#         5 - corrupt i_d.di_nextents
+#         6 - corrupt i_d.di_forkoff > sb_inodesize
diff --git a/tests/generic/013.out b/tests/generic/013.out
new file mode 100644 (file)
index 0000000..127cc86
--- /dev/null
@@ -0,0 +1,14 @@
+QA output created by 013
+brevity is wit...
+
+-----------------------------------------------
+fsstress.1 : -r
+-----------------------------------------------
+
+-----------------------------------------------
+fsstress.2 : -p 20 -r
+-----------------------------------------------
+
+-----------------------------------------------
+fsstress.3 : -p 4 -z -f rmdir=10 -f link=10 -f creat=10 -f mkdir=10 -f rename=30 -f stat=30 -f unlink=30 -f truncate=20
+-----------------------------------------------
diff --git a/tests/generic/014 b/tests/generic/014
new file mode 100755 (executable)
index 0000000..93caaa6
--- /dev/null
@@ -0,0 +1,72 @@
+#! /bin/bash
+# FS QA Test No. 014
+#
+# truncfile
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2001 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -f $tmp.*
+    rm -rf $testdir/truncfile.$$.*
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_supported_fs generic
+_supported_os IRIX Linux
+
+_require_sparse_files
+_setup_testdir
+
+# ensure EOF preallocation doesn't massively extend the runtime of this test
+# by limiting the amount of preallocation and therefore the amount of blocks
+# zeroed during the truncfile test run.
+if [ "$FSTYP" == "xfs" ]; then
+       umount $TEST_DIR
+       _test_mount -o allocsize=64k
+fi
+
+echo "brevity is wit..."
+
+echo "------"
+echo "test 1"
+echo "------"
+if ! src/truncfile -c 10000 $testdir/truncfile.$$.0 >$tmp.out 2>&1
+then
+    out=`cat $tmp.out`
+    echo "truncfile returned $? : \"$out\""
+else
+    echo "OK"
+fi
+
+exit
diff --git a/tests/generic/014.out b/tests/generic/014.out
new file mode 100644 (file)
index 0000000..fae7d03
--- /dev/null
@@ -0,0 +1,6 @@
+QA output created by 014
+brevity is wit...
+------
+test 1
+------
+OK
diff --git a/tests/generic/015 b/tests/generic/015
new file mode 100755 (executable)
index 0000000..52ab251
--- /dev/null
@@ -0,0 +1,125 @@
+#! /bin/bash
+# FS QA Test No. 015
+#
+# check out-of-space behaviour
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2002 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # success is the default!
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_cleanup()
+{
+       umount $SCRATCH_MNT
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_free()
+{
+    _df_dir $SCRATCH_MNT | $AWK_PROG '{ print $5 }'
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_require_scratch
+_require_no_large_scratch_dev
+
+_scratch_mkfs_sized `expr 50 \* 1024 \* 1024` >/dev/null 2>&1 \
+    || _fail "mkfs failed"
+_scratch_mount || _fail "mount failed"
+out=$SCRATCH_MNT/fillup.$$
+rm -f $seq.full
+
+free0=`_free`
+if [ -z "$free0" ]
+then
+    echo "   *** failed to get free space (0)"
+    exit 1
+fi
+echo "free space at start $free0" >> $seq.full
+
+echo "fill disk:"      # well, filesystem really - not disk
+
+POSIXLY_CORRECT=yes dd if=/dev/zero of=$out bs=1024k 2>&1 | _filter_dd
+
+echo "check free space:"
+
+free1=`_free`
+if [ -z "$free1" ]
+then
+    echo "   *** failed to get free space (1)"
+    exit 1
+fi
+echo "free space after fill $free1" >> $seq.full
+
+if [ ! -e $out ]
+then
+    echo "   *** file not created"
+    exit 1
+fi
+
+if [ ! -s $out ]
+then
+    echo "   *** file created with zero length"
+    ls -l $out
+    exit 1
+fi
+
+echo "delete fill:"
+
+if ! rm $out
+then
+    echo "   *** file not deleted"
+    exit 1
+fi
+
+if [ -e $out ]
+then
+    echo "   *** file still exists"
+    ls -l $out
+    exit 1
+fi
+
+echo "check free space:"
+
+free2=`_free`
+if [ -z "$free2" ]
+then
+    echo "   *** failed to get free space (2)"
+    exit 1
+fi
+echo "free space after delete $free2" >> $seq.full
+
+echo -n "   !!! "
+_within_tolerance "free space" $free2 $free0 1% -v
+
+status=0
+exit
diff --git a/tests/generic/015.out b/tests/generic/015.out
new file mode 100644 (file)
index 0000000..729287f
--- /dev/null
@@ -0,0 +1,7 @@
+QA output created by 015
+fill disk:
+   !!! disk full (expected)
+check free space:
+delete fill:
+check free space:
+   !!! free space is in range
diff --git a/tests/generic/020 b/tests/generic/020
new file mode 100755 (executable)
index 0000000..2bd1d9f
--- /dev/null
@@ -0,0 +1,184 @@
+#! /bin/bash
+# FS QA Test No. 020
+#
+# extended attributes
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2002 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; rm -f $tmp.* $testfile; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+_cleanup()
+{
+    _cleanup_testdir
+}
+
+_filter()
+{
+    sed "s#$testdir[^ :]*#<TESTFILE>#g; 
+            s#$tmp[^ :]*#<TMPFILE>#g" $1
+}
+
+_attr()
+{
+    $ATTR_PROG $* 2>$tmp.err >$tmp.out
+    exit=$?
+    _filter $tmp.out
+    _filter $tmp.err 1>&2
+    return $exit
+}
+
+_getfattr()
+{
+    $GETFATTR_PROG $* 2>$tmp.err >$tmp.out
+    exit=$?
+    _filter $tmp.out
+    _filter $tmp.err 1>&2
+    return $exit
+}
+
+_attr_list()
+{
+    file=$1
+    
+    echo "   *** print attributes"
+    if ! _getfattr -d -e text --absolute-names $file
+    then
+        echo "      !!! error return"
+        return 1
+    fi
+}
+
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_attrs
+
+_setup_testdir
+
+rm -f $seq.full
+
+testfile=$testdir/attribute_$$
+
+echo "*** list non-existant file"
+_attr_list $testfile
+
+echo "*** list empty file"
+touch $testfile
+_attr_list $testfile
+
+echo "*** query non-existant attribute"
+_attr -g "nonexistant" $testfile 2>&1
+
+echo "*** one attribute"
+echo "fish" | _attr -s fish $testfile
+_attr_list $testfile
+
+echo "*** replace attribute"
+echo "fish3" | _attr -s fish $testfile
+_attr_list $testfile
+
+echo "*** add attribute"
+echo "fish2" | _attr -s snrub $testfile
+_attr_list $testfile
+
+echo "*** remove attribute"
+_attr -r fish $testfile
+_attr_list $testfile
+
+echo "*** add lots of attributes"
+v=0
+
+while [ $v -lt $MAX_ATTRS ]
+do
+    echo -n "value_$v" | attr -s "attribute_$v" $testfile >>$seq.full
+    if [ $? -ne 0 ]
+    then
+        echo "!!! failed to add \"attribute_$v\""
+        exit 1
+    fi
+    
+    let "v = v + 1"
+done
+
+echo "*** check"
+# don't print it all out...
+getfattr --absolute-names $testfile \
+    | tee -a $seq.full \
+    | $AWK_PROG '
+       /^#/ { next }
+       /^[     ]*$/ { next }
+        { l++ } 
+       END {print "   *** " (l - 1) " attribute(s)" }' \
+    | sed s/$MAX_ATTRS/MAX_ATTRS/
+
+echo "*** remove lots of attributes"
+v=0
+while [ $v -lt $MAX_ATTRS ]
+do
+    if ! $ATTR_PROG -r "attribute_$v" $testfile >>$seq.full
+    then
+        echo "!!! failed to remove \"attribute_$v\""
+        exit 1
+    fi
+    
+    let "v = v + 1"
+done
+
+_attr_list $testfile
+
+echo "*** really long value"
+dd if=/dev/zero bs=1 count=$MAX_ATTRVAL_SIZE 2>/dev/null \
+    | _attr -s "long_attr" $testfile >/dev/null
+
+OCTAL_SIZE=`echo "obase=8; $MAX_ATTRVAL_SIZE" | bc`
+_attr -q -g "long_attr" $testfile | od -t x1 | sed -e "s/^0*$OCTAL_SIZE$/ATTRSIZE/"    
+_attr -r "long_attr" $testfile >/dev/null
+
+
+echo "*** set/get/remove really long names (expect failure)"
+short="XXXXXXXXXX"
+long="$short$short$short$short$short$short$short$short$short$short"
+vlong="$long$long$long"
+
+_attr -s $vlong -V fish $testfile 2>&1 >/dev/null
+_attr -g $vlong $testfile 2>&1 >/dev/null
+_attr -r $vlong $testfile 2>&1 >/dev/null
+
+echo "*** check final"
+
+_attr_list $testfile
+
+echo "*** delete"
+rm -f $testfile
+
+exit
diff --git a/tests/generic/020.out b/tests/generic/020.out
new file mode 100644 (file)
index 0000000..7e3e65b
--- /dev/null
@@ -0,0 +1,65 @@
+QA output created by 020
+*** list non-existant file
+   *** print attributes
+getfattr: <TESTFILE>: No such file or directory
+      !!! error return
+*** list empty file
+   *** print attributes
+*** query non-existant attribute
+attr_get: No data available
+Could not get "nonexistant" for <TESTFILE>
+*** one attribute
+Attribute "fish" set to a 5 byte value for <TESTFILE>:
+fish
+
+   *** print attributes
+# file: <TESTFILE>
+user.fish="fish\012"
+
+*** replace attribute
+Attribute "fish" set to a 6 byte value for <TESTFILE>:
+fish3
+
+   *** print attributes
+# file: <TESTFILE>
+user.fish="fish3\012"
+
+*** add attribute
+Attribute "snrub" set to a 6 byte value for <TESTFILE>:
+fish2
+
+   *** print attributes
+# file: <TESTFILE>
+user.fish="fish3\012"
+user.snrub="fish2\012"
+
+*** remove attribute
+   *** print attributes
+# file: <TESTFILE>
+user.snrub="fish2\012"
+
+*** add lots of attributes
+*** check
+   *** MAX_ATTRS attribute(s)
+*** remove lots of attributes
+   *** print attributes
+# file: <TESTFILE>
+user.snrub="fish2\012"
+
+*** really long value
+0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+*
+ATTRSIZE
+*** set/get/remove really long names (expect failure)
+attr_set: Invalid argument
+Could not set "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" for <TESTFILE>
+attr_get: Invalid argument
+Could not get "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" for <TESTFILE>
+attr_remove: Invalid argument
+Could not remove "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" for <TESTFILE>
+*** check final
+   *** print attributes
+# file: <TESTFILE>
+user.snrub="fish2\012"
+
+*** delete
diff --git a/tests/generic/053 b/tests/generic/053
new file mode 100755 (executable)
index 0000000..388c9b4
--- /dev/null
@@ -0,0 +1,90 @@
+#! /bin/bash
+# FS QA Test No. 053
+#
+# xfs_repair breaks acls
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2002 Silicon Graphics, 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`
+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.attr
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_scratch
+_require_acls
+_acl_setup_ids
+_do_die_on_error=y
+test=$SCRATCH_MNT/test
+
+# make filesystem on scratch using the defaults
+_do 'make filesystem on $SCRATCH_DEV' '_scratch_mkfs'
+_do 'mount filesytem' '_scratch_mount'
+
+# create test files and set acls
+acls="
+u::r--,g::rwx,o::rw-
+u::r-x,g::---,o::---
+u::---,g::r-x,o::---
+u::---,g::---,o::r-x
+u::---,g::r-x,o::rwx
+u::---,g::---,o::---,u:$acl2:r-x,m::rwx
+u::rwx,g::r-x,o::r--
+u::---,g::---,o::---,g:$acl2:r-x,m::-w-"
+
+i=0
+for acl in $acls
+do
+  _do "touch $test.$i"
+  _do "chacl $acl $test.$i"
+  let i=$i+1
+done
+
+list_acls()
+{
+  i=0
+  for acl in $acls
+  do
+    chacl -l $test.$i | _acl_filter_id | sed -e "s!$SCRATCH_MNT!\$SCRATCH_MNT!"
+    let i=$i+1
+  done
+}
+
+echo "acls before repair:"
+list_acls
+_do 'unmount $SCRATCH_DEV' 'umount $SCRATCH_DEV'
+_do 'repair filesystem' '_check_scratch_fs'
+_do 'mount filesytem' '_scratch_mount'
+echo "acls after repair: "
+list_acls
+
+# success, all done
+status=0; exit
diff --git a/tests/generic/053.out b/tests/generic/053.out
new file mode 100644 (file)
index 0000000..cd71cbb
--- /dev/null
@@ -0,0 +1,24 @@
+QA output created by 053
+make filesystem on $SCRATCH_DEV... done
+mount filesytem... done
+acls before repair:
+$SCRATCH_MNT/test.0 [u::r--,g::rwx,o::rw-]
+$SCRATCH_MNT/test.1 [u::r-x,g::---,o::---]
+$SCRATCH_MNT/test.2 [u::---,g::r-x,o::---]
+$SCRATCH_MNT/test.3 [u::---,g::---,o::r-x]
+$SCRATCH_MNT/test.4 [u::---,g::r-x,o::rwx]
+$SCRATCH_MNT/test.5 [u::---,u:id2:r-x,g::---,m::rwx,o::---]
+$SCRATCH_MNT/test.6 [u::rwx,g::r-x,o::r--]
+$SCRATCH_MNT/test.7 [u::---,g::---,g:id2:r-x,m::-w-,o::---]
+unmount $SCRATCH_DEV... done
+repair filesystem... done
+mount filesytem... done
+acls after repair: 
+$SCRATCH_MNT/test.0 [u::r--,g::rwx,o::rw-]
+$SCRATCH_MNT/test.1 [u::r-x,g::---,o::---]
+$SCRATCH_MNT/test.2 [u::---,g::r-x,o::---]
+$SCRATCH_MNT/test.3 [u::---,g::---,o::r-x]
+$SCRATCH_MNT/test.4 [u::---,g::r-x,o::rwx]
+$SCRATCH_MNT/test.5 [u::---,u:id2:r-x,g::---,m::rwx,o::---]
+$SCRATCH_MNT/test.6 [u::rwx,g::r-x,o::r--]
+$SCRATCH_MNT/test.7 [u::---,g::---,g:id2:r-x,m::-w-,o::---]
diff --git a/tests/generic/062 b/tests/generic/062
new file mode 100755 (executable)
index 0000000..5a6081e
--- /dev/null
@@ -0,0 +1,219 @@
+#! /bin/bash
+# FS QA Test No. 062
+#
+# Exercises the getfattr/setfattr tools
+# Derived from tests originally written by Andreas Gruenbacher for ext2
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2002 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+_cleanup()
+{
+        cd /
+       echo; echo "*** unmount"
+       umount $SCRATCH_MNT 2>/dev/null
+       rm -f $tmp.*
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+getfattr()
+{
+    $GETFATTR_PROG --absolute-names -dh $@ 2>&1 | _filter_scratch
+}
+
+setfattr()
+{
+    $SETFATTR_PROG $@ 2>&1 | _filter_scratch
+}
+
+_create_test_bed()
+{
+       echo "*** create test bed"
+       touch $SCRATCH_MNT/reg
+       mkdir -p $SCRATCH_MNT/dir
+       ln -s $SCRATCH_MNT/dir $SCRATCH_MNT/lnk
+       mkdir $SCRATCH_MNT/dev
+       mknod $SCRATCH_MNT/dev/b b 0 0
+       mknod $SCRATCH_MNT/dev/c c 0 0
+       mknod $SCRATCH_MNT/dev/p p
+       # sanity check
+       find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch | grep -v "lost+found"
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_scratch
+_require_attrs
+
+rm -f $tmp.backup1 $tmp.backup2 $seq.full
+
+# real QA test starts here
+_scratch_mkfs > /dev/null 2>&1 || _fail "mkfs failed"
+_scratch_mount || _fail "mount failed"
+_create_test_bed
+
+# In kernels before 3.0, getxattr() fails with EPERM for an attribute which
+# cannot exist.  Later kernels fail with ENODATA.  Accept both results.
+invalid_attribute_filter() {
+       sed -e "s:\(No such attribute\|Operation not permitted\):No such attribute or operation not permitted:"
+}
+
+if [ "$USE_ATTR_SECURE" = yes ]; then
+    ATTR_MODES="user security trusted"
+else
+    ATTR_MODES="user trusted"
+fi
+for nsp in $ATTR_MODES; do
+       for inode in reg dir lnk dev/b dev/c dev/p; do
+
+               echo; echo "=== TYPE $inode; NAMESPACE $nsp"; echo
+               echo "*** set/get one initially empty attribute"
+    
+               setfattr -h -n $nsp.name $SCRATCH_MNT/$inode
+               getfattr -m $nsp $SCRATCH_MNT/$inode
+
+               echo "*** overwrite empty, set several new attributes"
+               setfattr -h -n $nsp.name -v 0xbabe $SCRATCH_MNT/$inode
+               setfattr -h -n $nsp.name2 -v 0xdeadbeef $SCRATCH_MNT/$inode
+               setfattr -h -n $nsp.name3 -v 0xdeface $SCRATCH_MNT/$inode
+
+               echo "*** fetch several attribute names and values (hex)"
+               getfattr -m $nsp -e hex $SCRATCH_MNT/$inode
+
+               echo "*** fetch several attribute names and values (base64)"
+               getfattr -m $nsp -e base64 $SCRATCH_MNT/$inode
+               
+               echo "*** shrink value of an existing attribute"
+               setfattr -h -n $nsp.name2 -v 0xdeaf $SCRATCH_MNT/$inode
+               getfattr -m $nsp -e hex $SCRATCH_MNT/$inode
+
+               echo "*** grow value of existing attribute"
+               setfattr -h -n $nsp.name2 -v 0xdecade $SCRATCH_MNT/$inode
+               getfattr -m $nsp -e hex $SCRATCH_MNT/$inode
+               
+               echo "*** set an empty value for second attribute"
+               setfattr -h -n $nsp.name2 $SCRATCH_MNT/$inode
+               getfattr -m $nsp -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 | invalid_attribute_filter
+
+               echo "*** overwrite empty value"
+               setfattr -h -n $nsp.name2 -v 0xcafe $SCRATCH_MNT/$inode
+               getfattr -m $nsp -e hex -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 | invalid_attribute_filter
+
+               echo "*** remove attribute"
+               setfattr -h -x $nsp.name2 $SCRATCH_MNT/$inode
+               getfattr -m $nsp -e hex -n $nsp.name2 $SCRATCH_MNT/$inode 2>&1 | invalid_attribute_filter
+
+               echo "*** final list (strings, type=$inode, nsp=$nsp)"
+               getfattr -m '.' -e hex $SCRATCH_MNT/$inode
+       
+       done
+done
+
+
+# 
+# Test the directory descent code
+# 
+echo; echo
+
+_extend_test_bed()
+{
+       echo "*** extend test bed"
+       # must set some descents' attributes to be useful
+       mkdir -p $SCRATCH_MNT/here/up/ascend
+       mkdir -p $SCRATCH_MNT/descend/down/here
+       find $SCRATCH_MNT/descend | xargs setfattr -n user.x -v yz
+       find $SCRATCH_MNT/descend | xargs setfattr -n user.1 -v 23
+       find $SCRATCH_MNT/here | xargs setfattr -n trusted.a -v bc
+       find $SCRATCH_MNT/here | xargs setfattr -n trusted.9 -v 87
+       # whack a symlink in the middle, just to be difficult
+       ln -s $SCRATCH_MNT/here/up $SCRATCH_MNT/descend/and
+       # dump out our new starting point
+       find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch | grep -v "lost+found"
+}
+
+_extend_test_bed
+
+echo
+echo "*** directory descent with us following symlinks"
+getfattr -h -L -R -m '.' -e hex $SCRATCH_MNT | _sort_getfattr_output
+
+echo
+echo "*** directory descent without following symlinks"
+getfattr -h -P -R -m '.' -e hex $SCRATCH_MNT | _sort_getfattr_output
+
+
+# 
+# Test the backup/restore code
+# 
+echo; echo
+
+_backup()
+{
+       # NB: no filtering of scratch here... (need to restore too)
+       $GETFATTR_PROG --absolute-names -dh -R -m '.' $SCRATCH_MNT >$1
+       echo BACKUP $1 >>$seq.full
+       cat $1 >> $seq.full
+       [ ! -s $1 ] && echo "warning: $1 (backup file) is empty"
+}
+
+echo "*** backup everything"
+_backup $tmp.backup1
+
+echo "*** clear out the scratch device"
+rm -fr $SCRATCH_MNT/*
+echo "AFTER REMOVE" >>$seq.full
+getfattr -L -R -m '.' $SCRATCH_MNT >>$seq.full
+
+echo "*** reset test bed with no extended attributes"
+_create_test_bed
+_extend_test_bed
+
+echo "*** restore everything"
+setfattr -h --restore=$tmp.backup1
+_backup $tmp.backup2
+
+echo "AFTER RESTORE" >>$seq.full
+getfattr -L -R -m '.' $SCRATCH_MNT >>$seq.full
+
+echo "*** compare before and after backups"
+diff $tmp.backup1 $tmp.backup2
+if [ $? -ne 0 ]; then
+       echo "urk, failed - creating $seq.backup1 and $seq.backup2"
+       cp $tmp.backup1 $seq.backup1 && cp $tmp.backup2 $seq.backup2
+       status=1
+       exit
+fi
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/062.out b/tests/generic/062.out
new file mode 100644 (file)
index 0000000..8cc3c65
--- /dev/null
@@ -0,0 +1,654 @@
+QA output created by 062
+*** create test bed
+SCRATCH_MNT
+SCRATCH_MNT/dev
+SCRATCH_MNT/dev/b
+SCRATCH_MNT/dev/c
+SCRATCH_MNT/dev/p
+SCRATCH_MNT/dir
+SCRATCH_MNT/lnk
+SCRATCH_MNT/reg
+
+=== TYPE reg; NAMESPACE user
+
+*** set/get one initially empty attribute
+# file: SCRATCH_MNT/reg
+user.name
+
+*** overwrite empty, set several new attributes
+*** fetch several attribute names and values (hex)
+# file: SCRATCH_MNT/reg
+user.name=0xbabe
+user.name2=0xdeadbeef
+user.name3=0xdeface
+
+*** fetch several attribute names and values (base64)
+# file: SCRATCH_MNT/reg
+user.name=0sur4=
+user.name2=0s3q2+7w==
+user.name3=0s3vrO
+
+*** shrink value of an existing attribute
+# file: SCRATCH_MNT/reg
+user.name=0xbabe
+user.name2=0xdeaf
+user.name3=0xdeface
+
+*** grow value of existing attribute
+# file: SCRATCH_MNT/reg
+user.name=0xbabe
+user.name2=0xdecade
+user.name3=0xdeface
+
+*** set an empty value for second attribute
+# file: SCRATCH_MNT/reg
+user.name2
+
+*** overwrite empty value
+# file: SCRATCH_MNT/reg
+user.name2=0xcafe
+
+*** remove attribute
+SCRATCH_MNT/reg: user.name2: No such attribute or operation not permitted
+*** final list (strings, type=reg, nsp=user)
+# file: SCRATCH_MNT/reg
+user.name=0xbabe
+user.name3=0xdeface
+
+
+=== TYPE dir; NAMESPACE user
+
+*** set/get one initially empty attribute
+# file: SCRATCH_MNT/dir
+user.name
+
+*** overwrite empty, set several new attributes
+*** fetch several attribute names and values (hex)
+# file: SCRATCH_MNT/dir
+user.name=0xbabe
+user.name2=0xdeadbeef
+user.name3=0xdeface
+
+*** fetch several attribute names and values (base64)
+# file: SCRATCH_MNT/dir
+user.name=0sur4=
+user.name2=0s3q2+7w==
+user.name3=0s3vrO
+
+*** shrink value of an existing attribute
+# file: SCRATCH_MNT/dir
+user.name=0xbabe
+user.name2=0xdeaf
+user.name3=0xdeface
+
+*** grow value of existing attribute
+# file: SCRATCH_MNT/dir
+user.name=0xbabe
+user.name2=0xdecade
+user.name3=0xdeface
+
+*** set an empty value for second attribute
+# file: SCRATCH_MNT/dir
+user.name2
+
+*** overwrite empty value
+# file: SCRATCH_MNT/dir
+user.name2=0xcafe
+
+*** remove attribute
+SCRATCH_MNT/dir: user.name2: No such attribute or operation not permitted
+*** final list (strings, type=dir, nsp=user)
+# file: SCRATCH_MNT/dir
+user.name=0xbabe
+user.name3=0xdeface
+
+
+=== TYPE lnk; NAMESPACE user
+
+*** set/get one initially empty attribute
+setfattr: SCRATCH_MNT/lnk: Operation not permitted
+*** overwrite empty, set several new attributes
+setfattr: SCRATCH_MNT/lnk: Operation not permitted
+setfattr: SCRATCH_MNT/lnk: Operation not permitted
+setfattr: SCRATCH_MNT/lnk: Operation not permitted
+*** fetch several attribute names and values (hex)
+*** fetch several attribute names and values (base64)
+*** shrink value of an existing attribute
+setfattr: SCRATCH_MNT/lnk: Operation not permitted
+*** grow value of existing attribute
+setfattr: SCRATCH_MNT/lnk: Operation not permitted
+*** set an empty value for second attribute
+setfattr: SCRATCH_MNT/lnk: Operation not permitted
+SCRATCH_MNT/lnk: user.name2: No such attribute or operation not permitted
+*** overwrite empty value
+setfattr: SCRATCH_MNT/lnk: Operation not permitted
+SCRATCH_MNT/lnk: user.name2: No such attribute or operation not permitted
+*** remove attribute
+setfattr: SCRATCH_MNT/lnk: Operation not permitted
+SCRATCH_MNT/lnk: user.name2: No such attribute or operation not permitted
+*** final list (strings, type=lnk, nsp=user)
+
+=== TYPE dev/b; NAMESPACE user
+
+*** set/get one initially empty attribute
+setfattr: SCRATCH_MNT/dev/b: Operation not permitted
+*** overwrite empty, set several new attributes
+setfattr: SCRATCH_MNT/dev/b: Operation not permitted
+setfattr: SCRATCH_MNT/dev/b: Operation not permitted
+setfattr: SCRATCH_MNT/dev/b: Operation not permitted
+*** fetch several attribute names and values (hex)
+*** fetch several attribute names and values (base64)
+*** shrink value of an existing attribute
+setfattr: SCRATCH_MNT/dev/b: Operation not permitted
+*** grow value of existing attribute
+setfattr: SCRATCH_MNT/dev/b: Operation not permitted
+*** set an empty value for second attribute
+setfattr: SCRATCH_MNT/dev/b: Operation not permitted
+SCRATCH_MNT/dev/b: user.name2: No such attribute or operation not permitted
+*** overwrite empty value
+setfattr: SCRATCH_MNT/dev/b: Operation not permitted
+SCRATCH_MNT/dev/b: user.name2: No such attribute or operation not permitted
+*** remove attribute
+setfattr: SCRATCH_MNT/dev/b: Operation not permitted
+SCRATCH_MNT/dev/b: user.name2: No such attribute or operation not permitted
+*** final list (strings, type=dev/b, nsp=user)
+
+=== TYPE dev/c; NAMESPACE user
+
+*** set/get one initially empty attribute
+setfattr: SCRATCH_MNT/dev/c: Operation not permitted
+*** overwrite empty, set several new attributes
+setfattr: SCRATCH_MNT/dev/c: Operation not permitted
+setfattr: SCRATCH_MNT/dev/c: Operation not permitted
+setfattr: SCRATCH_MNT/dev/c: Operation not permitted
+*** fetch several attribute names and values (hex)
+*** fetch several attribute names and values (base64)
+*** shrink value of an existing attribute
+setfattr: SCRATCH_MNT/dev/c: Operation not permitted
+*** grow value of existing attribute
+setfattr: SCRATCH_MNT/dev/c: Operation not permitted
+*** set an empty value for second attribute
+setfattr: SCRATCH_MNT/dev/c: Operation not permitted
+SCRATCH_MNT/dev/c: user.name2: No such attribute or operation not permitted
+*** overwrite empty value
+setfattr: SCRATCH_MNT/dev/c: Operation not permitted
+SCRATCH_MNT/dev/c: user.name2: No such attribute or operation not permitted
+*** remove attribute
+setfattr: SCRATCH_MNT/dev/c: Operation not permitted
+SCRATCH_MNT/dev/c: user.name2: No such attribute or operation not permitted
+*** final list (strings, type=dev/c, nsp=user)
+
+=== TYPE dev/p; NAMESPACE user
+
+*** set/get one initially empty attribute
+setfattr: SCRATCH_MNT/dev/p: Operation not permitted
+*** overwrite empty, set several new attributes
+setfattr: SCRATCH_MNT/dev/p: Operation not permitted
+setfattr: SCRATCH_MNT/dev/p: Operation not permitted
+setfattr: SCRATCH_MNT/dev/p: Operation not permitted
+*** fetch several attribute names and values (hex)
+*** fetch several attribute names and values (base64)
+*** shrink value of an existing attribute
+setfattr: SCRATCH_MNT/dev/p: Operation not permitted
+*** grow value of existing attribute
+setfattr: SCRATCH_MNT/dev/p: Operation not permitted
+*** set an empty value for second attribute
+setfattr: SCRATCH_MNT/dev/p: Operation not permitted
+SCRATCH_MNT/dev/p: user.name2: No such attribute or operation not permitted
+*** overwrite empty value
+setfattr: SCRATCH_MNT/dev/p: Operation not permitted
+SCRATCH_MNT/dev/p: user.name2: No such attribute or operation not permitted
+*** remove attribute
+setfattr: SCRATCH_MNT/dev/p: Operation not permitted
+SCRATCH_MNT/dev/p: user.name2: No such attribute or operation not permitted
+*** final list (strings, type=dev/p, nsp=user)
+
+=== TYPE reg; NAMESPACE trusted
+
+*** set/get one initially empty attribute
+# file: SCRATCH_MNT/reg
+trusted.name
+
+*** overwrite empty, set several new attributes
+*** fetch several attribute names and values (hex)
+# file: SCRATCH_MNT/reg
+trusted.name=0xbabe
+trusted.name2=0xdeadbeef
+trusted.name3=0xdeface
+
+*** fetch several attribute names and values (base64)
+# file: SCRATCH_MNT/reg
+trusted.name=0sur4=
+trusted.name2=0s3q2+7w==
+trusted.name3=0s3vrO
+
+*** shrink value of an existing attribute
+# file: SCRATCH_MNT/reg
+trusted.name=0xbabe
+trusted.name2=0xdeaf
+trusted.name3=0xdeface
+
+*** grow value of existing attribute
+# file: SCRATCH_MNT/reg
+trusted.name=0xbabe
+trusted.name2=0xdecade
+trusted.name3=0xdeface
+
+*** set an empty value for second attribute
+# file: SCRATCH_MNT/reg
+trusted.name2
+
+*** overwrite empty value
+# file: SCRATCH_MNT/reg
+trusted.name2=0xcafe
+
+*** remove attribute
+SCRATCH_MNT/reg: trusted.name2: No such attribute or operation not permitted
+*** final list (strings, type=reg, nsp=trusted)
+# file: SCRATCH_MNT/reg
+trusted.name=0xbabe
+trusted.name3=0xdeface
+user.name=0xbabe
+user.name3=0xdeface
+
+
+=== TYPE dir; NAMESPACE trusted
+
+*** set/get one initially empty attribute
+# file: SCRATCH_MNT/dir
+trusted.name
+
+*** overwrite empty, set several new attributes
+*** fetch several attribute names and values (hex)
+# file: SCRATCH_MNT/dir
+trusted.name=0xbabe
+trusted.name2=0xdeadbeef
+trusted.name3=0xdeface
+
+*** fetch several attribute names and values (base64)
+# file: SCRATCH_MNT/dir
+trusted.name=0sur4=
+trusted.name2=0s3q2+7w==
+trusted.name3=0s3vrO
+
+*** shrink value of an existing attribute
+# file: SCRATCH_MNT/dir
+trusted.name=0xbabe
+trusted.name2=0xdeaf
+trusted.name3=0xdeface
+
+*** grow value of existing attribute
+# file: SCRATCH_MNT/dir
+trusted.name=0xbabe
+trusted.name2=0xdecade
+trusted.name3=0xdeface
+
+*** set an empty value for second attribute
+# file: SCRATCH_MNT/dir
+trusted.name2
+
+*** overwrite empty value
+# file: SCRATCH_MNT/dir
+trusted.name2=0xcafe
+
+*** remove attribute
+SCRATCH_MNT/dir: trusted.name2: No such attribute or operation not permitted
+*** final list (strings, type=dir, nsp=trusted)
+# file: SCRATCH_MNT/dir
+trusted.name=0xbabe
+trusted.name3=0xdeface
+user.name=0xbabe
+user.name3=0xdeface
+
+
+=== TYPE lnk; NAMESPACE trusted
+
+*** set/get one initially empty attribute
+# file: SCRATCH_MNT/lnk
+trusted.name
+
+*** overwrite empty, set several new attributes
+*** fetch several attribute names and values (hex)
+# file: SCRATCH_MNT/lnk
+trusted.name=0xbabe
+trusted.name2=0xdeadbeef
+trusted.name3=0xdeface
+
+*** fetch several attribute names and values (base64)
+# file: SCRATCH_MNT/lnk
+trusted.name=0sur4=
+trusted.name2=0s3q2+7w==
+trusted.name3=0s3vrO
+
+*** shrink value of an existing attribute
+# file: SCRATCH_MNT/lnk
+trusted.name=0xbabe
+trusted.name2=0xdeaf
+trusted.name3=0xdeface
+
+*** grow value of existing attribute
+# file: SCRATCH_MNT/lnk
+trusted.name=0xbabe
+trusted.name2=0xdecade
+trusted.name3=0xdeface
+
+*** set an empty value for second attribute
+# file: SCRATCH_MNT/lnk
+trusted.name2
+
+*** overwrite empty value
+# file: SCRATCH_MNT/lnk
+trusted.name2=0xcafe
+
+*** remove attribute
+SCRATCH_MNT/lnk: trusted.name2: No such attribute or operation not permitted
+*** final list (strings, type=lnk, nsp=trusted)
+# file: SCRATCH_MNT/lnk
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+
+=== TYPE dev/b; NAMESPACE trusted
+
+*** set/get one initially empty attribute
+# file: SCRATCH_MNT/dev/b
+trusted.name
+
+*** overwrite empty, set several new attributes
+*** fetch several attribute names and values (hex)
+# file: SCRATCH_MNT/dev/b
+trusted.name=0xbabe
+trusted.name2=0xdeadbeef
+trusted.name3=0xdeface
+
+*** fetch several attribute names and values (base64)
+# file: SCRATCH_MNT/dev/b
+trusted.name=0sur4=
+trusted.name2=0s3q2+7w==
+trusted.name3=0s3vrO
+
+*** shrink value of an existing attribute
+# file: SCRATCH_MNT/dev/b
+trusted.name=0xbabe
+trusted.name2=0xdeaf
+trusted.name3=0xdeface
+
+*** grow value of existing attribute
+# file: SCRATCH_MNT/dev/b
+trusted.name=0xbabe
+trusted.name2=0xdecade
+trusted.name3=0xdeface
+
+*** set an empty value for second attribute
+# file: SCRATCH_MNT/dev/b
+trusted.name2
+
+*** overwrite empty value
+# file: SCRATCH_MNT/dev/b
+trusted.name2=0xcafe
+
+*** remove attribute
+SCRATCH_MNT/dev/b: trusted.name2: No such attribute or operation not permitted
+*** final list (strings, type=dev/b, nsp=trusted)
+# file: SCRATCH_MNT/dev/b
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+
+=== TYPE dev/c; NAMESPACE trusted
+
+*** set/get one initially empty attribute
+# file: SCRATCH_MNT/dev/c
+trusted.name
+
+*** overwrite empty, set several new attributes
+*** fetch several attribute names and values (hex)
+# file: SCRATCH_MNT/dev/c
+trusted.name=0xbabe
+trusted.name2=0xdeadbeef
+trusted.name3=0xdeface
+
+*** fetch several attribute names and values (base64)
+# file: SCRATCH_MNT/dev/c
+trusted.name=0sur4=
+trusted.name2=0s3q2+7w==
+trusted.name3=0s3vrO
+
+*** shrink value of an existing attribute
+# file: SCRATCH_MNT/dev/c
+trusted.name=0xbabe
+trusted.name2=0xdeaf
+trusted.name3=0xdeface
+
+*** grow value of existing attribute
+# file: SCRATCH_MNT/dev/c
+trusted.name=0xbabe
+trusted.name2=0xdecade
+trusted.name3=0xdeface
+
+*** set an empty value for second attribute
+# file: SCRATCH_MNT/dev/c
+trusted.name2
+
+*** overwrite empty value
+# file: SCRATCH_MNT/dev/c
+trusted.name2=0xcafe
+
+*** remove attribute
+SCRATCH_MNT/dev/c: trusted.name2: No such attribute or operation not permitted
+*** final list (strings, type=dev/c, nsp=trusted)
+# file: SCRATCH_MNT/dev/c
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+
+=== TYPE dev/p; NAMESPACE trusted
+
+*** set/get one initially empty attribute
+# file: SCRATCH_MNT/dev/p
+trusted.name
+
+*** overwrite empty, set several new attributes
+*** fetch several attribute names and values (hex)
+# file: SCRATCH_MNT/dev/p
+trusted.name=0xbabe
+trusted.name2=0xdeadbeef
+trusted.name3=0xdeface
+
+*** fetch several attribute names and values (base64)
+# file: SCRATCH_MNT/dev/p
+trusted.name=0sur4=
+trusted.name2=0s3q2+7w==
+trusted.name3=0s3vrO
+
+*** shrink value of an existing attribute
+# file: SCRATCH_MNT/dev/p
+trusted.name=0xbabe
+trusted.name2=0xdeaf
+trusted.name3=0xdeface
+
+*** grow value of existing attribute
+# file: SCRATCH_MNT/dev/p
+trusted.name=0xbabe
+trusted.name2=0xdecade
+trusted.name3=0xdeface
+
+*** set an empty value for second attribute
+# file: SCRATCH_MNT/dev/p
+trusted.name2
+
+*** overwrite empty value
+# file: SCRATCH_MNT/dev/p
+trusted.name2=0xcafe
+
+*** remove attribute
+SCRATCH_MNT/dev/p: trusted.name2: No such attribute or operation not permitted
+*** final list (strings, type=dev/p, nsp=trusted)
+# file: SCRATCH_MNT/dev/p
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+
+
+*** extend test bed
+SCRATCH_MNT
+SCRATCH_MNT/descend
+SCRATCH_MNT/descend/and
+SCRATCH_MNT/descend/down
+SCRATCH_MNT/descend/down/here
+SCRATCH_MNT/dev
+SCRATCH_MNT/dev/b
+SCRATCH_MNT/dev/c
+SCRATCH_MNT/dev/p
+SCRATCH_MNT/dir
+SCRATCH_MNT/here
+SCRATCH_MNT/here/up
+SCRATCH_MNT/here/up/ascend
+SCRATCH_MNT/lnk
+SCRATCH_MNT/reg
+
+*** directory descent with us following symlinks
+# file: SCRATCH_MNT/descend
+user.1=0x3233
+user.x=0x797a
+
+# file: SCRATCH_MNT/descend/and/ascend
+trusted.9=0x3837
+trusted.a=0x6263
+
+# file: SCRATCH_MNT/descend/down
+user.1=0x3233
+user.x=0x797a
+
+# file: SCRATCH_MNT/descend/down/here
+user.1=0x3233
+user.x=0x797a
+
+# file: SCRATCH_MNT/dev/b
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+# file: SCRATCH_MNT/dev/c
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+# file: SCRATCH_MNT/dev/p
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+# file: SCRATCH_MNT/dir
+trusted.name=0xbabe
+trusted.name3=0xdeface
+user.name=0xbabe
+user.name3=0xdeface
+
+# file: SCRATCH_MNT/here
+trusted.9=0x3837
+trusted.a=0x6263
+
+# file: SCRATCH_MNT/here/up
+trusted.9=0x3837
+trusted.a=0x6263
+
+# file: SCRATCH_MNT/here/up/ascend
+trusted.9=0x3837
+trusted.a=0x6263
+
+# file: SCRATCH_MNT/lnk
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+# file: SCRATCH_MNT/reg
+trusted.name=0xbabe
+trusted.name3=0xdeface
+user.name=0xbabe
+user.name3=0xdeface
+
+
+*** directory descent without following symlinks
+# file: SCRATCH_MNT/descend
+user.1=0x3233
+user.x=0x797a
+
+# file: SCRATCH_MNT/descend/down
+user.1=0x3233
+user.x=0x797a
+
+# file: SCRATCH_MNT/descend/down/here
+user.1=0x3233
+user.x=0x797a
+
+# file: SCRATCH_MNT/dev/b
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+# file: SCRATCH_MNT/dev/c
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+# file: SCRATCH_MNT/dev/p
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+# file: SCRATCH_MNT/dir
+trusted.name=0xbabe
+trusted.name3=0xdeface
+user.name=0xbabe
+user.name3=0xdeface
+
+# file: SCRATCH_MNT/here
+trusted.9=0x3837
+trusted.a=0x6263
+
+# file: SCRATCH_MNT/here/up
+trusted.9=0x3837
+trusted.a=0x6263
+
+# file: SCRATCH_MNT/here/up/ascend
+trusted.9=0x3837
+trusted.a=0x6263
+
+# file: SCRATCH_MNT/lnk
+trusted.name=0xbabe
+trusted.name3=0xdeface
+
+# file: SCRATCH_MNT/reg
+trusted.name=0xbabe
+trusted.name3=0xdeface
+user.name=0xbabe
+user.name3=0xdeface
+
+
+
+*** backup everything
+*** clear out the scratch device
+*** reset test bed with no extended attributes
+*** create test bed
+SCRATCH_MNT
+SCRATCH_MNT/dev
+SCRATCH_MNT/dev/b
+SCRATCH_MNT/dev/c
+SCRATCH_MNT/dev/p
+SCRATCH_MNT/dir
+SCRATCH_MNT/lnk
+SCRATCH_MNT/reg
+*** extend test bed
+SCRATCH_MNT
+SCRATCH_MNT/descend
+SCRATCH_MNT/descend/and
+SCRATCH_MNT/descend/down
+SCRATCH_MNT/descend/down/here
+SCRATCH_MNT/dev
+SCRATCH_MNT/dev/b
+SCRATCH_MNT/dev/c
+SCRATCH_MNT/dev/p
+SCRATCH_MNT/dir
+SCRATCH_MNT/here
+SCRATCH_MNT/here/up
+SCRATCH_MNT/here/up/ascend
+SCRATCH_MNT/lnk
+SCRATCH_MNT/reg
+*** restore everything
+*** compare before and after backups
+
+*** unmount
diff --git a/tests/generic/068 b/tests/generic/068
new file mode 100755 (executable)
index 0000000..4f10a54
--- /dev/null
@@ -0,0 +1,137 @@
+#! /bin/bash
+# FSQA Test No. 068
+#
+# Test case to reproduce xfs_freeze hang under filsystem load.
+# The fail case for this test is a hang on an xfs_freeze.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2005 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+
+ITERATIONS=10
+
+_cleanup()
+{
+    cd /
+    _cleanup_testdir
+
+    trap 0 1 2 3 15
+    exit $status
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux IRIX
+
+_require_scratch
+_require_freeze
+
+echo "*** init FS"
+
+rm -f $seq.full
+umount $SCRATCH_DEV >/dev/null 2>&1
+echo "*** MKFS ***"                         >>$seq.full
+echo ""                                     >>$seq.full
+_scratch_mkfs                               >>$seq.full 2>&1 \
+    || _fail "mkfs failed"
+_scratch_mount                              >>$seq.full 2>&1 \
+    || _fail "mount failed"
+
+touch $tmp.running
+
+
+# start fsstress loop in a background block
+{
+    STRESS_DIR="$SCRATCH_MNT/fsstress_test_dir"
+    mkdir "$STRESS_DIR"
+
+    procs=2
+    nops=200
+    while [ -f "$tmp.running" ]
+      do
+      # We do both read & write IO - not only is this more realistic,
+      # but it also potentially tests atime updates
+      FSSTRESS_ARGS=`_scale_fsstress_args -d $STRESS_DIR -p $procs -n $nops $FSSTRESS_AVOID`
+      $FSSTRESS_PROG $FSSTRESS_ARGS > /dev/null 2>&1
+    done
+
+    rm -r $STRESS_DIR/*
+    rmdir $STRESS_DIR
+} &
+
+# start fstest -m loop in a background block; this gets us mmap coverage
+{
+    FSTEST_DIR="$SCRATCH_MNT/fstest_test_dir"
+    mkdir "$FSTEST_DIR"
+
+    procs=2
+    while [ -f "$tmp.running" ]
+      do
+      src/fstest -m -p $FSTEST_DIR  -n $procs -f 4 > /dev/null 2>&1
+    done
+
+    rm -rf $FSTEST_DIR/*
+    rmdir $FSTEST_DIR
+} &
+
+i=0
+let ITERATIONS=$ITERATIONS-1
+
+echo | tee -a $seq.full
+while [ $i -le $ITERATIONS ]
+do
+        echo "*** iteration: $i" | tee -a $seq.full
+       echo "*** freezing \$SCRATCH_MNT" | tee -a $seq.full
+       xfs_freeze -f "$SCRATCH_MNT" | tee -a $seq.full
+       [ $? != 0 ] && echo xfs_freeze -f "$SCRATCH_MNT" failed | \
+           tee -a $seq.full
+       sleep 2
+
+       echo "*** thawing  \$SCRATCH_MNT" | tee -a $seq.full
+       xfs_freeze -u "$SCRATCH_MNT" | tee -a $seq.full
+       [ $? != 0 ] && echo xfs_freeze -u "$SCRATCH_MNT" failed | \
+           tee -a $seq.full
+       sleep 2
+
+       echo  | tee -a $seq.full
+       let i=$i+1
+done
+
+# stop fsstress iterations
+rm $tmp.running
+
+# wait for fsstresses to finish
+wait
+
+_check_scratch_fs
+
+exit 1
diff --git a/tests/generic/068.out b/tests/generic/068.out
new file mode 100644 (file)
index 0000000..363d0e9
--- /dev/null
@@ -0,0 +1,43 @@
+QA output created by 068
+*** init FS
+
+*** iteration: 0
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
+*** iteration: 1
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
+*** iteration: 2
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
+*** iteration: 3
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
+*** iteration: 4
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
+*** iteration: 5
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
+*** iteration: 6
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
+*** iteration: 7
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
+*** iteration: 8
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
+*** iteration: 9
+*** freezing $SCRATCH_MNT
+*** thawing  $SCRATCH_MNT
+
diff --git a/tests/generic/069 b/tests/generic/069
new file mode 100755 (executable)
index 0000000..3451715
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/bash
+# FS QA Test No. 069
+#
+# Test out writes with O_APPEND flag sets.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2002 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_require_scratch
+rm -f $seq.full
+
+umount $SCRATCH_DEV >/dev/null 2>&1
+
+echo "*** mkfs"
+_scratch_mkfs >/dev/null 2>&1 || _fail "mkfs failed"
+
+echo "*** mount FS"
+_scratch_mount >/dev/null || _fail "mount failed"
+
+cd $SCRATCH_MNT
+
+sizes="1 20 300 40000 3000000 12345"
+for size in $sizes ; do
+       $here/src/append_writer $size &
+       echo $! $size >> pids
+done
+
+cd $here
+
+wait
+ls -lh $SCRATCH_MNT >> $seq.full
+echo "*** PIDs file" >> $seq.full
+cat $SCRATCH_MNT/pids >> $seq.full
+
+cat $SCRATCH_MNT/pids | while read pid size
+do
+       echo "*** checking file with $size integers"
+       echo checking pid=$pid size=$size >> $seq.full
+       $here/src/append_reader $SCRATCH_MNT/testfile.$pid
+       status=$?
+       [ $status -ne 0 ] && \
+               echo "maybe corrupt O_APPEND to $SCRATCH_MOUNT/testfile.$pid!"
+       echo status: $status >> $seq.full
+done
+
+# success, all done
+exit
diff --git a/tests/generic/069.out b/tests/generic/069.out
new file mode 100644 (file)
index 0000000..0d7b23c
--- /dev/null
@@ -0,0 +1,9 @@
+QA output created by 069
+*** mkfs
+*** mount FS
+*** checking file with 1 integers
+*** checking file with 20 integers
+*** checking file with 300 integers
+*** checking file with 40000 integers
+*** checking file with 3000000 integers
+*** checking file with 12345 integers
diff --git a/tests/generic/070 b/tests/generic/070
new file mode 100755 (executable)
index 0000000..02fe142
--- /dev/null
@@ -0,0 +1,67 @@
+#! /bin/bash
+# FS QA Test No. 070
+#
+# fsstress incarnation testing extended attributes writes
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2001 Silicon Graphics, 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`
+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.*
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_require_attrs
+
+_setup_testdir
+
+FSSTRESS_ARGS=`_scale_fsstress_args \
+       -d $testdir/fsstress \
+       -f allocsp=0 \
+       -f freesp=0 \
+       -f bulkstat=0 \
+       -f bulkstat1=0 \
+       -f resvsp=0 \
+       -f unresvsp=0 \
+       -f attr_set=100 \
+       -f attr_remove=100 \
+        -p 1 -n 10000 -S c`
+$FSSTRESS_PROG $FSSTRESS_ARGS >$seq.full 2>&1
+
+status=$?
+exit
diff --git a/tests/generic/070.out b/tests/generic/070.out
new file mode 100644 (file)
index 0000000..4875ffb
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 070
diff --git a/tests/generic/074 b/tests/generic/074
new file mode 100755 (executable)
index 0000000..0e5e820
--- /dev/null
@@ -0,0 +1,185 @@
+#! /bin/bash
+# FS QA Test No. 074
+#
+# fstest
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2003 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -rf $testdir/fstest.$$.* $tmp.*
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_do_test()
+{
+    _n="$1"
+    _param="$2"
+
+    out=$testdir/fstest.$$.$_n
+    rm -rf $out
+    if ! mkdir $out
+    then
+        echo "    failed to mkdir $out"
+        status=1
+        exit
+    fi
+
+    _filter_param=`echo "$_param" | sed\
+       -e 's/-n [0-9][0-9]*/-n children/' \
+       -e 's/-l [0-9][0-9]*/-l loops/' \
+       -e 's/-f [0-9][0-9]*/-f files/'`
+    
+    echo ""
+    echo "-----------------------------------------------"
+    echo "fstest.$_n : $_filter_param"
+    echo "-----------------------------------------------"
+    if ! $here/src/fstest $_param -p $out >>$seq.full
+    then
+        echo "    fstest ($_param) returned $? - see $seq.full"
+        status=1
+       exit
+    fi
+
+    _check_test_fs
+}
+
+_usage()
+{
+    echo "$0: [-f files] [-l loops] [-n children]"
+}
+
+_process_args()
+{
+    while getopts "f:l:n:?" c $@
+    do
+        case $c
+        in
+            f)
+                numfiles=$OPTARG
+               param_type="$param_type, overidde -f"
+                ;;
+            l)
+                numloops=$OPTARG
+               param_type="$param_type, overidde -l"
+                ;;
+            n)
+                numchildren=$OPTARG
+               param_type="$param_type, overidde -n"
+                ;;
+           ?)
+               _usage
+               exit    
+               ;;
+       esac
+    done
+}
+
+
+# real QA test starts here
+rm -f $here/$seq.full
+
+_supported_fs generic
+_supported_os IRIX Linux
+
+#
+# set params
+# These params can take a while on different CPUs/OSs
+# so we set them differently for different machines
+#
+if [ $HOSTOS == "IRIX" ]; then 
+    if uname -R | grep -iq debug; then 
+        # e.g. getting around 37secs for 1,1,1 on IP30 debug
+       numchildren=2
+       numloops=1
+       numfiles=2
+        param_type="IRIX debug"
+    else
+        # getting around 1 sec 1,1,1 - 10secs 1,10,1 on IP30 nondebug
+       numloops=2
+       numfiles=3
+       numchildren=3
+        param_type="IRIX nondebug"
+    fi
+elif [ $HOSTOS == "Linux" ]; then
+    if uname -a | grep -q SMP; then
+        numloops=10
+        numfiles=5
+        numchildren=3
+        param_type="Linux SMP"
+    else
+        numloops=2
+        numfiles=3
+        numchildren=3
+        param_type="Linux UP"
+    fi
+else
+    numloops=1
+    numfiles=1
+    numchildren=1
+    param_type="Default"
+fi
+
+# can override the params here
+_process_args "$@"
+
+echo "Params are for $param_type" >>$seq.full
+echo "Params: n = $numchildren l = $numloops f = $numfiles" >>$seq.full
+
+_setup_testdir
+
+_check_test_fs
+
+# Options:
+# -F                    generate files with holes  (default=no)
+# -n num_children       set number of child processes (default=1)
+# -f num_files          set number of files (default=1)
+# -s file_size          set file sizes (default=1MiB)
+# -b block_size         set block (IO) size (default=1024)
+# -l loops              set loop count (default=100)
+# -m                    use mmap (default=no)
+# -S                    use synchronous IO (default=no)
+# -P                    preallocate space (default=no)
+
+size10=`expr 10 \* 1024 \* 1024`       # 10 megabytes
+size30=`expr 30 \* 1024 \* 1024`       # 30 megabytes
+
+_do_test 0 "-l $numloops"
+
+_do_test 1 "-l $numloops -s $size10 -b 8192 -m"
+
+_do_test 2 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512"
+
+_do_test 3 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512 -m"
+
+_do_test 4 "-n $numchildren -F -l $numloops -f $numfiles -s $size10 -b 512 -mS"
diff --git a/tests/generic/074.out b/tests/generic/074.out
new file mode 100644 (file)
index 0000000..1d67810
--- /dev/null
@@ -0,0 +1,21 @@
+QA output created by 074
+
+-----------------------------------------------
+fstest.0 : -l loops
+-----------------------------------------------
+
+-----------------------------------------------
+fstest.1 : -l loops -s 10485760 -b 8192 -m
+-----------------------------------------------
+
+-----------------------------------------------
+fstest.2 : -n children -F -l loops -f files -s 31457280 -b 512
+-----------------------------------------------
+
+-----------------------------------------------
+fstest.3 : -n children -F -l loops -f files -s 31457280 -b 512 -m
+-----------------------------------------------
+
+-----------------------------------------------
+fstest.4 : -n children -F -l loops -f files -s 10485760 -b 512 -mS
+-----------------------------------------------
diff --git a/tests/generic/075 b/tests/generic/075
new file mode 100755 (executable)
index 0000000..de581b6
--- /dev/null
@@ -0,0 +1,161 @@
+#! /bin/bash
+# FS QA Test No. 075
+#
+# fsx (non-AIO variant)
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2003 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -rf $testdir/fsx.* $tmp.*
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_do_test()
+{
+    _n="$1"
+    _param="$2"
+
+    out=$testdir/fsx
+    rm -rf $out
+    if ! mkdir $out
+    then
+       echo "    failed to mkdir $out"
+       status=1
+       exit
+    fi
+
+    _filter_param=`echo "$_param" | sed\
+       -e 's/-N [0-9][0-9]*/-N numops/' \
+       -e 's/-l [0-9][0-9]*/-l filelen/'`
+
+    echo ""
+    echo "-----------------------------------------------"
+    echo "fsx.$_n : $_filter_param"
+    echo "-----------------------------------------------"
+
+    if [ "$FSTYP" != "xfs" ]
+    then
+       if [ "$_n" = "1" -o "$_n" = "3" ]
+       then
+           # HACK: only xfs handles preallocation (-x) so just skip this test
+           return
+       fi
+    fi
+
+    # This cd and use of -P gets full debug on $here (not TEST_DEV)
+    cd $out
+    if ! $here/ltp/fsx $_param -P $here $seq.$_n &>/dev/null
+    then
+       echo "    fsx ($_param) failed, $? - compare $seq.$_n.{good,bad,fsxlog}"
+       mv $out/$seq.$_n $here/$seq.$_n.full
+       od -xAx $here/$seq.$_n.full > $here/$seq.$_n.bad
+       od -xAx $here/$seq.$_n.fsxgood > $here/$seq.$_n.good
+       status=1
+       exit
+    fi
+
+    cd $here
+    _check_test_fs
+}
+
+_usage()
+{
+    echo "$0: [-l filelen] [-n numops1] [-N numops2]"
+}
+
+_process_args()
+{
+    while getopts "l:n:N:?" c $@
+    do
+        case $c
+        in
+            l)
+                filelen=$OPTARG
+               param_type="$param_type, overidde -l"
+                ;;
+            N)
+                numops2=$OPTARG
+               param_type="$param_type, overidde -N"
+                ;;
+            n)
+                numops1=$OPTARG
+               param_type="$param_type, overidde -n"
+                ;;
+           ?)
+               _usage
+               exit    
+               ;;
+       esac
+    done
+}
+
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+size10=`expr 10 \* 1024 \* 1024`       # 10 megabytes
+filelen=$size10
+numops1=1000
+numops2=10000
+
+# can override the params here
+_process_args "$@"
+
+echo "Params are for $param_type" >>$seq.full
+echo "Params: n = $numops1 N = $numops2 l = $filelen" >>$seq.full
+
+_setup_testdir
+
+rm -f $here/$seq.full
+echo "brevity is wit..."
+
+_check_test_fs
+
+# Options:
+# -d: debug output for all operations
+# -l flen: the upper bound on file size (default 262144)
+# -o oplen: the upper bound on operation size
+# -N numops: total # operations to do (default infinity)
+# -P: save .fsxlog and .fsxgood files in dirpath (default ./)
+# -S seed: for random # generator (default 1) 0 gets timestamp
+# -x: pre-allocate file space, exercising unwritten extents
+
+_do_test 0 "-d -N $numops1 -S 0"
+_do_test 1 "-d -N $numops1 -S 0 -x"
+_do_test 2 "-d -N $numops2 -l $filelen -S 0"
+_do_test 3 "-d -N $numops2 -l $filelen -S 0 -x"
+
+rm -f $seq.*.fsx{good,log}
+exit 0
diff --git a/tests/generic/075.out b/tests/generic/075.out
new file mode 100644 (file)
index 0000000..1f81cdf
--- /dev/null
@@ -0,0 +1,18 @@
+QA output created by 075
+brevity is wit...
+
+-----------------------------------------------
+fsx.0 : -d -N numops -S 0
+-----------------------------------------------
+
+-----------------------------------------------
+fsx.1 : -d -N numops -S 0 -x
+-----------------------------------------------
+
+-----------------------------------------------
+fsx.2 : -d -N numops -l filelen -S 0
+-----------------------------------------------
+
+-----------------------------------------------
+fsx.3 : -d -N numops -l filelen -S 0 -x
+-----------------------------------------------
diff --git a/tests/generic/076 b/tests/generic/076
new file mode 100755 (executable)
index 0000000..11a0792
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/bash
+# FS QA Test No. 076
+#
+# Test blockdev reads in parallel with filesystem reads/writes
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1
+
+_lets_get_pidst()
+{
+       if [ -n "$pid" ]; then
+               kill -TERM $pid 2>/dev/null
+               pid=""
+               wait 2>/dev/null
+       fi
+}
+
+_cleanup()
+{
+       echo "*** unmount"
+       umount $SCRATCH_MNT 2>/dev/null
+       _lets_get_pidst
+}
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_require_scratch
+
+echo "*** init fs"
+
+rm -f $seq.full
+umount $SCRATCH_DEV >/dev/null 2>&1
+echo "*** MKFS ***"                         >>$seq.full
+echo ""                                     >>$seq.full
+_scratch_mkfs                               >>$seq.full 2>&1 \
+       || _fail "mkfs failed"
+_scratch_mount                              >>$seq.full 2>&1 \
+       || _fail "mount failed"
+
+echo "*** test concurrent block/fs access"
+
+cat $SCRATCH_DEV >/dev/null &
+pid=$!
+
+FSSTRESS_ARGS=`_scale_fsstress_args -p 2 -n 2000 $FSSTRESS_AVOID`
+echo "run fsstress with args: $FSSTRESS_ARGS" >>$seq.full
+$FSSTRESS_PROG $FSSTRESS_ARGS >>$seq.full
+_lets_get_pidst
+_check_scratch_fs
+
+echo "*** done"
+status=0
+exit
diff --git a/tests/generic/076.out b/tests/generic/076.out
new file mode 100644 (file)
index 0000000..54a8f70
--- /dev/null
@@ -0,0 +1,5 @@
+QA output created by 076
+*** init fs
+*** test concurrent block/fs access
+*** done
+*** unmount
diff --git a/tests/generic/077 b/tests/generic/077
new file mode 100755 (executable)
index 0000000..2b86a37
--- /dev/null
@@ -0,0 +1,84 @@
+#! /bin/bash
+# FS QA Test No. 077
+#
+# Check use of ACLs (extended attributes) on a full filesystem
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2003 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1
+# Something w/ enough data to fill 50M of fs...
+filler=/lib/modules/
+
+_cleanup()
+{
+       cd /
+       echo "*** unmount"
+       umount $SCRATCH_MNT 2>/dev/null
+}
+trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+[ ! -d $filler ] && _notrun "No directory to source files from"
+
+_require_attrs
+_require_acls
+_require_user
+
+echo "*** create filesystem"
+
+rm -f $seq.full
+umount $SCRATCH_DEV >/dev/null 2>&1
+echo "*** MKFS ***"                         >>$seq.full
+echo ""                                     >>$seq.full
+SIZE=`expr 50 \* 1024 \* 1024`
+_scratch_mkfs_sized $SIZE                   >>$seq.full 2>&1 \
+       || _fail "mkfs failed"
+_scratch_mount                              >>$seq.full 2>&1 \
+       || _fail "mount failed"
+mkdir $SCRATCH_MNT/subdir
+
+echo "*** set default ACL"
+setfacl -R -dm u:fsgqa:rwx,g::rwx,o::r-x,m::rwx $SCRATCH_MNT/subdir
+
+echo "*** populate filesystem, pass #1" | tee -a $seq.full
+cp -rf $filler $SCRATCH_MNT/subdir >$seq.full 2>&1
+
+echo "*** populate filesystem, pass #2" | tee -a $seq.full
+cp -rf $filler $SCRATCH_MNT/subdir >$seq.full 2>&1
+
+_check_scratch_fs
+
+echo "*** all done"
+rm -f $seq.full
+status=0
+exit
diff --git a/tests/generic/077.out b/tests/generic/077.out
new file mode 100644 (file)
index 0000000..eae7226
--- /dev/null
@@ -0,0 +1,7 @@
+QA output created by 077
+*** create filesystem
+*** set default ACL
+*** populate filesystem, pass #1
+*** populate filesystem, pass #2
+*** all done
+*** unmount
diff --git a/tests/generic/079 b/tests/generic/079
new file mode 100755 (executable)
index 0000000..048b220
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/bash
+# FS QA Test No. 079
+#
+# Run the t_immutable test program for immutable/append-only files.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2003 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+timmutable=$here/src/t_immutable
+tmp=/tmp/$$
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    echo "*** cleaning up"
+    $timmutable -r $SCRATCH_MNT/$seq
+    umount $SCRATCH_MNT
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+_supported_fs generic
+_supported_os Linux
+
+_require_attrs
+_require_scratch
+
+[ -x $timmutable ] || _notrun "t_immutable was not built for this platform"
+
+# real QA test starts here
+_scratch_mkfs >/dev/null 2>&1 || _fail "mkfs failed"
+_scratch_mount || _fail "mount failed"
+
+echo "*** starting up"
+$timmutable -c $SCRATCH_MNT/$seq >$tmp.out 2>&1
+if grep -q 'Operation not supported' $tmp.out; then
+    rm -f $tmp.out
+    _notrun "Setting immutable/append flag not supported"
+fi
+cat $tmp.out
+rm -f $tmp.out
+status=$?
+exit
diff --git a/tests/generic/079.out b/tests/generic/079.out
new file mode 100644 (file)
index 0000000..b3daaa6
--- /dev/null
@@ -0,0 +1,7 @@
+QA output created by 079
+*** starting up
+testing immutable...PASS.
+testing append-only...PASS.
+testing immutable as non-root...PASS.
+testing append-only as non-root...PASS.
+*** cleaning up
diff --git a/tests/generic/083 b/tests/generic/083
new file mode 100755 (executable)
index 0000000..1a5913a
--- /dev/null
@@ -0,0 +1,101 @@
+#! /bin/bash
+# FS QA Test No. 083
+#
+# Exercise filesystem full behaviour - run numerous fsstress
+# processes in write mode on a small filesystem.  NB: delayed
+# allocate flushing is quite deadlock prone at the filesystem
+# full boundary due to the fact that we will retry allocation
+# several times after flushing, before giving back ENOSPC.
+#
+# Note that this test will intentionally cause console msgs of form:
+#     dksc0d1s4: Process [fsstress] ran out of disk space
+#     dksc0d1s4: Process [fsstress] ran out of disk space
+#     dksc0d1s4: Process [fsstress] ran out of disk space
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2003 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1
+
+_cleanup()
+{
+       echo "*** unmount"
+       umount $SCRATCH_MNT 2>/dev/null
+       rm -f $tmp.*
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_require_scratch
+_require_no_large_scratch_dev
+
+rm -f $seq.full
+
+workout()
+{
+       fsz=$1
+       ags=$2
+       procs=$3
+       nops=$4
+
+       umount $SCRATCH_DEV >/dev/null 2>&1
+       echo "*** mkfs -dsize=$fsz,agcount=$ags"    >>$seq.full
+       echo ""                                     >>$seq.full
+       if [ $FSTYP = xfs ]
+       then
+               _scratch_mkfs_xfs -dsize=$fsz,agcount=$ags  >>$seq.full 2>&1 \
+                       || _fail "size=$fsz,agcount=$ags mkfs failed"
+       else
+               _scratch_mkfs_sized $fsz >>$seq.full 2>&1 \
+                       || _fail "size=$fsz mkfs failed"
+       fi
+       _scratch_mount                              >>$seq.full 2>&1 \
+               || _fail "mount failed"
+
+       # -w ensures that the only ops are ones which cause write I/O
+       FSSTRESS_ARGS=`_scale_fsstress_args -d $SCRATCH_MNT -w -p $procs -n $nops $FSSTRESS_AVOID`
+       $FSSTRESS_PROG $FSSTRESS_ARGS >>$seq.full
+       _check_scratch_fs
+}
+
+echo "*** test out-of-space handling for random write operations"
+
+filesize=`expr 100 \* 1024 \* 1024`
+agcount=6
+numprocs=15
+numops=1500
+
+workout $filesize $agcount $numprocs $numops
+
+echo "*** done"
+status=0
+exit
diff --git a/tests/generic/083.out b/tests/generic/083.out
new file mode 100644 (file)
index 0000000..025afe3
--- /dev/null
@@ -0,0 +1,4 @@
+QA output created by 083
+*** test out-of-space handling for random write operations
+*** done
+*** unmount
diff --git a/tests/generic/088 b/tests/generic/088
new file mode 100755 (executable)
index 0000000..b6266ef
--- /dev/null
@@ -0,0 +1,55 @@
+#! /bin/bash
+# FS QA Test No. 088
+#
+# test out CAP_DAC_OVERRIDE and CAP_DAC_SEARCH code in 
+# xfs_iaccess(ip,mode,cr)
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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`
+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
+
+_filter()
+{
+    _filter_test_dir | sed -e '/----------/d'
+}
+
+# link correct .out file
+_link_out_file $seq.out
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+path=$TEST_DIR/t_access
+src/t_access_root $path | tee $seq.full | _filter
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/088.out.irix b/tests/generic/088.out.irix
new file mode 100644 (file)
index 0000000..f31ecf9
--- /dev/null
@@ -0,0 +1,9 @@
+QA output created by 088
+access(TEST_DIR/t_access, 0) returns 0
+access(TEST_DIR/t_access, R_OK) returns 0
+access(TEST_DIR/t_access, W_OK) returns 0
+access(TEST_DIR/t_access, X_OK) returns 0
+access(TEST_DIR/t_access, R_OK | W_OK) returns 0
+access(TEST_DIR/t_access, R_OK | X_OK) returns 0
+access(TEST_DIR/t_access, W_OK | X_OK) returns 0
+access(TEST_DIR/t_access, R_OK | W_OK | X_OK) returns 0
diff --git a/tests/generic/088.out.linux b/tests/generic/088.out.linux
new file mode 100644 (file)
index 0000000..317c13f
--- /dev/null
@@ -0,0 +1,9 @@
+QA output created by 088
+access(TEST_DIR/t_access, 0) returns 0
+access(TEST_DIR/t_access, R_OK) returns 0
+access(TEST_DIR/t_access, W_OK) returns 0
+access(TEST_DIR/t_access, X_OK) returns -1
+access(TEST_DIR/t_access, R_OK | W_OK) returns 0
+access(TEST_DIR/t_access, R_OK | X_OK) returns -1
+access(TEST_DIR/t_access, W_OK | X_OK) returns -1
+access(TEST_DIR/t_access, R_OK | W_OK | X_OK) returns -1
diff --git a/tests/generic/089 b/tests/generic/089
new file mode 100755 (executable)
index 0000000..2653183
--- /dev/null
@@ -0,0 +1,91 @@
+#! /bin/bash
+# FS QA Test No. 089
+#
+# Emulate the way Linux mount manipulates /etc/mtab to attempt to
+# reproduce a possible bug in rename (see src/t_mtab.c).
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+mtab_output=$TEST_DIR/mtab_output
+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
+
+addentries()
+{
+       count=$1
+       pattern="%0$2d"
+
+       while [ $count -gt 0 ]; do
+               touch `printf $pattern $count`
+               let count=$count-1
+       done
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+rm -f $seq.full
+[ "X$TEST_DIR" = "X" ] && exit 1
+cd $TEST_DIR
+rm -fr test
+mkdir test || exit 1
+cd $TEST_DIR/test
+mount > t_mtab
+
+mtab()
+{
+       rm -f $mtab_output
+       $here/src/t_mtab 50 $mtab_output &
+       $here/src/t_mtab 50 $mtab_output &
+       $here/src/t_mtab 50 $mtab_output &
+       wait
+       cat $mtab_output
+
+       $here/src/t_mtab 10000
+
+       echo directory entries:
+       ls | grep mtab
+       echo directory entries >> $here/$seq.full
+       ls -li >> $here/$seq.full
+}
+
+# directory with only a few entries
+mtab
+
+# directory with a hundred more entries, each 4chars wide
+addentries 100 4
+mtab
+
+# directory with a thousand more entries, each 8chars wide
+addentries 1000 8
+mtab
+
+status=0
+exit
diff --git a/tests/generic/089.out b/tests/generic/089.out
new file mode 100644 (file)
index 0000000..b61a70b
--- /dev/null
@@ -0,0 +1,19 @@
+QA output created by 089
+completed 50 iterations
+completed 50 iterations
+completed 50 iterations
+completed 10000 iterations
+directory entries:
+t_mtab
+completed 50 iterations
+completed 50 iterations
+completed 50 iterations
+completed 10000 iterations
+directory entries:
+t_mtab
+completed 50 iterations
+completed 50 iterations
+completed 50 iterations
+completed 10000 iterations
+directory entries:
+t_mtab
diff --git a/tests/generic/091 b/tests/generic/091
new file mode 100755 (executable)
index 0000000..ad82b8e
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/bash
+# FS QA Test No. 091
+#
+# fsx exercising direct IO -- sub-block sizes and concurrent buffered IO
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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`
+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
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+rm -f $seq.full
+
+run_fsx()
+{
+       echo fsx $@ | tee -a $seq.full
+       args=`echo $@ | sed -e "s/ BSIZE / $bsize /g" -e "s/ PSIZE / $psize /g"`
+       rm -f $TEST_DIR/junk
+       $here/ltp/fsx $args $TEST_DIR/junk >>$seq.full 2>&1
+       if [ $? -ne 0 ]; then
+               cat $seq.full
+               exit 1
+       fi
+}
+
+psize=`$here/src/feature -s`
+bsize=`blockdev --getss $TEST_DEV`
+kernel=`uname -r  | sed -e 's/\(2\..\).*/\1/'`
+
+# 2.4 Linux kernels support bsize aligned direct I/O only
+[ "$HOSTOS" = "Linux" -a "$kernel" = "2.4" ] && bsize=$psize
+
+# fsx usage:
+# 
+# -N numops: total # operations to do 
+# -l flen: the upper bound on file size 
+# -o oplen: the upper bound on operation size (64k default)
+# -r readbdy: $psize would make reads page aligned (on i386)
+# -t truncbdy: $psize would make truncates page aligned (on i386)
+# -w writebdy: $psize would make writes page aligned (on i386)
+# 
+# -Z: O_DIRECT (use -R, -W, -r and -w too)
+# -R: mapped read operations DISabled
+# -W: mapped write operations DISabled
+
+#run_fsx -N 10000            -l 500000 -r $psize -t $psize -w $psize -Z -R -W
+ run_fsx -N 10000            -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+ run_fsx -N 10000  -o 8192   -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+#run_fsx -N 10000  -o 16384  -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -R -W
+ run_fsx -N 10000  -o 32768  -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+#run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -R -W
+ run_fsx -N 10000  -o 8192   -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+#run_fsx -N 10000  -o 16384  -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -R -W
+ run_fsx -N 10000  -o 32768  -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+#run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -W
+ run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W
+
+status=0
+exit
diff --git a/tests/generic/091.out b/tests/generic/091.out
new file mode 100644 (file)
index 0000000..31bd25d
--- /dev/null
@@ -0,0 +1,7 @@
+QA output created by 091
+fsx -N 10000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+fsx -N 10000 -o 32768 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+fsx -N 10000 -o 32768 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
+fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W
diff --git a/tests/generic/093 b/tests/generic/093
new file mode 100755 (executable)
index 0000000..881a833
--- /dev/null
@@ -0,0 +1,162 @@
+#! /bin/bash
+# FS QA Test No. 093
+#
+# Test out for IRIX the removal of file capabilities when
+# writing to the file (when it doesn't have CAP_FSETID & CAP_SETFCAP)
+# i.e. not root.
+# Test out fix for pv#901019
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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`
+
+here=`pwd`
+tmp=/tmp/$$
+runas=$here/src/runas
+status=1       # FAILure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+_cleanup()
+{
+    [ -n "$testdir" ] && rm -f $file
+    _cleanup_testdir
+}
+
+_testfilter()
+{
+    sed -e "s#$testdir#TESTDIR#g"
+}
+
+_filefilter()
+{
+    sed -e "s#$tmp##" -e "s#$file#file#"
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX
+
+_require_attrs
+
+[ -x $runas ] || _notrun "$runas executable not found"
+
+rm -f $seq.full
+
+_setup_testdir
+_need_to_be_root
+
+echo "QA output created by $seq"
+echo ""
+file=$testdir/$seq.file
+
+user=`grep ':all=:all=' /etc/capability | tail -1 | $AWK_PROG -F: '{print $1}'`
+uid=`_cat_passwd | grep $user | $AWK_PROG -F: '{print $3}'`
+
+cat >$tmp.append <<EOF
+#!/bin/bash
+echo data >>$file
+EOF
+chmod ugo+x $tmp.append
+
+echo "touch file"
+touch $file
+chmod ugo+w $file 
+
+echo "chcap on file"
+chcap CAP_CHOWN+p $file
+
+echo "ls -P on file"
+ls -P $file | _testfilter
+
+echo "append to file as root"
+$tmp.append
+
+echo "ls -P on file"
+ls -P $file | _testfilter
+
+echo "cat file"
+echo "----"
+cat $file
+echo "----"
+
+echo "append to file as user without caps"
+# in particular user doesn't have FSETID or SETFCAP
+$runas -u $uid $tmp.append
+
+echo "cat file"
+echo "----"
+cat $file
+echo "----"
+
+echo "ls -P on file"
+ls -P $file | _testfilter
+
+# try again when it doesn't have the EA
+echo "append to file as user without caps a 2nd time"
+$runas -u $uid $tmp.append
+
+echo "ls -P on file"
+ls -P $file | _testfilter
+
+echo "cat file"
+echo "----"
+cat $file
+echo "----"
+
+echo "only let root write to file"
+chmod 700 $file
+chown root $file 
+
+echo "as non-root try to append to file"
+$runas -u $uid $tmp.append 2>&1 | _filefilter
+
+echo "restore perms on file"
+chmod 777 $file
+
+echo "set a root EA on file"
+${ATTR_PROG} -R -s test -V testval $file | _filefilter
+
+echo "list EA on file"
+${ATTR_PROG} -R -l $file | _filefilter
+
+echo "as non-root try to append to file"
+$runas -u $uid $tmp.append 2>&1 | _filefilter
+
+echo "list EA on file"
+${ATTR_PROG} -R -l $file | _filefilter
+
+chown $uid $file
+chmod ugo+w $testdir
+echo "as non-root call writemod"
+$runas -u $uid src/writemod $file 2>&1 | _filefilter
+
+echo "cat file"
+echo "----"
+cat $file
+echo "----"
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/093.out b/tests/generic/093.out
new file mode 100644 (file)
index 0000000..0113a48
Binary files /dev/null and b/tests/generic/093.out differ
diff --git a/tests/generic/097 b/tests/generic/097
new file mode 100755 (executable)
index 0000000..d3174e4
--- /dev/null
@@ -0,0 +1,257 @@
+#! /bin/bash
+# FS QA Test No. 097. Modifed from UDFQA test 033.
+#
+# simple attr tests for EAs:
+#  - set
+#  - get
+#  - list
+#  - remove
+# Basic testing.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+TARGET_DIR=
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    rm -f $tmp.*
+    cd $TARGET_DIR
+    rm -f foo
+}
+
+_umount_and_mount()
+{
+    cd /
+    umount $TARGET_DIR
+    if [ "$FSTYP" == "xfs" ]; then
+       _test_mount
+    else
+       _scratch_mount
+    fi
+    
+    cd $TARGET_DIR
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# link correct .out file
+# This is done bacause udf and xfs print attrs in different orders.
+rm -rf $seq.out
+if [ "$FSTYP" == "xfs" ]; then
+    ln -s $seq.out.xfs $seq.out
+else
+    ln -s $seq.out.udf $seq.out
+fi
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX
+
+_require_scratch
+_require_attrs
+
+_setup_testdir 
+
+TARGET_DIR=$SCRATCH_MNT
+[ "$FSTYP" == "xfs" ] && TARGET_DIR=$TEST_DIR
+cd $TARGET_DIR
+
+echo "create file foo"
+rm -f foo 
+touch foo
+
+echo "should be no EAs for foo:"
+${ATTR_PROG} -l foo
+
+echo "set EA <noise,woof>:"
+${ATTR_PROG} -s noise -V woof foo
+
+echo "set EA <colour,blue>:"
+${ATTR_PROG} -s colour -V blue foo
+
+echo "set EA <size,small>:"
+${ATTR_PROG} -s size -V small foo
+
+echo "list the EAs for foo: noise, colour, size" 
+${ATTR_PROG} -l foo
+
+echo "check the list again for foo"
+${ATTR_PROG} -l foo
+
+echo "unmount the FS and see if EAs are persistent"
+_umount_and_mount
+
+echo "check the list again for foo after umount/mount"
+${ATTR_PROG} -l foo
+
+echo "get the value of the noise EA"
+${ATTR_PROG} -g noise foo
+
+echo "get the value of the colour EA which was removed earlier"
+${ATTR_PROG} -g colour foo
+
+echo "get the value of the size EA"
+${ATTR_PROG} -g size foo
+
+echo "remove the colour EA on foo"
+${ATTR_PROG} -r colour foo
+
+echo "list EAs for foo: noise, size"
+${ATTR_PROG} -l foo
+
+echo "get the value of the noise EA"
+${ATTR_PROG} -g noise foo
+
+echo "get the value of the colour EA which was removed earlier"
+${ATTR_PROG} -g colour foo
+
+echo "get the value of the size EA"
+${ATTR_PROG} -g size foo
+
+echo "list all the EAs again: noise, size"
+${ATTR_PROG} -l foo
+
+echo "change the value of the size EA from small to huge"
+${ATTR_PROG} -s size -V huge foo
+
+echo "get the size EA which should now have value huge"
+${ATTR_PROG} -g size foo
+
+echo "list EAs: noise, size"
+${ATTR_PROG} -l foo
+
+echo "remove the size EA from foo"
+${ATTR_PROG} -r size foo
+
+echo "list EAs: noise (size EA has been removed)"
+${ATTR_PROG} -l foo
+
+echo "get the noise EA: woof"
+${ATTR_PROG} -g noise foo
+
+echo "try removing non-existent EA named woof"
+${ATTR_PROG} -r woof foo
+
+echo "try removing already removed EA size"
+${ATTR_PROG} -r size foo
+
+echo "list EAs: noise"
+${ATTR_PROG} -l foo
+
+echo "try removing already removed EA colour"
+${ATTR_PROG} -r colour foo
+
+echo "list EAs: noise"
+${ATTR_PROG} -l foo
+
+echo "remove remaining EA noise"
+${ATTR_PROG} -r noise foo
+
+echo "list EAs: should be no EAs left now"
+${ATTR_PROG} -l foo
+
+echo "unmount the FS and see if EAs are persistent"
+_umount_and_mount
+
+echo "list EAs: should still be no EAs left"
+${ATTR_PROG} -l foo
+
+echo ""
+echo "*** Test out the root namespace ***"
+echo ""
+
+echo "set EA <root:colour,marone>:"
+${ATTR_PROG} -R -s colour -V marone foo
+
+echo "set EA <user:colour,beige>:"
+${ATTR_PROG} -s colour -V beige foo
+
+echo "set EA <user:vomit,pizza>:"
+${ATTR_PROG} -s vomit -V pizza foo
+
+echo "set EA <root:noise,whack>:"
+${ATTR_PROG} -R -s noise -V whack foo
+
+echo "list root EAs: <root:colour,noise>:"
+${ATTR_PROG} -R -l foo
+
+echo "list user EAs: <user:colour,vomit>:"
+${ATTR_PROG} -l foo
+
+echo "get root EA colour: marone"
+${ATTR_PROG} -R -g colour foo
+
+echo "get root EA noise: whack"
+${ATTR_PROG} -R -g noise foo
+
+echo "get root EA vomit which is a user EA => find nothing"
+${ATTR_PROG} -R -g vomit foo
+
+echo ""
+echo "unmount the FS and see if EAs are persistent"
+echo ""
+_umount_and_mount
+
+echo "get root EA colour: marone"
+${ATTR_PROG} -R -g colour foo
+
+echo "get root EA noise: whack"
+${ATTR_PROG} -R -g noise foo
+
+echo "get user EA vomit: pizza" 
+${ATTR_PROG} -g vomit foo
+
+echo "remove the root colour EA"
+${ATTR_PROG} -R -r colour foo
+
+echo "list root EAs: <root:noise>:"
+${ATTR_PROG} -R -l foo
+
+echo "list user EAs: <user:colour,vomit>:"
+${ATTR_PROG} -l foo
+
+echo "remove the final root EA noise"
+${ATTR_PROG} -R -r noise foo
+
+echo "list root EAs: none"
+${ATTR_PROG} -R -l foo
+
+cd /
+_cleanup_testdir
+
+# Check the filesystem
+_check_scratch_fs
+
+# optional stuff if your test has verbose output to help resolve problems
+#echo
+#echo "If failure, check $seq.full (this) and $seq.full.ok (reference)"
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/097.out.udf b/tests/generic/097.out.udf
new file mode 100644 (file)
index 0000000..1d36ff7
--- /dev/null
@@ -0,0 +1,132 @@
+QA output created by 097
+create file foo
+should be no EAs for foo:
+set EA <noise,woof>:
+Attribute "noise" set to a 4 byte value for foo:
+woof
+set EA <colour,blue>:
+Attribute "colour" set to a 4 byte value for foo:
+blue
+set EA <size,small>:
+Attribute "size" set to a 5 byte value for foo:
+small
+list the EAs for foo: noise, colour, size
+Attribute "noise" has a 4 byte value for foo
+Attribute "colour" has a 4 byte value for foo
+Attribute "size" has a 5 byte value for foo
+check the list again for foo
+Attribute "noise" has a 4 byte value for foo
+Attribute "colour" has a 4 byte value for foo
+Attribute "size" has a 5 byte value for foo
+unmount the FS and see if EAs are persistent
+check the list again for foo after umount/mount
+Attribute "noise" has a 4 byte value for foo
+Attribute "colour" has a 4 byte value for foo
+Attribute "size" has a 5 byte value for foo
+get the value of the noise EA
+Attribute "noise" had a 4 byte value for foo:
+woof
+get the value of the colour EA which was removed earlier
+Attribute "colour" had a 4 byte value for foo:
+blue
+get the value of the size EA
+Attribute "size" had a 5 byte value for foo:
+small
+remove the colour EA on foo
+list EAs for foo: noise, size
+Attribute "noise" has a 4 byte value for foo
+Attribute "size" has a 5 byte value for foo
+get the value of the noise EA
+Attribute "noise" had a 4 byte value for foo:
+woof
+get the value of the colour EA which was removed earlier
+attr_get: Attribute not found
+Could not get "colour" for foo
+get the value of the size EA
+Attribute "size" had a 5 byte value for foo:
+small
+list all the EAs again: noise, size
+Attribute "noise" has a 4 byte value for foo
+Attribute "size" has a 5 byte value for foo
+change the value of the size EA from small to huge
+Attribute "size" set to a 4 byte value for foo:
+huge
+get the size EA which should now have value huge
+Attribute "size" had a 4 byte value for foo:
+huge
+list EAs: noise, size
+Attribute "noise" has a 4 byte value for foo
+Attribute "size" has a 4 byte value for foo
+remove the size EA from foo
+list EAs: noise (size EA has been removed)
+Attribute "noise" has a 4 byte value for foo
+get the noise EA: woof
+Attribute "noise" had a 4 byte value for foo:
+woof
+try removing non-existent EA named woof
+attr_remove: Attribute not found
+Could not remove "woof" for foo
+try removing already removed EA size
+attr_remove: Attribute not found
+Could not remove "size" for foo
+list EAs: noise
+Attribute "noise" has a 4 byte value for foo
+try removing already removed EA colour
+attr_remove: Attribute not found
+Could not remove "colour" for foo
+list EAs: noise
+Attribute "noise" has a 4 byte value for foo
+remove remaining EA noise
+list EAs: should be no EAs left now
+unmount the FS and see if EAs are persistent
+list EAs: should still be no EAs left
+
+*** Test out the root namespace ***
+
+set EA <root:colour,marone>:
+Attribute "colour" set to a 6 byte value for foo:
+marone
+set EA <user:colour,beige>:
+Attribute "colour" set to a 5 byte value for foo:
+beige
+set EA <user:vomit,pizza>:
+Attribute "vomit" set to a 5 byte value for foo:
+pizza
+set EA <root:noise,whack>:
+Attribute "noise" set to a 5 byte value for foo:
+whack
+list root EAs: <root:colour,noise>:
+Attribute "colour" has a 6 byte value for foo
+Attribute "noise" has a 5 byte value for foo
+list user EAs: <user:colour,vomit>:
+Attribute "colour" has a 5 byte value for foo
+Attribute "vomit" has a 5 byte value for foo
+get root EA colour: marone
+Attribute "colour" had a 6 byte value for foo:
+marone
+get root EA noise: whack
+Attribute "noise" had a 5 byte value for foo:
+whack
+get root EA vomit which is a user EA => find nothing
+attr_get: Attribute not found
+Could not get "vomit" for foo
+
+unmount the FS and see if EAs are persistent
+
+get root EA colour: marone
+Attribute "colour" had a 6 byte value for foo:
+marone
+get root EA noise: whack
+Attribute "noise" had a 5 byte value for foo:
+whack
+get user EA vomit: pizza
+Attribute "vomit" had a 5 byte value for foo:
+pizza
+remove the root colour EA
+list root EAs: <root:noise>:
+Attribute "noise" has a 5 byte value for foo
+list user EAs: <user:colour,vomit>:
+Attribute "colour" has a 5 byte value for foo
+Attribute "vomit" has a 5 byte value for foo
+remove the final root EA noise
+list root EAs: none
diff --git a/tests/generic/097.out.xfs b/tests/generic/097.out.xfs
new file mode 100644 (file)
index 0000000..0024bf2
--- /dev/null
@@ -0,0 +1,132 @@
+QA output created by 097
+create file foo
+should be no EAs for foo:
+set EA <noise,woof>:
+Attribute "noise" set to a 4 byte value for foo:
+woof
+set EA <colour,blue>:
+Attribute "colour" set to a 4 byte value for foo:
+blue
+set EA <size,small>:
+Attribute "size" set to a 5 byte value for foo:
+small
+list the EAs for foo: noise, colour, size
+Attribute "size" has a 5 byte value for foo
+Attribute "noise" has a 4 byte value for foo
+Attribute "colour" has a 4 byte value for foo
+check the list again for foo
+Attribute "size" has a 5 byte value for foo
+Attribute "noise" has a 4 byte value for foo
+Attribute "colour" has a 4 byte value for foo
+unmount the FS and see if EAs are persistent
+check the list again for foo after umount/mount
+Attribute "size" has a 5 byte value for foo
+Attribute "noise" has a 4 byte value for foo
+Attribute "colour" has a 4 byte value for foo
+get the value of the noise EA
+Attribute "noise" had a 4 byte value for foo:
+woof
+get the value of the colour EA which was removed earlier
+Attribute "colour" had a 4 byte value for foo:
+blue
+get the value of the size EA
+Attribute "size" had a 5 byte value for foo:
+small
+remove the colour EA on foo
+list EAs for foo: noise, size
+Attribute "size" has a 5 byte value for foo
+Attribute "noise" has a 4 byte value for foo
+get the value of the noise EA
+Attribute "noise" had a 4 byte value for foo:
+woof
+get the value of the colour EA which was removed earlier
+attr_get: Attribute not found
+Could not get "colour" for foo
+get the value of the size EA
+Attribute "size" had a 5 byte value for foo:
+small
+list all the EAs again: noise, size
+Attribute "size" has a 5 byte value for foo
+Attribute "noise" has a 4 byte value for foo
+change the value of the size EA from small to huge
+Attribute "size" set to a 4 byte value for foo:
+huge
+get the size EA which should now have value huge
+Attribute "size" had a 4 byte value for foo:
+huge
+list EAs: noise, size
+Attribute "noise" has a 4 byte value for foo
+Attribute "size" has a 4 byte value for foo
+remove the size EA from foo
+list EAs: noise (size EA has been removed)
+Attribute "noise" has a 4 byte value for foo
+get the noise EA: woof
+Attribute "noise" had a 4 byte value for foo:
+woof
+try removing non-existent EA named woof
+attr_remove: Attribute not found
+Could not remove "woof" for foo
+try removing already removed EA size
+attr_remove: Attribute not found
+Could not remove "size" for foo
+list EAs: noise
+Attribute "noise" has a 4 byte value for foo
+try removing already removed EA colour
+attr_remove: Attribute not found
+Could not remove "colour" for foo
+list EAs: noise
+Attribute "noise" has a 4 byte value for foo
+remove remaining EA noise
+list EAs: should be no EAs left now
+unmount the FS and see if EAs are persistent
+list EAs: should still be no EAs left
+
+*** Test out the root namespace ***
+
+set EA <root:colour,marone>:
+Attribute "colour" set to a 6 byte value for foo:
+marone
+set EA <user:colour,beige>:
+Attribute "colour" set to a 5 byte value for foo:
+beige
+set EA <user:vomit,pizza>:
+Attribute "vomit" set to a 5 byte value for foo:
+pizza
+set EA <root:noise,whack>:
+Attribute "noise" set to a 5 byte value for foo:
+whack
+list root EAs: <root:colour,noise>:
+Attribute "noise" has a 5 byte value for foo
+Attribute "colour" has a 6 byte value for foo
+list user EAs: <user:colour,vomit>:
+Attribute "vomit" has a 5 byte value for foo
+Attribute "colour" has a 5 byte value for foo
+get root EA colour: marone
+Attribute "colour" had a 6 byte value for foo:
+marone
+get root EA noise: whack
+Attribute "noise" had a 5 byte value for foo:
+whack
+get root EA vomit which is a user EA => find nothing
+attr_get: Attribute not found
+Could not get "vomit" for foo
+
+unmount the FS and see if EAs are persistent
+
+get root EA colour: marone
+Attribute "colour" had a 6 byte value for foo:
+marone
+get root EA noise: whack
+Attribute "noise" had a 5 byte value for foo:
+whack
+get user EA vomit: pizza
+Attribute "vomit" had a 5 byte value for foo:
+pizza
+remove the root colour EA
+list root EAs: <root:noise>:
+Attribute "noise" has a 5 byte value for foo
+list user EAs: <user:colour,vomit>:
+Attribute "vomit" has a 5 byte value for foo
+Attribute "colour" has a 5 byte value for foo
+remove the final root EA noise
+list root EAs: none
diff --git a/tests/generic/099 b/tests/generic/099
new file mode 100755 (executable)
index 0000000..edd88a9
--- /dev/null
@@ -0,0 +1,342 @@
+#! /bin/bash
+# FS QA Test No. 099. Modified from UDFQA test 036.
+#
+# ACL test
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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
+#
+#-----------------------------------------------------------------------
+#
+#_acl_list
+# modifier
+
+seq=`basename $0`
+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
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+runas=$here/src/runas
+
+TARGET_DIR=$SCRATCH_MNT
+[ "$FSTYP" == "xfs" ] && TARGET_DIR=$TEST_DIR
+
+_cleanup()
+{
+    rm -f $tmp.*
+    cd $TARGET_DIR
+    rm -rf $seq.dir1
+    cd /
+}
+
+# -----
+# minimal access ACL has ACEs: USER_OBJ, GROUP_OBJ, OTHER_OBJ
+# This is set with chacl(1) and can be changed by chmod(1).
+#
+# Test that this is being set for ACL and for std unix permissions
+# Test that we can get back the same ACL.
+# Test std permissions for rwx.
+# -----
+#
+# Test out default ACLs and that the ACL is being PASSed
+# onto the children of the dir.
+#
+# -----
+# Test out access check for extended ACLs.
+# -> 3 extra ACEs: MASK, GROUP, USER
+# -> the GROUP compares with egid of process _and_ the supplementary
+#    groups (as found in /etc/group)
+#
+# Test that mask works for USER, GROUP, GROUP_OBJ
+# Test that the ACE type priority is working
+#   -> this would be done by simultaneously matching on ACEs
+#   -> interesting if it allows user to specify ACEs in any order
+#
+rm -f $seq.full
+
+#-------------------------------------------------------
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX
+
+_acl_setup_ids
+_require_acls
+
+[ -x $runas ] || _notrun "$runas executable not found"
+
+# get dir
+#export FILE_SYS=xfs
+_require_scratch
+_setup_testdir
+
+cd $TARGET_DIR
+rm -rf $seq.dir1 # in case file is left over from previous runs.
+mkdir $seq.dir1
+cd $seq.dir1
+
+echo ""
+echo "=== Test minimal ACE ==="
+
+echo "Setup file"
+# Note: as this is a shell script,
+#       will need read and execute permission set
+#       in order to execute it.
+touch file1
+cat <<EOF >file1
+#!/bin/bash
+echo "Test was executed"
+EOF
+chmod u=rwx file1
+chmod g=rw- file1
+chmod o=r-- file1
+chown $acl1.$acl2 file1
+_acl_ls file1
+
+echo ""
+echo "--- Test get and set of ACL ---"
+echo "Note: IRIX interface gave an empty ACL - Linux outputs an ACL"
+_acl_list file1
+echo "Try using single colon separator"
+echo "Note: IRIX interface FAILs because of single colon - Linux one allows it" 
+chacl u::r--,g::rwx,o:rw- file1 2>&1
+echo "Expect to PASS" 
+chacl u::r--,g::rwx,o::rw- file1 2>&1
+_acl_list file1
+
+echo ""
+echo "--- Test sync of ACL with std permissions ---"
+_acl_ls file1
+chmod u+w file1
+_acl_ls file1
+_acl_list file1
+
+echo ""
+echo "--- Test owner permissions ---"
+chacl u::r-x,g::---,o::--- file1 2>&1
+_acl_list file1
+# change to owner
+echo "Expect to PASS" 
+$runas -u $acl1 -g $acl1 ./file1 2>&1
+echo "Expect to FAIL" 
+$runas -u $acl2 -g $acl2 ./file1 2>&1
+
+echo ""
+echo "--- Test group permissions ---"
+chacl u::---,g::r-x,o::--- file1 2>&1
+_acl_list file1
+echo "Expect to FAIL - acl1 is owner" 
+$runas -u $acl1 -g $acl1 ./file1 2>&1
+echo "Expect to PASS - acl2 matches group" 
+$runas -u $acl2 -g $acl2 ./file1 2>&1
+echo "Expect to PASS - acl2 matches sup group" 
+$runas -u $acl2 -g $acl3 -s $acl2 ./file1 2>&1
+echo "Expect to FAIL - acl3 is not in group" 
+$runas -u $acl3 -g $acl3 ./file1 2>&1
+
+echo ""
+echo "--- Test other permissions ---"
+chacl u::---,g::---,o::r-x file1 2>&1
+_acl_list file1
+echo "Expect to FAIL - acl1 is owner" 
+$runas -u $acl1 -g $acl1 ./file1 2>&1
+echo "Expect to FAIL - acl2 is in group" 
+$runas -u $acl2 -g $acl2 ./file1 2>&1
+echo "Expect to FAIL - acl2 is in sup. group" 
+$runas -u $acl2 -g $acl3 -s $acl2 ./file1 2>&1
+echo "Expect to PASS - acl3 is not owner or in group" 
+$runas -u $acl3 -g $acl3 ./file1 2>&1
+
+#-------------------------------------------------------
+
+echo ""
+echo "=== Test Extended ACLs ==="
+
+echo ""
+echo "--- Test adding a USER ACE ---"
+echo "Expect to FAIL as no MASK provided"
+chacl u::---,g::---,o::---,u:$acl2:r-x file1 2>&1 | _acl_filter_id
+echo "Ensure that ACL has not been changed"
+_acl_list file1
+echo "Expect to PASS - USER ACE matches user"
+chacl u::---,g::---,o::---,u:$acl2:r-x,m::rwx file1 2>&1
+_acl_list file1
+$runas -u $acl2 -g $acl2 ./file1 2>&1
+echo "Expect to FAIL - USER ACE does not match user"
+$runas -u $acl3 -g $acl3 ./file1 2>&1
+
+echo ""
+echo "--- Test adding a GROUP ACE ---"
+echo "Expect to FAIL as no MASK provided"
+chacl u::---,g::---,o::---,g:$acl2:r-x file1 2>&1 | _acl_filter_id
+echo "Ensure that ACL has not been changed"
+_acl_list file1
+chacl u::---,g::---,o::---,g:$acl2:r-x,m::rwx file1 2>&1
+_acl_list file1 | _acl_filter_id
+echo "Expect to PASS - GROUP ACE matches group"
+$runas -u $acl2 -g $acl2 ./file1 2>&1
+echo "Expect to PASS - GROUP ACE matches sup group"
+$runas -u $acl2 -g $acl1 -s $acl2 ./file1 2>&1
+echo "Expect to FAIL - GROUP ACE does not match group"
+$runas -u $acl3 -g $acl3 ./file1 2>&1
+
+#-------------------------------------------------------
+
+echo ""
+echo "--- Test MASK ---"
+
+# group
+chacl u::---,g::---,o::---,g:$acl2:r-x,m::-w- file1 2>&1
+_acl_list file1
+echo "Expect to FAIL as MASK prohibits execution"
+$runas -u $acl2 -g $acl2 ./file1 2>&1
+
+# user
+chacl u::---,g::---,o::---,u:$acl2:r-x,m::-w- file1 2>&1
+echo "Expect to FAIL as MASK prohibits execution"
+$runas -u $acl2 -g $acl2 ./file1 2>&1
+
+# user
+chacl u::---,g::---,o::---,u:$acl2:r-x,m::r-x file1 2>&1
+echo "Expect to PASS as MASK allows execution"
+$runas -u $acl2 -g $acl2 ./file1 2>&1
+
+#-------------------------------------------------------
+
+echo ""
+echo "--- Test ACE priority ---"
+
+chacl o::rwx,g::rwx,u:$acl1:rwx,u::---,m::rwx file1 2>&1
+echo "Expect to FAIL as should match on owner"
+$runas -u $acl1 -g $acl2 ./file1 2>&1
+
+chacl o::---,g::---,u:$acl2:rwx,u::---,m::rwx file1 2>&1
+echo "Expect to PASS as should match on user"
+$runas -u $acl2 -g $acl2 ./file1 2>&1
+
+
+#-------------------------------------------------------
+
+echo ""
+echo "=== Test can read ACLs without access permissions ==="
+# This was a bug in kernel code where syscred wasn't being used
+# to override the capabilities
+chacl o::---,g::---,u::--- file1 2>&1
+_acl_list file1
+
+#-------------------------------------------------------
+
+echo ""
+echo "=== Test Default ACLs ==="
+# make test clearer by testing with and without umask
+umask 0
+
+mkdir acldir
+chacl -b "u::rwx,g::rwx,o::rwx" "u::r-x,g::r--,o::---" acldir 2>&1
+_acl_list acldir
+cd acldir
+
+touch file2
+_acl_ls file2
+_acl_list file2
+
+#ensure that umask is not having an effect 
+#so set it and see
+umask 722
+touch file3
+_acl_ls file3
+_acl_list file3
+
+cd ..
+umask 022
+
+
+#-------------------------------------------------------
+
+echo ""
+echo "=== Removing ACLs ==="
+_acl_list file1
+_acl_list acldir
+_acl_list acldir/file2
+echo "Remove ACLs..."
+chacl -R file1
+chacl -B acldir
+chacl -R acldir/file2
+echo "Note: IRIX interface would mean empty ACLs - Linux would show mode ACLs" 
+_acl_list file1
+_acl_list acldir
+_acl_list acldir/file2
+
+#-------------------------------------------------------
+
+echo ""
+echo "=== Test out error messages for ACL text parsing  ==="
+
+touch file1
+set -x
+chacl u file1
+chacl u: file1
+chacl u:rumpledumpleunknownuser file1
+chacl u:rumpledumpleunknownuser: file1
+chacl g:rumpledumpleunknowngrp file1
+chacl g:rumpledumpleunknowngrp: file1
+chacl o:user1:rwx file1
+chacl m:user1:rwx file1
+chacl a::rwx file1
+set +x
+
+#-------------------------------------------------------
+
+echo ""
+echo "=== Test out large ACLs  ==="
+touch largeaclfile
+XFS_ACL_MAX_ENTRIES=25
+num_aces_pre=`expr $XFS_ACL_MAX_ENTRIES - 1`
+num_aces_post=`expr $XFS_ACL_MAX_ENTRIES + 1`
+
+acl1=`_create_n_aces $num_aces_pre`
+acl2=`_create_n_aces $XFS_ACL_MAX_ENTRIES`
+acl3=`_create_n_aces $num_aces_post`
+
+echo "1 below xfs acl max"
+chacl $acl1 largeaclfile
+_acl_list largeaclfile | _filter_aces_notypes
+
+echo "xfs acl max"
+chacl $acl2 largeaclfile
+_acl_list largeaclfile | _filter_aces_notypes
+
+echo "1 above xfs acl max"
+chacl $acl3 largeaclfile
+_acl_list largeaclfile | _filter_aces_notypes
+
+#-------------------------------------------------------
+
+if [ "$FSTYP" == "udf" ]; then
+    cd /
+    umount $TARGET_DIR
+    # Check the filesystem
+    _check_scratch_fs
+fi
+# success, all done
+status=0
+exit
diff --git a/tests/generic/099.out b/tests/generic/099.out
new file mode 100644 (file)
index 0000000..3f4f663
--- /dev/null
@@ -0,0 +1,215 @@
+QA output created by 099
+
+=== Test minimal ACE ===
+Setup file
+-rwxrw-r-- id1 id2 file1
+
+--- Test get and set of ACL ---
+Note: IRIX interface gave an empty ACL - Linux outputs an ACL
+file1 []
+Try using single colon separator
+Note: IRIX interface FAILs because of single colon - Linux one allows it
+chacl: "u::r--,g::rwx,o:rw-" is an invalid ACL specification.
+Expect to PASS
+file1 [u::r--,g::rwx,o::rw-]
+
+--- Test sync of ACL with std permissions ---
+-r--rwxrw-+ id1 id2 file1
+-rw-rwxrw-+ id1 id2 file1
+file1 [u::rw-,g::rwx,o::rw-]
+
+--- Test owner permissions ---
+file1 [u::r-x,g::---,o::---]
+Expect to PASS
+Test was executed
+Expect to FAIL
+./file1: Permission denied
+
+--- Test group permissions ---
+file1 [u::---,g::r-x,o::---]
+Expect to FAIL - acl1 is owner
+./file1: Permission denied
+Expect to PASS - acl2 matches group
+Test was executed
+Expect to PASS - acl2 matches sup group
+Test was executed
+Expect to FAIL - acl3 is not in group
+./file1: Permission denied
+
+--- Test other permissions ---
+file1 [u::---,g::---,o::r-x]
+Expect to FAIL - acl1 is owner
+./file1: Permission denied
+Expect to FAIL - acl2 is in group
+./file1: Permission denied
+Expect to FAIL - acl2 is in sup. group
+./file1: Permission denied
+Expect to PASS - acl3 is not owner or in group
+Test was executed
+
+=== Test Extended ACLs ===
+
+--- Test adding a USER ACE ---
+Expect to FAIL as no MASK provided
+chacl: error setting access acl on "file1":Invalid argument
+Ensure that ACL has not been changed
+file1 [u::---,g::---,o::r-x]
+Expect to PASS - USER ACE matches user
+file1 [u::---,g::---,o::---,u:id2:r-x,m::rwx]
+Test was executed
+Expect to FAIL - USER ACE does not match user
+./file1: Permission denied
+
+--- Test adding a GROUP ACE ---
+Expect to FAIL as no MASK provided
+chacl: error setting access acl on "file1":Invalid argument
+Ensure that ACL has not been changed
+file1 [u::---,g::---,o::---,u:id2:r-x,m::rwx]
+file1 [u::---,g::---,o::---,g:id2:r-x,m::rwx]
+Expect to PASS - GROUP ACE matches group
+Test was executed
+Expect to PASS - GROUP ACE matches sup group
+Test was executed
+Expect to FAIL - GROUP ACE does not match group
+./file1: Permission denied
+
+--- Test MASK ---
+file1 [u::---,g::---,o::---,g:id2:r-x,m::-w-]
+Expect to FAIL as MASK prohibits execution
+./file1: Permission denied
+Expect to FAIL as MASK prohibits execution
+./file1: Permission denied
+Expect to PASS as MASK allows execution
+Test was executed
+
+--- Test ACE priority ---
+Expect to FAIL as should match on owner
+./file1: Permission denied
+Expect to PASS as should match on user
+Test was executed
+
+=== Test can read ACLs without access permissions ===
+file1 [o::---,g::---,u::---]
+
+=== Test Default ACLs ===
+acldir [u::rwx,g::rwx,o::rwx/u::r-x,g::r--,o::---]
+-r--r-----+ 0 0 file2
+file2 [u::r--,g::r--,o::---]
+-r--r-----+ 0 0 file3
+file3 [u::r--,g::r--,o::---]
+
+=== Removing ACLs ===
+file1 [o::---,g::---,u::---]
+acldir [u::rwx,g::rwx,o::rwx/u::r-x,g::r--,o::---]
+acldir/file2 [u::r--,g::r--,o::---]
+Remove ACLs...
+Note: IRIX interface would mean empty ACLs - Linux would show mode ACLs
+file1 []
+acldir []
+acldir/file2 []
+
+=== Test out error messages for ACL text parsing  ===
++ chacl u file1
+chacl: "u" is an invalid ACL specification.
++ chacl u: file1
+chacl: "u:" is an invalid ACL specification.
++ chacl u:rumpledumpleunknownuser file1
+chacl: "u:rumpledumpleunknownuser" is an invalid ACL specification.
++ chacl u:rumpledumpleunknownuser: file1
+chacl: "u:rumpledumpleunknownuser:" is an invalid ACL specification.
++ chacl g:rumpledumpleunknowngrp file1
+chacl: "g:rumpledumpleunknowngrp" is an invalid ACL specification.
++ chacl g:rumpledumpleunknowngrp: file1
+chacl: "g:rumpledumpleunknowngrp:" is an invalid ACL specification.
++ chacl o:user1:rwx file1
+chacl: "o:user1:rwx" is an invalid ACL specification.
++ chacl m:user1:rwx file1
+chacl: "m:user1:rwx" is an invalid ACL specification.
++ chacl a::rwx file1
+chacl: "a::rwx" is an invalid ACL specification.
+
+=== Test out large ACLs  ===
+1 below xfs acl max
+largeaclfile 
+user::rwx
+group::rwx
+other::rwx
+mask::rwx
+user:20:rwx
+user:19:rwx
+user:18:rwx
+user:17:rwx
+user:16:rwx
+user:15:rwx
+user:14:rwx
+user:13:rwx
+user:12:rwx
+user:11:rwx
+user:10:rwx
+user:9:rwx
+user:8:rwx
+user:7:rwx
+user:6:rwx
+user:5:rwx
+user:4:rwx
+user:3:rwx
+user:2:rwx
+user:1:rwx
+
+xfs acl max
+largeaclfile 
+user::rwx
+group::rwx
+other::rwx
+mask::rwx
+user:21:rwx
+user:20:rwx
+user:19:rwx
+user:18:rwx
+user:17:rwx
+user:16:rwx
+user:15:rwx
+user:14:rwx
+user:13:rwx
+user:12:rwx
+user:11:rwx
+user:10:rwx
+user:9:rwx
+user:8:rwx
+user:7:rwx
+user:6:rwx
+user:5:rwx
+user:4:rwx
+user:3:rwx
+user:2:rwx
+user:1:rwx
+
+1 above xfs acl max
+chacl: error setting access acl on "largeaclfile":Error 0
+largeaclfile 
+user::rwx
+group::rwx
+other::rwx
+mask::rwx
+user:21:rwx
+user:20:rwx
+user:19:rwx
+user:18:rwx
+user:17:rwx
+user:16:rwx
+user:15:rwx
+user:14:rwx
+user:13:rwx
+user:12:rwx
+user:11:rwx
+user:10:rwx
+user:9:rwx
+user:8:rwx
+user:7:rwx
+user:6:rwx
+user:5:rwx
+user:4:rwx
+user:3:rwx
+user:2:rwx
+user:1:rwx
+
diff --git a/tests/generic/100 b/tests/generic/100
new file mode 100755 (executable)
index 0000000..1ba5eb7
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/bash
+# FS QA Test No. 100. Modified from UDF QA test 030.
+#
+# Test whether a tarred directory structure can be untarred onto
+# a UDF file system.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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`
+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
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_cleanup()
+{
+     rm -f $tmp.* $testfile
+}
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+# Use _populate_fs() in common.rc to create a directory structure.
+TEMP_DIR=/tmp
+[ "$FSTYP" == "xfs" ] && TEMP_DIR=$TEST_DIR
+TAR_FILE=temp.tar
+NDIRS=3
+NFILES=6
+DEPTH=5
+POPULATED_DIR=$TEMP_DIR/populate_root
+SIZE=10
+
+rm -f $seq.full
+
+# Clean up if file exist from prevous run
+rm -rf $POPULATED_DIR
+rm -f $TEMP_DIR/$TAR_FILE
+
+# Create the new directory structure
+_populate_fs -n $NDIRS -f $NFILES -d $DEPTH -r $POPULATED_DIR -s $SIZE >>$here/$seq.full 2>&1
+
+# Then tar up the directory structure
+tar -cvf $TEMP_DIR/$TAR_FILE $POPULATED_DIR >>$here/$seq.full 2>&1
+
+# create f/s
+_require_scratch
+_setup_testdir
+
+# untar on f/s
+cd $testdir
+tar -xRvf $TEMP_DIR/$TAR_FILE >>$here/$seq.full 2>&1
+cd $here
+
+
+# use diff -qr to compare
+ls -R -l ${testdir}${POPULATED_DIR} >>$here/$seq.full 2>&1
+diff -qr $POPULATED_DIR ${testdir}${POPULATED_DIR}
+
+cd /
+_cleanup_testdir
+_check_scratch_fs
+
+status=0
+exit
diff --git a/tests/generic/100.out b/tests/generic/100.out
new file mode 100644 (file)
index 0000000..b6572c4
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 100
diff --git a/tests/generic/105 b/tests/generic/105
new file mode 100755 (executable)
index 0000000..01bae98
--- /dev/null
@@ -0,0 +1,99 @@
+#! /bin/bash
+# FS QA Test No. 105
+#
+# Test fix of bug:
+#   930290 - xfs directory with no exec perm in ACL denies access
+#            and breaks CAPP evaluation
+#   which pulls out an earlier mod
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2006 Silicon Graphics, 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`
+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 /
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+# Modify as appropriate.
+_supported_fs generic
+_supported_os IRIX Linux
+
+# real QA test starts here
+
+rm -f $seq.full
+
+_require_scratch
+_require_acls
+
+_acl_setup_ids
+
+umount $SCRATCH_DEV >/dev/null 2>&1
+echo "*** MKFS ***"                         >>$seq.full
+echo ""                                     >>$seq.full
+_scratch_mkfs                               >>$seq.full 2>&1 \
+       || _fail "mkfs failed"
+_scratch_mount                              >>$seq.full 2>&1 \
+       || _fail "mount failed"
+
+cd $SCRATCH_MNT
+
+# create a dir with out execute perms
+mkdir -m 600 subdir
+
+# make it owned by $acl1
+chown $acl1 subdir
+
+# put a file in the directory
+echo data > subdir/file
+_ls_l subdir/file | awk '{ print $1, $3 }'
+
+# add an ACL with a user ACE which has no exec permission 
+if [ "$HOSTOS" == "Linux" ]; then
+    setfacl -m u:$acl1:r subdir
+elif [ "$HOSTOS" == "IRIX" ]; then
+    chacl u:$acl:r--,g::---,o::--- subdir
+else
+    echo "Unknown OS!"
+    exit 1
+fi
+
+# With the bug this gives: `ls: subdir/file: Permission denied'
+# because one needs at least an exec perm somewhere in acl
+# However, this should not hold true for directories.
+_ls_l subdir/file | awk '{ print $1, $3 }'
+
+# With the bug this gives: `subdir/file2: Permission denied'.
+echo data2 > subdir/file2
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/105.out b/tests/generic/105.out
new file mode 100644 (file)
index 0000000..af18719
--- /dev/null
@@ -0,0 +1,3 @@
+QA output created by 105
+-rw-r--r-- root
+-rw-r--r-- root
diff --git a/tests/generic/112 b/tests/generic/112
new file mode 100755 (executable)
index 0000000..bcdcfec
--- /dev/null
@@ -0,0 +1,163 @@
+#! /bin/bash
+# FS QA Test No. 112
+#
+# fsx (AIO variant, based on 075)
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2005 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -rf $testdir/fsx.* $tmp.*
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_do_test()
+{
+    _n="$1"
+    _param="$2"
+
+    out=$testdir/fsx
+    rm -rf $out
+    if ! mkdir $out
+    then
+       echo "    failed to mkdir $out"
+       status=1
+       exit
+    fi
+
+    _filter_param=`echo "$_param" | sed\
+       -e 's/-N [0-9][0-9]*/-N numops/' \
+       -e 's/-l [0-9][0-9]*/-l filelen/'`
+
+    echo ""
+    echo "-----------------------------------------------"
+    echo "fsx.$_n : $_filter_param"
+    echo "-----------------------------------------------"
+
+    if [ "$FSTYP" != "xfs" ]
+    then
+        if [ "$_n" = "1" -o "$_n" = "3" ]
+        then
+            # HACK: only xfs handles preallocation (-x) so just skip this test
+            return
+        fi
+    fi
+
+    # This cd and use of -P gets full debug on $here (not TEST_DEV)
+    cd $out
+    if ! $here/ltp/fsx $_param -P $here $seq.$_n &>/dev/null
+    then
+       echo "    fsx ($_param) returned $? - see $seq.$_n.full"
+       mv $seq.$_n.fsxlog $here/$seq.$_n.full
+       status=1
+       exit
+    fi
+
+    cd $here
+    _check_test_fs
+}
+
+_usage()
+{
+    echo "$0: [-l filelen] [-n numops1] [-N numops2]"
+}
+
+_process_args()
+{
+    while getopts "l:n:N:?" c $@
+    do
+        case $c
+        in
+            l)
+                filelen=$OPTARG
+               param_type="$param_type, overidde -l"
+                ;;
+            N)
+                numops2=$OPTARG
+               param_type="$param_type, overidde -N"
+                ;;
+            n)
+                numops1=$OPTARG
+               param_type="$param_type, overidde -n"
+                ;;
+           ?)
+               _usage
+               exit    
+               ;;
+       esac
+    done
+}
+
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+[ -x $here/ltp/aio-stress ] || \
+       _notrun "fsx not built with AIO for this platform"
+
+size10=`expr 10 \* 1024 \* 1024`       # 10 megabytes
+filelen=$size10
+numops1=1000
+numops2=10000
+
+# can override the params here
+_process_args "$@"
+
+echo "Params are for $param_type" >>$seq.full
+echo "Params: n = $numops1 N = $numops2 l = $filelen" >>$seq.full
+
+_setup_testdir
+
+rm -f $here/$seq.full
+echo "brevity is wit..."
+
+_check_test_fs
+
+# Options:
+# -d: debug output for all operations
+# -l flen: the upper bound on file size (default 262144)
+# -o oplen: the upper bound on operation size
+# -N numops: total # operations to do (default infinity)
+# -P: save .fsxlog and .fsxgood files in dirpath (default ./)
+# -S seed: for random # generator (default 1) 0 gets timestamp
+# -x: pre-allocate file space, exercising unwritten extents
+# -A: use the AIO system calls
+
+_do_test 0 "-A -d -N $numops1 -S 0"
+_do_test 1 "-A -d -N $numops1 -S 0 -x"
+_do_test 2 "-A -d -N $numops2 -l $filelen -S 0"
+_do_test 3 "-A -d -N $numops2 -l $filelen -S 0 -x"
+
+rm -f $seq.*.fsx{good,log}
+exit 0
diff --git a/tests/generic/112.out b/tests/generic/112.out
new file mode 100644 (file)
index 0000000..7d1709c
--- /dev/null
@@ -0,0 +1,18 @@
+QA output created by 112
+brevity is wit...
+
+-----------------------------------------------
+fsx.0 : -A -d -N numops -S 0
+-----------------------------------------------
+
+-----------------------------------------------
+fsx.1 : -A -d -N numops -S 0 -x
+-----------------------------------------------
+
+-----------------------------------------------
+fsx.2 : -A -d -N numops -l filelen -S 0
+-----------------------------------------------
+
+-----------------------------------------------
+fsx.3 : -A -d -N numops -l filelen -S 0 -x
+-----------------------------------------------
diff --git a/tests/generic/113 b/tests/generic/113
new file mode 100755 (executable)
index 0000000..fd301cd
--- /dev/null
@@ -0,0 +1,107 @@
+#! /bin/bash
+# FS QA Test No. 113
+#
+# aio-stress
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2005 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -f $testdir/aio-stress.$$.*
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_do_test()
+{
+    _n="$1"
+    _param="$2"
+    _count="$3"
+    _nproc="$4"
+
+    _files="$testdir/aiostress.$$.$_n"
+    __proc=$_nproc
+    [ $__proc -gt 1 ] && _param="-t $__proc $_param"
+    while [ $__proc -gt 1 ]; do
+        _files="$_files $testdir/aiostress.$$.$_n.$__proc"
+       let __proc=$__proc-1
+    done
+    rm -f $_files
+    echo ""
+    echo "-----------------------------------------------"
+    echo "aio-stress.$_n : $_param"
+    echo "-----------------------------------------------"
+    if ! $here/ltp/aio-stress $_param $AIOSTRESS_AVOID -I $_count $_files >>$tmp.out 2>&1
+    then
+        echo "    aio-stress (count=$_count) returned $?"
+        cat $tmp.out
+        status=1
+        exit
+    fi
+
+    _check_test_fs
+    rm -f $_files
+}
+
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+[ -x $here/ltp/aio-stress ] || _notrun "aio-stress not built for this platform"
+
+_setup_testdir
+
+echo "brevity is wit..."
+
+count=1000
+procs=20
+
+_check_test_fs
+
+# the default
+_do_test 1 "-s 120m" $count 1
+
+# and the default with multiprocess
+_do_test 2 "-s 10m" $count $procs
+
+# as above, but now using direct IO
+_do_test 3 "-s 10m -O" $count $procs
+
+# dio with O_SYNC and unwritten extent conversion
+_do_test 4 "-s 10m -O -S" $count $procs
+
+# random dio writes with O_SYNC and unwritten extent conversion
+_do_test 5 "-s 10m -O -S -o 2" $count $procs
+
+exit
diff --git a/tests/generic/113.out b/tests/generic/113.out
new file mode 100644 (file)
index 0000000..aa856a6
--- /dev/null
@@ -0,0 +1,22 @@
+QA output created by 113
+brevity is wit...
+
+-----------------------------------------------
+aio-stress.1 : -s 120m
+-----------------------------------------------
+
+-----------------------------------------------
+aio-stress.2 : -t 20 -s 10m
+-----------------------------------------------
+
+-----------------------------------------------
+aio-stress.3 : -t 20 -s 10m -O
+-----------------------------------------------
+
+-----------------------------------------------
+aio-stress.4 : -t 20 -s 10m -O -S
+-----------------------------------------------
+
+-----------------------------------------------
+aio-stress.5 : -t 20 -s 10m -O -S -o 2
+-----------------------------------------------
diff --git a/tests/generic/117 b/tests/generic/117
new file mode 100755 (executable)
index 0000000..8afc962
--- /dev/null
@@ -0,0 +1,116 @@
+#! /bin/bash
+# FS QA Test No. 117
+#
+# Attempt to cause filesystem corruption with serial fsstresses doing
+# extended attributes writes - pv 940655
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2005 Silicon Graphics, 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`
+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
+
+# seed and options for fsstress known to cause curruptions
+seed=1122413794
+fss_ops=" -z \
+    -f attr_remove=100 \
+    -f attr_set=100 \
+    -f chown=3 \
+    -f creat=4 \
+    -f dread=4 \
+    -f dwrite=4 \
+    -f fdatasync=1 \
+    -f fsync=1 \
+    -f getdents=1 \
+    -f link=1 \
+    -f mkdir=2 \
+    -f mknod=2 \
+    -f read=1 \
+    -f readlink=1 \
+    -f rename=2 \
+    -f rmdir=1 \
+    -f setxattr=1 \
+    -f stat=1 \
+    -f symlink=2 \
+    -f sync=1 \
+    -f truncate=2 \
+    -f unlink=1 \
+    -f write=4 \
+    -s $seed \
+    -m 31 -n 1000 -p 1"
+
+ITERATIONS=10
+
+_cleanup()
+{
+    cd /
+    rm -f $tmp.*
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_setup_testdir
+_require_scratch
+_require_attrs
+
+rm -f $seq.full
+umount $SCRATCH_DEV >/dev/null 2>&1
+echo "*** MKFS ***"                         >>$seq.full
+echo ""                                     >>$seq.full
+_scratch_mkfs                               >>$seq.full 2>&1 \
+    || _fail "mkfs failed"
+_scratch_mount                              >>$seq.full 2>&1 \
+    || _fail "mount failed"
+
+mkdir -p $SCRATCH_MNT/fsstress
+
+echo
+echo Running fsstress in serial:
+i=0
+while [ $i -lt $ITERATIONS ]; do
+    echo fsstress iteration: $i | tee -a $seq.full
+    $FSSTRESS_PROG \
+       -d $SCRATCH_MNT/fsstress \
+       $fss_ops -S c >>$seq.full 2>&1
+
+    let i=$i+1
+done
+
+cd /
+umount $SCRATCH_MNT
+echo 
+echo Checking filesystem
+_check_scratch_fs
+_scratch_mount
+
+status=$?
+exit
diff --git a/tests/generic/117.out b/tests/generic/117.out
new file mode 100644 (file)
index 0000000..1306ebc
--- /dev/null
@@ -0,0 +1,15 @@
+QA output created by 117
+
+Running fsstress in serial:
+fsstress iteration: 0
+fsstress iteration: 1
+fsstress iteration: 2
+fsstress iteration: 3
+fsstress iteration: 4
+fsstress iteration: 5
+fsstress iteration: 6
+fsstress iteration: 7
+fsstress iteration: 8
+fsstress iteration: 9
+
+Checking filesystem
diff --git a/tests/generic/120 b/tests/generic/120
new file mode 100755 (executable)
index 0000000..8389925
--- /dev/null
@@ -0,0 +1,99 @@
+#!/bin/bash
+# FS QA Test No. 120
+#
+# Test noatime mount option.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2002 Silicon Graphics, 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`
+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
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux IRIX
+
+_require_scratch
+_scratch_mkfs >/dev/null 2>&1 || _fail "mkfs failed"
+
+_compare_access_times()
+{
+       original_access_time="`cat $tmp.out | sed -n '5p'|awk '{ print substr($0,0,32)}'`"
+       accessed_time="`src/lstat64 $1 | sed -n '5p'| awk '{ print substr($0,0,32)}'`"
+       echo "*** compare access times ***"
+       if [ "$original_access_time" != "$accessed_time" ]
+               then
+               echo "*** file access time updated on $2 (unexpected) ***"
+               cat $tmp.out
+               echo "---------------------------------------------------"
+               src/lstat64 $1
+               mount | grep $SCRATCH_MNT
+       fi
+
+}
+
+if ! _scratch_mount "-o noatime" >$tmp.out 2>&1
+then
+    cat $tmp.out
+    echo "!!! mount failed"
+    exit
+fi
+
+#executable file
+echo "*** copying file ***"
+cp src/lstat64 $SCRATCH_MNT
+src/lstat64 $SCRATCH_MNT/lstat64 >$tmp.out
+sleep 5
+echo "*** executing file ***"
+$SCRATCH_MNT/lstat64 $SCRATCH_MNT/lstat64 >/dev/null
+_compare_access_times $SCRATCH_MNT/lstat64 "executing file"
+
+#reading file
+echo "*** creating file ***"
+touch $SCRATCH_MNT/testfile
+src/lstat64 $SCRATCH_MNT/testfile >$tmp.out
+sleep 5
+echo "*** reading file ***"
+cat $SCRATCH_MNT/testfile >/dev/null
+_compare_access_times $SCRATCH_MNT/testfile "reading file"
+
+#writing file
+echo "*** creating file ***"
+touch $SCRATCH_MNT/testfile2
+src/lstat64 $SCRATCH_MNT/testfile2 >$tmp.out
+sleep 5
+echo "*** writing to file ***"
+echo "asdf" >> $SCRATCH_MNT/testfile2
+_compare_access_times $SCRATCH_MNT/testfile2 "writing file"
+
+
+umount $SCRATCH_MNT
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/120.out b/tests/generic/120.out
new file mode 100644 (file)
index 0000000..c0e53a9
--- /dev/null
@@ -0,0 +1,10 @@
+QA output created by 120
+*** copying file ***
+*** executing file ***
+*** compare access times ***
+*** creating file ***
+*** reading file ***
+*** compare access times ***
+*** creating file ***
+*** writing to file ***
+*** compare access times ***
diff --git a/tests/generic/123 b/tests/generic/123
new file mode 100755 (executable)
index 0000000..d45c516
--- /dev/null
@@ -0,0 +1,78 @@
+#! /bin/bash
+# FSQA Test No. 123
+#
+# Make sure user cannot overwrite, append, delete or move a file created by 
+# root. Modified CXFSQA test 940960 and 940558.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd $testdir
+    rm -rf $my_test_subdir
+    cd /
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux IRIX
+
+_require_user
+
+_setup_testdir
+my_test_subdir=$testdir/123subdir
+
+# create subdir with required permissions
+mkdir -m 755 $my_test_subdir
+
+echo foo > $my_test_subdir/data_coherency.txt
+# check basic appending to a file
+echo bar >> $my_test_subdir/data_coherency.txt
+
+# try append
+_user_do "echo goo >> $my_test_subdir/data_coherency.txt" 
+
+# try overwrite 
+_user_do "echo goo > $my_test_subdir/data_coherency.txt" 
+
+# try delete
+_user_do "rm $my_test_subdir/data_coherency.txt" 
+
+# try move
+_user_do "mv $my_test_subdir/data_coherency.txt $my_test_subdir/data_coherency2.txt" 
+
+cat $my_test_subdir/data_coherency.txt
+
+
+exit
diff --git a/tests/generic/123.out b/tests/generic/123.out
new file mode 100644 (file)
index 0000000..5bec5f9
--- /dev/null
@@ -0,0 +1,7 @@
+QA output created by 123
+Permission denied
+Permission denied
+Permission denied
+Permission denied
+foo
+bar
diff --git a/tests/generic/124 b/tests/generic/124
new file mode 100755 (executable)
index 0000000..6fbb028
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/bash
+# FSQA Test No. 124
+#
+# Test preallocated_rw_pattern_test modified from CXFSQA test preallocated_rw_pattern_test
+#
+# pat stands for pattern.  First 8 bytes contains the 64-bit number 0,
+# second is 1, ..., until last 8 bytes (1048568-1048575) contain 131071.
+# patw preallocates the file and then writes the pattern, patr checks it
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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 /
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_setup_testdir
+_require_scratch
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+# Run preallo_rw_pattern on both test and scratch partitions
+for TESTFILE in $testdir/rw_pattern.tmp $SCRATCH_MNT/rw_pattern.tmp
+  do
+  count=1
+  while (( count < 101 ))
+    do
+    src/preallo_rw_pattern_writer $TESTFILE
+    src/preallo_rw_pattern_reader $TESTFILE
+    if (test $? -ne 0) then
+       echo Read/Write Pattern Test FAILED.
+       _cleanup
+       exit 1
+    fi
+    rm $TESTFILE
+    ((count=count+1))
+  done #done for count of  100
+done
+
+if (test $? -eq 0 ) then
+    status=0
+fi
+
+umount $SCRATCH_DEV
+
+_check_test_fs
+_check_scratch_fs
+
+exit 
diff --git a/tests/generic/124.out b/tests/generic/124.out
new file mode 100644 (file)
index 0000000..0129e81
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 124
diff --git a/tests/generic/125 b/tests/generic/125
new file mode 100755 (executable)
index 0000000..c7215a3
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/bash
+# FSQA Test No. 125
+#
+# ftruncate test, modified from CXFSQA tests cxfs_ftrunc and cxfs_trunc
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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()
+{
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_user
+
+_setup_testdir
+
+TESTDIR=$testdir/ftrunc
+TESTFILE=$TESTDIR/ftrunc.tmp
+
+[ -d $TESTDIR ] && rm -r $TESTDIR
+mkdir $TESTDIR
+
+# ftrunc must be run as a mortal user.
+touch $TESTFILE
+
+chmod a+rw $TESTDIR
+chmod a+rw $TESTFILE
+
+su $qa_user -c "./src/ftrunc -f $TESTFILE"
+
+if [ "$?" != "0" ];  then
+    echo src/ftrunc returned non 0 status!
+fi
+
+src/trunc -f $TESTFILE
+if (test $? -eq 0 ) then
+    status=0
+fi
+
+exit
diff --git a/tests/generic/125.out b/tests/generic/125.out
new file mode 100644 (file)
index 0000000..db7afc5
--- /dev/null
@@ -0,0 +1,7 @@
+QA output created by 125
+direct write of 1's into file
+buffered write of 2's into file
+truncate file
+sync buffered data (2's)
+iterate direct reads for 60s or until failure...
+Passed
diff --git a/tests/generic/126 b/tests/generic/126
new file mode 100755 (executable)
index 0000000..a95c1e4
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/bash
+# FSQA Test No. 126
+#
+# tests various file permission options modified from CXFSQA test fs_perms
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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 /
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_setup_testdir
+
+QA_FS_PERMS=$here/src/fs_perms
+
+cd $testdir
+cp $here/src/testx ./testx.file
+
+# file_perm owner_uid owner_gid tester_uid tester_gid perm_to_test expected_result pass=1
+$QA_FS_PERMS 001 99 99 12 100 x 1
+$QA_FS_PERMS 010 99 99 200 99 x 1
+$QA_FS_PERMS 100 99 99 99 500 x 1
+$QA_FS_PERMS 002 99 99 12 100 w 1
+$QA_FS_PERMS 020 99 99 200 99 w 1
+$QA_FS_PERMS 200 99 99 99 500 w 1
+$QA_FS_PERMS 004 99 99 12 100 r 1
+$QA_FS_PERMS 040 99 99 200 99 r 1
+$QA_FS_PERMS 400 99 99 99 500 r 1
+$QA_FS_PERMS 000 99 99 99 99 r 1
+$QA_FS_PERMS 000 99 99 99 99 w 1
+$QA_FS_PERMS 000 99 99 99 99 x 1
+$QA_FS_PERMS 010 99 99 99 500 x 1
+$QA_FS_PERMS 100 99 99 200 99 x 1
+$QA_FS_PERMS 020 99 99 99 500 w 1
+$QA_FS_PERMS 200 99 99 200 99 w 1
+$QA_FS_PERMS 040 99 99 99 500 r 1
+$QA_FS_PERMS 400 99 99 200 99 r 1
+
+status=0
+exit
diff --git a/tests/generic/126.out b/tests/generic/126.out
new file mode 100644 (file)
index 0000000..3347930
--- /dev/null
@@ -0,0 +1,19 @@
+QA output created by 126
+x a 001 file owned by (99/99) as user/group(12/100)  PASS
+x a 010 file owned by (99/99) as user/group(200/99)  PASS
+x a 100 file owned by (99/99) as user/group(99/500)  PASS
+w a 002 file owned by (99/99) as user/group(12/100)  PASS
+w a 020 file owned by (99/99) as user/group(200/99)  PASS
+w a 200 file owned by (99/99) as user/group(99/500)  PASS
+r a 004 file owned by (99/99) as user/group(12/100)  PASS
+r a 040 file owned by (99/99) as user/group(200/99)  PASS
+r a 400 file owned by (99/99) as user/group(99/500)  PASS
+r a 000 file owned by (99/99) as user/group(99/99)  FAIL
+w a 000 file owned by (99/99) as user/group(99/99)  FAIL
+x a 000 file owned by (99/99) as user/group(99/99)  FAIL
+x a 010 file owned by (99/99) as user/group(99/500)  FAIL
+x a 100 file owned by (99/99) as user/group(200/99)  FAIL
+w a 020 file owned by (99/99) as user/group(99/500)  FAIL
+w a 200 file owned by (99/99) as user/group(200/99)  FAIL
+r a 040 file owned by (99/99) as user/group(99/500)  FAIL
+r a 400 file owned by (99/99) as user/group(200/99)  FAIL
diff --git a/tests/generic/127 b/tests/generic/127
new file mode 100755 (executable)
index 0000000..d1101df
--- /dev/null
@@ -0,0 +1,124 @@
+#! /bin/bash
+# FSQA Test No. 127
+#
+# fsx tests modified from CXFSQA tests
+#   - fsx_00_lite
+#   - fsx_05_lite_mmap
+#   - fsx_10_std,
+#   - fsx_15_std_mmap
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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()
+{
+    rm -f $tmp.output
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+FSX_FILE_SIZE=262144
+FSX_ARGS="-q -l $FSX_FILE_SIZE -o 65536 -S 191110531 -N 100000"
+
+_fsx_lite_nommap()
+{
+    echo "=== FSX Light Mode, No Memory Mapping ==="
+    dd if=/dev/zero of=$testdir/fsx_lite_nommap bs=${FSX_FILE_SIZE} count=1 > /dev/null 2>&1
+    if ! ltp/fsx $FSX_ARGS -L -R -W $testdir/fsx_lite_nommap > $tmp.output 2>&1
+    then
+        echo "ltp/fsx $FSX_ARGS -L -R -W $testdir/fsx_lite_nommap"
+        cat $tmp.output
+        return 1
+    fi
+    cat $tmp.output
+    return 0
+}
+
+_fsx_lite_mmap()
+{
+    echo "=== FSX Light Mode, Memory Mapping ==="
+    dd if=/dev/zero of=$testdir/fsx_lite_mmap bs=${FSX_FILE_SIZE} count=1 > /dev/null 2>&1
+    if ! ltp/fsx $FSX_ARGS -L $testdir/fsx_lite_mmap > $tmp.output 2>&1
+    then
+       echo "ltp/fsx $FSX_ARGS -L fsx_lite_mmap"
+       cat $tmp.output
+       return 1
+    fi
+    cat $tmp.output
+    return 0
+}
+
+_fsx_std_nommap()
+{
+    echo "=== FSX Standard Mode, No Memory Mapping ==="
+    if ! ltp/fsx $FSX_ARGS -R -W $testdir/fsx_std_nommap > $tmp.output 2>&1
+    then
+        echo "ltp/fsx $FSX_ARGS -R -W fsx_std_nommap"
+        cat $tmp.output
+        return 1
+    fi
+    cat $tmp.output
+    return 0
+}
+
+_fsx_std_mmap()
+{
+    echo "=== FSX Standard Mode, Memory Mapping ==="
+    if ! ltp/fsx $FSX_ARGS $testdir/fsx_std_mmap > $tmp.output 2>&1
+    then
+       echo "ltp/fsx $FSX_ARGS fsx_std_mmap"
+       cat $tmp.output
+       return 1
+    fi
+    cat $tmp.output
+    return 0
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_setup_testdir
+
+_fsx_lite_nommap
+_fsx_lite_mmap
+
+_fsx_std_nommap
+_fsx_std_mmap
+
+#flush cache after write
+FSX_ARGS="-f $FSX_ARGS"
+_fsx_std_nommap
+_fsx_std_mmap
+
+
+status=0
+_cleanup
+exit
diff --git a/tests/generic/127.out b/tests/generic/127.out
new file mode 100644 (file)
index 0000000..120c20a
--- /dev/null
@@ -0,0 +1,13 @@
+QA output created by 127
+=== FSX Light Mode, No Memory Mapping ===
+All operations completed A-OK!
+=== FSX Light Mode, Memory Mapping ===
+All operations completed A-OK!
+=== FSX Standard Mode, No Memory Mapping ===
+All operations completed A-OK!
+=== FSX Standard Mode, Memory Mapping ===
+All operations completed A-OK!
+=== FSX Standard Mode, No Memory Mapping ===
+All operations completed A-OK!
+=== FSX Standard Mode, Memory Mapping ===
+All operations completed A-OK!
diff --git a/tests/generic/128 b/tests/generic/128
new file mode 100755 (executable)
index 0000000..85d0f45
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/bash
+# FSQA Test No. 128
+#
+# Test nosuid mount option modified from CXFSQA test mount_option_nosuid
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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 /
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_setup_testdir
+_require_scratch
+_require_user
+
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount "-o nosuid"
+
+mkdir $SCRATCH_MNT/nosuid
+cp `which ls` $SCRATCH_MNT
+chmod 700 $SCRATCH_MNT/nosuid
+chmod 4755 $SCRATCH_MNT/ls
+
+su -s/bin/bash - $qa_user -c "$SCRATCH_MNT/ls $SCRATCH_MNT/nosuid >/dev/null 2>&1"
+if [ $? -eq 0 ] ; then
+       echo "Error: we shouldn't be able to ls the directory"
+fi
+umount $SCRATCH_DEV
+
+status=0
+exit
diff --git a/tests/generic/128.out b/tests/generic/128.out
new file mode 100644 (file)
index 0000000..34f24a3
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 128
diff --git a/tests/generic/129 b/tests/generic/129
new file mode 100755 (executable)
index 0000000..18d891b
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/bash
+# FSQA Test No. 129
+#
+# looptests created from CXFSQA test looptest
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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 /
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+echo_and_run()
+{
+    echo "$1"
+    $1
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_scratch
+_require_sparse_files
+
+_setup_testdir
+
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount "-o nosuid"
+
+mkdir $SCRATCH_MNT/looptest
+
+src/looptest -i 100000 -r -w -b 8192 -s $SCRATCH_MNT/looptest/looptest1.tst
+src/looptest -i 10000 -t -r -w -s -b 102400 $SCRATCH_MNT/looptest/looptest2.tst
+src/looptest -i 50000 -r -w -b 256 -s $SCRATCH_MNT/looptest/looptest3.tst
+src/looptest -i 2000 -o -r -w -b 8192 -s $SCRATCH_MNT/looptest/looptest4.tst
+
+status=0
+exit
diff --git a/tests/generic/129.out b/tests/generic/129.out
new file mode 100644 (file)
index 0000000..55b1902
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 129
diff --git a/tests/generic/130 b/tests/generic/130
new file mode 100755 (executable)
index 0000000..943df72
--- /dev/null
@@ -0,0 +1,258 @@
+#! /bin/bash
+# FSQA Test No. 130
+#
+# xfs_io vector read/write and trunc tests. modified from cxfsqa tests
+# - unixfile_basic_block_hole
+# - unixfile_buffer_direct_coherency
+# - unixfile_direct_rw
+# - unixfile_eof_direct
+# - unixfile_fsb_edge
+# - unixfile_open_append
+# - unixfile_open_trunc
+# - unixfile_small_vector_async_rw
+# - unixfile_small_vector_sync_rw
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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 /
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux IRIX
+
+_require_scratch
+_require_sparse_files
+
+_setup_testdir
+
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+echo "End-of-file zeroing with direct I/O"
+xfs_io -F -f -d -t -c "pwrite -S 0x63 0 65536" \
+    -c "truncate 1" \
+    -c "pwrite -S 0x41 65536 65536" \
+    -c "pread -v 0 131072" \
+    $SCRATCH_MNT/eof-zeroing_direct | _filter_xfs_io_unique
+
+echo
+echo "Basic Block Hole test"
+xfs_io -F -f -t -c "truncate 8192" \
+    -c "pread -v 5000 3000" \
+    $SCRATCH_MNT/blackhole | _filter_xfs_io_unique
+
+echo
+echo "Test buffered and direct IO coherency"
+xfs_io -F -f -t -c "pwrite -S 0x41 8000 1000" \
+    -c "pwrite -S 0x57 4000 1000" \
+    $SCRATCH_MNT/buff_direct_coherency | _filter_xfs_io_unique
+
+xfs_io -F -d -c "pwrite -S 0x78 20480 4096"\
+    -c "pwrite -S 0x79 4096 4096"\
+    $SCRATCH_MNT/buff_direct_coherency | _filter_xfs_io_unique
+
+xfs_io -F -c "pread -v 0 9000"\
+    $SCRATCH_MNT/buff_direct_coherency | _filter_xfs_io_unique
+
+echo
+echo "Test direct read and write"
+xfs_io -F -f -d -t -c "pwrite -S 0x78 0 65536"\
+    -c "pread -v 0 65536"\
+    -c "pwrite -S 0x46 65536 6553600"\
+    -c "pread -v 0 6619136"\
+    $SCRATCH_MNT/direct_io | _filter_xfs_io_unique
+
+xfs_io -F -d -c "pread -v 0 6619136"\
+    $SCRATCH_MNT/direct_io | _filter_xfs_io_unique
+
+xfs_io -F -f -d -t -c "pwrite -S 0x61 0 65536"\
+    -c "pread -v 0 65536"\
+    -c "pwrite -S 0x62 65536 131072"\
+    -c "pread -v 0 131072"\
+    $SCRATCH_MNT/async_direct_io | _filter_xfs_io_unique
+
+xfs_io -F -d -c "pread -v 0 131072"\
+    $SCRATCH_MNT/async_direct_io | _filter_xfs_io_unique
+
+echo
+echo "FSB Edge test"
+xfs_io -F -f -t -c "truncate 131072"\
+    -c "pwrite -S 0x5F 0 131072"\
+    -c "truncate 0"\
+    -c "truncate 131072"\
+    -c "pwrite -S 0x61 65535 2"\
+    -c "pread -v 0 131072"\
+    $SCRATCH_MNT/fsb_edge_test | _filter_xfs_io_unique
+
+echo
+echo "Open Trunk test (O_TRUNC)"
+for n in 0 1 2 3 4
+do
+    xfs_io -F -f -t -c "pread -v 0 100" $SCRATCH_MNT/$n | _filter_xfs_io_unique
+
+    echo "Test" > $SCRATCH_MNT/$n
+    xfs_io -F -f -t -c "pread -v 0 100" $SCRATCH_MNT/$n | _filter_xfs_io_unique
+    cat $SCRATCH_MNT/$n
+done
+echo "DONE"
+
+echo
+echo "Append test"
+echo "append to me" > $SCRATCH_MNT/append
+xfs_io -F -a -c "pwrite -S 0x61 0 10" \
+    -c "pread -v 0 24"\
+    $SCRATCH_MNT/append | _filter_xfs_io_unique
+
+echo
+echo "Small Vector Async"
+echo "abcdefghijklmnopqrstuvwxyz" > $SCRATCH_MNT/small_vector_async
+xfs_io -F -f -c "pread -v 0 1"\
+    -c "pread -v 1 1"\
+    -c "pread -v 2 1"\
+    -c "pread -v 3 1"\
+    -c "pread -v 4 1"\
+    -c "pread -v 5 1"\
+    -c "pread -v 6 1"\
+    -c "pread -v 7 1"\
+    -c "pread -v 8 1"\
+    -c "pread -v 9 1"\
+    -c "pread -v 10 1"\
+    -c "pread -v 11 1"\
+    -c "pread -v 12 1"\
+    -c "pread -v 13 13"\
+    -c "pwrite -S 0x61 4090 1"\
+    -c "pwrite -S 0x62 4091 1"\
+    -c "pwrite -S 0x63 4092 1"\
+    -c "pwrite -S 0x64 4093 1"\
+    -c "pwrite -S 0x65 4094 1"\
+    -c "pwrite -S 0x66 4095 1"\
+    -c "pwrite -S 0x67 4096 1"\
+    -c "pwrite -S 0x68 4097 1"\
+    -c "pwrite -S 0x69 4098 1"\
+    -c "pwrite -S 0x6A 4099 1"\
+    -c "pwrite -S 0x6B 4100 1"\
+    -c "pwrite -S 0x6C 4101 1"\
+    -c "pwrite -S 0x6D 4102 1"\
+    -c "pwrite -S 0x6E 4103 1"\
+    -c "pwrite -S 0x6F 4104 1"\
+    -c "pwrite -S 0x70 4105 1"\
+    -c "pread -v 4090 4"\
+    -c "pread -v 4094 4"\
+    -c "pread -v 4098 4"\
+    -c "pread -v 4102 4"\
+    -c "pwrite -S 0x61 10000000000 1"\
+    -c "pwrite -S 0x62 10000000001 1"\
+    -c "pwrite -S 0x63 10000000002 1"\
+    -c "pwrite -S 0x64 10000000003 1"\
+    -c "pwrite -S 0x65 10000000004 1"\
+    -c "pwrite -S 0x66 10000000005 1"\
+    -c "pwrite -S 0x67 10000000006 1"\
+    -c "pwrite -S 0x68 10000000007 1"\
+    -c "pwrite -S 0x69 10000000008 1"\
+    -c "pwrite -S 0x6A 10000000009 1"\
+    -c "pwrite -S 0x6B 10000000010 1"\
+    -c "pwrite -S 0x6C 10000000011 1"\
+    -c "pwrite -S 0x6D 10000000012 1"\
+    -c "pwrite -S 0x6E 10000000013 1"\
+    -c "pwrite -S 0x6F 10000000014 1"\
+    -c "pwrite -S 0x70 10000000015 1"\
+    -c "pread -v 10000000000 4"\
+    -c "pread -v 10000000004 4"\
+    -c "pread -v 10000000008 4"\
+    -c "pread -v 10000000012 4"\
+    $SCRATCH_MNT/small_vector_async | _filter_xfs_io_unique
+
+echo
+echo "Small Vector Sync"
+echo "abcdefghijklmnopqrstuvwxyz" > $SCRATCH_MNT/small_vector_async
+xfs_io -F -f -s -c "pread -v 0 1"\
+    -c "pread -v 1 1"\
+    -c "pread -v 2 1"\
+    -c "pread -v 3 1"\
+    -c "pread -v 4 1"\
+    -c "pread -v 5 1"\
+    -c "pread -v 6 1"\
+    -c "pread -v 7 1"\
+    -c "pread -v 8 1"\
+    -c "pread -v 9 1"\
+    -c "pread -v 10 1"\
+    -c "pread -v 11 1"\
+    -c "pread -v 12 1"\
+    -c "pread -v 13 13"\
+    -c "pwrite -S 0x61 4090 1"\
+    -c "pwrite -S 0x62 4091 1"\
+    -c "pwrite -S 0x63 4092 1"\
+    -c "pwrite -S 0x64 4093 1"\
+    -c "pwrite -S 0x65 4094 1"\
+    -c "pwrite -S 0x66 4095 1"\
+    -c "pwrite -S 0x67 4096 1"\
+    -c "pwrite -S 0x68 4097 1"\
+    -c "pwrite -S 0x69 4098 1"\
+    -c "pwrite -S 0x6A 4099 1"\
+    -c "pwrite -S 0x6B 4100 1"\
+    -c "pwrite -S 0x6C 4101 1"\
+    -c "pwrite -S 0x6D 4102 1"\
+    -c "pwrite -S 0x6E 4103 1"\
+    -c "pwrite -S 0x6F 4104 1"\
+    -c "pwrite -S 0x70 4105 1"\
+    -c "pread -v 4090 4"\
+    -c "pread -v 4094 4"\
+    -c "pread -v 4098 4"\
+    -c "pread -v 4102 4"\
+    -c "pwrite -S 0x61 10000000000 1"\
+    -c "pwrite -S 0x62 10000000001 1"\
+    -c "pwrite -S 0x63 10000000002 1"\
+    -c "pwrite -S 0x64 10000000003 1"\
+    -c "pwrite -S 0x65 10000000004 1"\
+    -c "pwrite -S 0x66 10000000005 1"\
+    -c "pwrite -S 0x67 10000000006 1"\
+    -c "pwrite -S 0x68 10000000007 1"\
+    -c "pwrite -S 0x69 10000000008 1"\
+    -c "pwrite -S 0x6A 10000000009 1"\
+    -c "pwrite -S 0x6B 10000000010 1"\
+    -c "pwrite -S 0x6C 10000000011 1"\
+    -c "pwrite -S 0x6D 10000000012 1"\
+    -c "pwrite -S 0x6E 10000000013 1"\
+    -c "pwrite -S 0x6F 10000000014 1"\
+    -c "pwrite -S 0x70 10000000015 1"\
+    -c "pread -v 10000000000 4"\
+    -c "pread -v 10000000004 4"\
+    -c "pread -v 10000000008 4"\
+    -c "pread -v 10000000012 4"\
+    $SCRATCH_MNT/small_vector_async | _filter_xfs_io_unique
+
+status=0
+exit
diff --git a/tests/generic/130.out b/tests/generic/130.out
new file mode 100644 (file)
index 0000000..e4a2495
--- /dev/null
@@ -0,0 +1,392 @@
+QA output created by 130
+End-of-file zeroing with direct I/O
+wrote 65536/65536 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 65536/65536 bytes at offset 65536
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  c...............
+00000010:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+00010000:  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
+*
+read 131072/131072 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
+Basic Block Hole test
+00001388:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+00001f38:  00 00 00 00 00 00 00 00  ........
+read 3000/3000 bytes at offset 5000
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
+Test buffered and direct IO coherency
+wrote 1000/1000 bytes at offset 8000
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1000/1000 bytes at offset 4000
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 4096/4096 bytes at offset 20480
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 4096/4096 bytes at offset 4096
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+00000fa0:  57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57  WWWWWWWWWWWWWWWW
+*
+00001000:  79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79  yyyyyyyyyyyyyyyy
+*
+00002000:  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
+*
+00002320:  41 41 41 41 41 41 41 41  AAAAAAAA
+read 9000/9000 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
+Test direct read and write
+wrote 65536/65536 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
+*
+read 65536/65536 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 6553600/6553600 bytes at offset 65536
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
+*
+00010000:  46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46  FFFFFFFFFFFFFFFF
+*
+read 6619136/6619136 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
+*
+00010000:  46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46  FFFFFFFFFFFFFFFF
+*
+read 6619136/6619136 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 65536/65536 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61  aaaaaaaaaaaaaaaa
+*
+read 65536/65536 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 131072/131072 bytes at offset 65536
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61  aaaaaaaaaaaaaaaa
+*
+00010000:  62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62  bbbbbbbbbbbbbbbb
+*
+read 131072/131072 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61  aaaaaaaaaaaaaaaa
+*
+00010000:  62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62  bbbbbbbbbbbbbbbb
+*
+read 131072/131072 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
+FSB Edge test
+wrote 131072/131072 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 2/2 bytes at offset 65535
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+0000fff0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61  ...............a
+00010000:  61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  a...............
+00010010:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+read 131072/131072 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
+Open Trunk test (O_TRUNC)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 0/100 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+DONE
+
+Append test
+wrote 10/10 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  61 70 70 65 6e 64 20 74 6f 20 6d 65 0a 61 61 61  append.to.me.aaa
+00000010:  61 61 61 61 61 61 61  aaaaaaa
+read 23/24 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
+Small Vector Async
+00000000:  61  a
+read 1/1 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000001:  62  b
+read 1/1 bytes at offset 1
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000002:  63  c
+read 1/1 bytes at offset 2
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000003:  64  d
+read 1/1 bytes at offset 3
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000004:  65  e
+read 1/1 bytes at offset 4
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000005:  66  f
+read 1/1 bytes at offset 5
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000006:  67  g
+read 1/1 bytes at offset 6
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000007:  68  h
+read 1/1 bytes at offset 7
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000008:  69  i
+read 1/1 bytes at offset 8
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000009:  6a  j
+read 1/1 bytes at offset 9
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+0000000a:  6b  k
+read 1/1 bytes at offset 10
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+0000000b:  6c  l
+read 1/1 bytes at offset 11
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+0000000c:  6d  m
+read 1/1 bytes at offset 12
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+0000000d:  6e 6f 70 71 72 73 74 75 76 77 78 79 7a  nopqrstuvwxyz
+read 13/13 bytes at offset 13
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4090
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4091
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4092
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4093
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4094
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4095
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4096
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4097
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4098
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4099
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4100
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4101
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4102
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4103
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4104
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4105
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000ffa:  61 62 63 64  abcd
+read 4/4 bytes at offset 4090
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000ffe:  65 66 67 68  efgh
+read 4/4 bytes at offset 4094
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001002:  69 6a 6b 6c  ijkl
+read 4/4 bytes at offset 4098
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001006:  6d 6e 6f 70  mnop
+read 4/4 bytes at offset 4102
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000000
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000001
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000002
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000003
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000004
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000005
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000006
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000007
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000008
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000009
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000010
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000011
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000012
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000013
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000014
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000015
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+2540be400:  61 62 63 64  abcd
+read 4/4 bytes at offset 10000000000
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+2540be404:  65 66 67 68  efgh
+read 4/4 bytes at offset 10000000004
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+2540be408:  69 6a 6b 6c  ijkl
+read 4/4 bytes at offset 10000000008
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+2540be40c:  6d 6e 6f 70  mnop
+read 4/4 bytes at offset 10000000012
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
+Small Vector Sync
+00000000:  61  a
+read 1/1 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000001:  62  b
+read 1/1 bytes at offset 1
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000002:  63  c
+read 1/1 bytes at offset 2
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000003:  64  d
+read 1/1 bytes at offset 3
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000004:  65  e
+read 1/1 bytes at offset 4
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000005:  66  f
+read 1/1 bytes at offset 5
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000006:  67  g
+read 1/1 bytes at offset 6
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000007:  68  h
+read 1/1 bytes at offset 7
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000008:  69  i
+read 1/1 bytes at offset 8
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000009:  6a  j
+read 1/1 bytes at offset 9
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+0000000a:  6b  k
+read 1/1 bytes at offset 10
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+0000000b:  6c  l
+read 1/1 bytes at offset 11
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+0000000c:  6d  m
+read 1/1 bytes at offset 12
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+0000000d:  6e 6f 70 71 72 73 74 75 76 77 78 79 7a  nopqrstuvwxyz
+read 13/13 bytes at offset 13
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4090
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4091
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4092
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4093
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4094
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4095
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4096
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4097
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4098
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4099
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4100
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4101
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4102
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4103
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4104
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 4105
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000ffa:  61 62 63 64  abcd
+read 4/4 bytes at offset 4090
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000ffe:  65 66 67 68  efgh
+read 4/4 bytes at offset 4094
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001002:  69 6a 6b 6c  ijkl
+read 4/4 bytes at offset 4098
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001006:  6d 6e 6f 70  mnop
+read 4/4 bytes at offset 4102
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000000
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000001
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000002
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000003
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000004
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000005
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000006
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000007
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000008
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000009
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000010
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000011
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000012
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000013
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000014
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1/1 bytes at offset 10000000015
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+2540be400:  61 62 63 64  abcd
+read 4/4 bytes at offset 10000000000
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+2540be404:  65 66 67 68  efgh
+read 4/4 bytes at offset 10000000004
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+2540be408:  69 6a 6b 6c  ijkl
+read 4/4 bytes at offset 10000000008
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+2540be40c:  6d 6e 6f 70  mnop
+read 4/4 bytes at offset 10000000012
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
diff --git a/tests/generic/131 b/tests/generic/131
new file mode 100755 (executable)
index 0000000..176c8b4
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/bash
+# FSQA Test No. 131
+#
+# lock test created from CXFSQA test lockfile_simple
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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()
+{
+    kill $locktest_pid2 2&>1 /dev/null
+    kill $locktest_pid1 2&>1 /dev/null
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_setup_testdir
+
+TESTFILE=$testdir/lock_file
+
+# Grab a port which is hopefully unused
+if [ $$ -gt 1024 -a $$ -lt 32000 ]; then
+    PORT=$$
+elif [ $$ -lt 1024 ]; then
+    PORT=$(($$+1024))
+elif [ $$ -gt 32000 ]; then
+    PORT=$(($$%30000+1024))
+fi
+
+# Start the server
+src/locktest -p $PORT $TESTFILE > $testdir/server.out 2>&1 &
+locktest_pid1=$!
+
+sleep 1
+
+# Start the client
+src/locktest -p $PORT -h localhost $TESTFILE > $testdir/client.out 2>&1
+locktest_pid2=$!
+result=$?
+if [ $result -eq 0 ]; then
+    echo success!
+else
+    echo "Client reported failure ($result)"
+    cat $testdir/*.out
+    _cleanup
+    exit $status
+fi
+
+status=0
+exit
diff --git a/tests/generic/131.out b/tests/generic/131.out
new file mode 100644 (file)
index 0000000..aef9f6c
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 131
+success!
diff --git a/tests/generic/132 b/tests/generic/132
new file mode 100755 (executable)
index 0000000..98229a9
--- /dev/null
@@ -0,0 +1,212 @@
+#! /bin/bash
+# FSQA Test No. 132
+#
+# xfs_io aligned vector rw created from CXFSQA test
+# unixfile_vector_aligned_rw
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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 /
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux IRIX
+
+_setup_testdir
+_require_scratch
+
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+xfs_io -F -f -t -c "pwrite -S 0x63 0 512" \
+    -c "pwrite -S 0x64 512 512" \
+    -c "pwrite -S 0x65 1024 512" \
+    -c "pwrite -S 0x66 1536 512" \
+    -c "pwrite -S 0x67 2048 512" \
+    -c "pwrite -S 0x68 2560 512" \
+    -c "pwrite -S 0x69 3072 512" \
+    -c "pwrite -S 0x6A 3584 512" \
+    -c "pread -v 0 512" \
+    -c "pread -v 512 512" \
+    -c "pread -v 1024 512" \
+    -c "pread -v 1536 512" \
+    -c "pread -v 2048 512" \
+    -c "pread -v 2560 512" \
+    -c "pread -v 3072 512" \
+    -c "pread -v 3584 512" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x63 4096 1024" \
+    -c "pwrite -S 0x6B 5120 1024" \
+    -c "pwrite -S 0x6C 6144 1024" \
+    -c "pwrite -S 0x6D 7168 1024" \
+    -c "pread -v 0 1024" \
+    -c "pread -v 1024 1024" \
+    -c "pread -v 2048 1024" \
+    -c "pread -v 3072 1024" \
+    -c "pread -v 4096 1024" \
+    -c "pread -v 5120 1024" \
+    -c "pread -v 6144 1024" \
+    -c "pread -v 7168 1024" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x6E 8192 2048" \
+    -c "pwrite -S 0x6F 10240 2048" \
+    -c "pread -v 0 2048" \
+    -c "pread -v 2048 2048" \
+    -c "pread -v 4096 2048" \
+    -c "pread -v 6144 2048" \
+    -c "pread -v 8192 2048" \
+    -c "pread -v 10240 2048" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x70 12288 4096" \
+    -c "pread -v 0 4096" \
+    -c "pread -v 4096 4096" \
+    -c "pread -v 8192 4096" \
+    -c "pread -v 12288 4096" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x71 16384 8192" \
+    -c "pwrite -S 0x72 24576 8192" \
+    -c "pread -v 0 8192" \
+    -c "pread -v 8192 8192" \
+    -c "pread -v 8192 8192" \
+    -c "pread -v 16384 8192" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x73 32768 16384" \
+    -c "pwrite -S 0x74 49152 16384" \
+    -c "pread -v 0 16384" \
+    -c "pread -v 16384 16384" \
+    -c "pread -v 32768 16384" \
+    -c "pread -v 49152 16384" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x75 65536 32768" \
+    -c "pwrite -S 0x76 98304 32768" \
+    -c "pread -v 0 32768" \
+    -c "pread -v 32768 32768" \
+    -c "pread -v 65536 32768" \
+    -c "pread -v 98304 32768" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x76 131072 65536" \
+    -c "pwrite -S 0x77 196608 65536" \
+    -c "pread -v 0 65536" \
+    -c "pread -v 65536 65536" \
+    -c "pread -v 131072 65536" \
+    -c "pread -v 196608 65536" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x76 262144 131072" \
+    -c "pwrite -S 0x77 393216 131072" \
+    -c "pread -v 0 131072" \
+    -c "pread -v 131072 131072" \
+    -c "pread -v 262144 131072" \
+    -c "pread -v 393216 131072" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x76 524288 524288" \
+    -c "pwrite -S 0x77 1048576 524288" \
+    -c "pread -v 0 524288" \
+    -c "pread -v 524288 524288" \
+    -c "pread -v 1048576 524288" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x32 1048576 1048576" \
+    -c "pwrite -S 0x33 2097152 1048576" \
+    -c "pwrite -S 0x34 3145728 1048576" \
+    -c "pwrite -S 0x35 4194304 1048576" \
+    -c "pwrite -S 0x36 5242880 1048576" \
+    -c "pwrite -S 0x37 6291456 1048576" \
+    -c "pwrite -S 0x38 7340032 1048576" \
+    -c "pwrite -S 0x39 8388608 1048576" \
+    -c "pread -v 0 1048576" \
+    -c "pread -v 1048576 1048576" \
+    -c "pread -v 2097152 1048576" \
+    -c "pread -v 3145728 1048576" \
+    -c "pread -v 4194304 1048576" \
+    -c "pread -v 5242880 1048576" \
+    -c "pread -v 6291456 1048576" \
+    -c "pread -v 7340032 1048576" \
+    -c "pread -v 8388608 1048576" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x32 1048576 1048576" \
+    -c "pwrite -S 0x33 2097152 1048576" \
+    -c "pwrite -S 0x34 3145728 1048576" \
+    -c "pwrite -S 0x35 4194304 1048576" \
+    -c "pwrite -S 0x36 5242880 1048576" \
+    -c "pwrite -S 0x37 6291456 1048576" \
+    -c "pwrite -S 0x38 7340032 1048576" \
+    -c "pwrite -S 0x39 8388608 1048576" \
+    -c "pwrite -S 0x3A 9437184 1048576" \
+    -c "pread -v 0 1048576" \
+    -c "pread -v 1048576 1048576" \
+    -c "pread -v 2097152 1048576" \
+    -c "pread -v 3145728 1048576" \
+    -c "pread -v 4194304 1048576" \
+    -c "pread -v 5242880 1048576" \
+    -c "pread -v 6291456 1048576" \
+    -c "pread -v 7340032 1048576" \
+    -c "pread -v 8388608 1048576" \
+    -c "pread -v 9437184 1048576" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+xfs_io -F -f -c "pwrite -S 0x92 10485760 10485760" \
+    -c "pwrite -S 0x93 20971520 10485760" \
+    -c "pwrite -S 0x94 31457280 10485760" \
+    -c "pwrite -S 0x95 41943040 10485760" \
+    -c "pwrite -S 0x96 52428800 10485760" \
+    -c "pwrite -S 0x97 62914560 10485760" \
+    -c "pwrite -S 0x98 73400320 10485760" \
+    -c "pwrite -S 0x99 83886080 10485760" \
+    -c "pwrite -S 0x9A 94371840 10485760" \
+    -c "pread -v 0 10485760" \
+    -c "pread -v 10485760 10485760" \
+    -c "pread -v 20971520 10485760" \
+    -c "pread -v 31457280 10485760" \
+    -c "pread -v 41943040 10485760" \
+    -c "pread -v 52428800 10485760" \
+    -c "pread -v 62914560 10485760" \
+    -c "pread -v 73400320 10485760" \
+    -c "pread -v 83886080 10485760" \
+    -c "pread -v 94371840 10485760" \
+    $SCRATCH_MNT/aligned_vector_rw | _filter_xfs_io_unique
+
+status=0
+exit
diff --git a/tests/generic/132.out b/tests/generic/132.out
new file mode 100644 (file)
index 0000000..ab04044
--- /dev/null
@@ -0,0 +1,847 @@
+QA output created by 132
+wrote 512/512 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 512/512 bytes at offset 512
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 512/512 bytes at offset 1024
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 512/512 bytes at offset 1536
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 512/512 bytes at offset 2048
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 512/512 bytes at offset 2560
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 512/512 bytes at offset 3072
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 512/512 bytes at offset 3584
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+read 512/512 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+read 512/512 bytes at offset 512
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+read 512/512 bytes at offset 1024
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+read 512/512 bytes at offset 1536
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+read 512/512 bytes at offset 2048
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+read 512/512 bytes at offset 2560
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+read 512/512 bytes at offset 3072
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+read 512/512 bytes at offset 3584
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1024/1024 bytes at offset 4096
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1024/1024 bytes at offset 5120
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1024/1024 bytes at offset 6144
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1024/1024 bytes at offset 7168
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+read 1024/1024 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+read 1024/1024 bytes at offset 1024
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+read 1024/1024 bytes at offset 2048
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+read 1024/1024 bytes at offset 3072
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+read 1024/1024 bytes at offset 4096
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+read 1024/1024 bytes at offset 5120
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+read 1024/1024 bytes at offset 6144
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+read 1024/1024 bytes at offset 7168
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 2048/2048 bytes at offset 8192
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 2048/2048 bytes at offset 10240
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+read 2048/2048 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+read 2048/2048 bytes at offset 2048
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+read 2048/2048 bytes at offset 4096
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+read 2048/2048 bytes at offset 6144
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+read 2048/2048 bytes at offset 8192
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+read 2048/2048 bytes at offset 10240
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 4096/4096 bytes at offset 12288
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+read 4096/4096 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+read 4096/4096 bytes at offset 4096
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+read 4096/4096 bytes at offset 8192
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+read 4096/4096 bytes at offset 12288
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 8192/8192 bytes at offset 16384
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 8192/8192 bytes at offset 24576
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+read 8192/8192 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+read 8192/8192 bytes at offset 8192
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+read 8192/8192 bytes at offset 8192
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
+*
+read 8192/8192 bytes at offset 16384
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 16384/16384 bytes at offset 32768
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 16384/16384 bytes at offset 49152
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+read 16384/16384 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
+*
+00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
+*
+read 16384/16384 bytes at offset 16384
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
+*
+read 16384/16384 bytes at offset 32768
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
+*
+read 16384/16384 bytes at offset 49152
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 32768/32768 bytes at offset 65536
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 32768/32768 bytes at offset 98304
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
+*
+00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
+*
+read 32768/32768 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
+*
+0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
+*
+read 32768/32768 bytes at offset 32768
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
+*
+read 32768/32768 bytes at offset 65536
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+read 32768/32768 bytes at offset 98304
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 65536/65536 bytes at offset 131072
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 65536/65536 bytes at offset 196608
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
+*
+00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
+*
+00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
+*
+0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
+*
+read 65536/65536 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
+*
+00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+read 65536/65536 bytes at offset 65536
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00020000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+read 65536/65536 bytes at offset 131072
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+read 65536/65536 bytes at offset 196608
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 131072/131072 bytes at offset 262144
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 131072/131072 bytes at offset 393216
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
+*
+00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
+*
+00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
+*
+0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
+*
+00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
+*
+00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+read 131072/131072 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00020000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+read 131072/131072 bytes at offset 131072
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+read 131072/131072 bytes at offset 262144
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+read 131072/131072 bytes at offset 393216
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 524288/524288 bytes at offset 524288
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 524288/524288 bytes at offset 1048576
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
+*
+00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
+*
+00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
+*
+0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
+*
+00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
+*
+00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+read 524288/524288 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00080000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+read 524288/524288 bytes at offset 524288
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00100000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+read 524288/524288 bytes at offset 1048576
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 1048576
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 2097152
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 3145728
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 4194304
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 5242880
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 6291456
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 7340032
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 8388608
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
+*
+00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
+*
+00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
+*
+0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
+*
+00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
+*
+00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+00080000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+read 1048576/1048576 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00100000:  32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32  2222222222222222
+*
+read 1048576/1048576 bytes at offset 1048576
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00200000:  33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33  3333333333333333
+*
+read 1048576/1048576 bytes at offset 2097152
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00300000:  34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34  4444444444444444
+*
+read 1048576/1048576 bytes at offset 3145728
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00400000:  35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35  5555555555555555
+*
+read 1048576/1048576 bytes at offset 4194304
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00500000:  36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36  6666666666666666
+*
+read 1048576/1048576 bytes at offset 5242880
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00600000:  37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37  7777777777777777
+*
+read 1048576/1048576 bytes at offset 6291456
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00700000:  38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38  8888888888888888
+*
+read 1048576/1048576 bytes at offset 7340032
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00800000:  39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39  9999999999999999
+*
+read 1048576/1048576 bytes at offset 8388608
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 1048576
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 2097152
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 3145728
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 4194304
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 5242880
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 6291456
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 7340032
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 8388608
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 1048576/1048576 bytes at offset 9437184
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
+*
+00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
+*
+00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
+*
+0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
+*
+00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
+*
+00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+00080000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+read 1048576/1048576 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00100000:  32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32  2222222222222222
+*
+read 1048576/1048576 bytes at offset 1048576
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00200000:  33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33  3333333333333333
+*
+read 1048576/1048576 bytes at offset 2097152
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00300000:  34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34  4444444444444444
+*
+read 1048576/1048576 bytes at offset 3145728
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00400000:  35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35  5555555555555555
+*
+read 1048576/1048576 bytes at offset 4194304
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00500000:  36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36  6666666666666666
+*
+read 1048576/1048576 bytes at offset 5242880
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00600000:  37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37  7777777777777777
+*
+read 1048576/1048576 bytes at offset 6291456
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00700000:  38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38  8888888888888888
+*
+read 1048576/1048576 bytes at offset 7340032
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00800000:  39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39  9999999999999999
+*
+read 1048576/1048576 bytes at offset 8388608
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00900000:  3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a  ................
+*
+read 1048576/1048576 bytes at offset 9437184
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 10485760/10485760 bytes at offset 10485760
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 10485760/10485760 bytes at offset 20971520
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 10485760/10485760 bytes at offset 31457280
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 10485760/10485760 bytes at offset 41943040
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 10485760/10485760 bytes at offset 52428800
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 10485760/10485760 bytes at offset 62914560
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 10485760/10485760 bytes at offset 73400320
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 10485760/10485760 bytes at offset 83886080
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 10485760/10485760 bytes at offset 94371840
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00000200:  64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64  dddddddddddddddd
+*
+00000400:  65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65  eeeeeeeeeeeeeeee
+*
+00000600:  66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66  ffffffffffffffff
+*
+00000800:  67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67  gggggggggggggggg
+*
+00000a00:  68 68 68 68 68 68 68 68 68 68 68 68 68 68 68 68  hhhhhhhhhhhhhhhh
+*
+00000c00:  69 69 69 69 69 69 69 69 69 69 69 69 69 69 69 69  iiiiiiiiiiiiiiii
+*
+00000e00:  6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a  jjjjjjjjjjjjjjjj
+*
+00001000:  63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
+*
+00001400:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
+*
+00001800:  6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c 6c  llllllllllllllll
+*
+00001c00:  6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d 6d  mmmmmmmmmmmmmmmm
+*
+00002000:  6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e 6e  nnnnnnnnnnnnnnnn
+*
+00002800:  6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f 6f  oooooooooooooooo
+*
+00003000:  70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70  pppppppppppppppp
+*
+00004000:  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
+*
+00006000:  72 72 72 72 72 72 72 72 72 72 72 72 72 72 72 72  rrrrrrrrrrrrrrrr
+*
+00008000:  73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73  ssssssssssssssss
+*
+0000c000:  74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74  tttttttttttttttt
+*
+00010000:  75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75  uuuuuuuuuuuuuuuu
+*
+00018000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00030000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+00040000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00060000:  77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77  wwwwwwwwwwwwwwww
+*
+00080000:  76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76  vvvvvvvvvvvvvvvv
+*
+00100000:  32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32  2222222222222222
+*
+00200000:  33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33  3333333333333333
+*
+00300000:  34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34  4444444444444444
+*
+00400000:  35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35  5555555555555555
+*
+00500000:  36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36  6666666666666666
+*
+00600000:  37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37  7777777777777777
+*
+00700000:  38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38  8888888888888888
+*
+00800000:  39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39  9999999999999999
+*
+00900000:  3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a  ................
+*
+read 10485760/10485760 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00a00000:  92 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92  ................
+*
+read 10485760/10485760 bytes at offset 10485760
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+01400000:  93 93 93 93 93 93 93 93 93 93 93 93 93 93 93 93  ................
+*
+read 10485760/10485760 bytes at offset 20971520
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+01e00000:  94 94 94 94 94 94 94 94 94 94 94 94 94 94 94 94  ................
+*
+read 10485760/10485760 bytes at offset 31457280
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+02800000:  95 95 95 95 95 95 95 95 95 95 95 95 95 95 95 95  ................
+*
+read 10485760/10485760 bytes at offset 41943040
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+03200000:  96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96  ................
+*
+read 10485760/10485760 bytes at offset 52428800
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+03c00000:  97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97  ................
+*
+read 10485760/10485760 bytes at offset 62914560
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+04600000:  98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98  ................
+*
+read 10485760/10485760 bytes at offset 73400320
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+05000000:  99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99  ................
+*
+read 10485760/10485760 bytes at offset 83886080
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+05a00000:  9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a 9a  ................
+*
+read 10485760/10485760 bytes at offset 94371840
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
diff --git a/tests/generic/133 b/tests/generic/133
new file mode 100755 (executable)
index 0000000..ec225f3
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/bash
+# FSQA Test No. 133
+#
+# Concurrent I/O to same file to ensure no deadlocks
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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()
+{
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux IRIX
+
+_setup_testdir
+
+echo "Buffered writer, buffered reader"
+xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test > /dev/null
+xfs_io -F -f -c 'pwrite -b 64k 0 512m' $testdir/io_test >/dev/null &
+xfs_io -F -c 'pread -b 64k 0 512m' $testdir/io_test > /dev/null
+wait
+rm $testdir/io_test
+
+echo "Direct writer, buffered reader"
+xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test > /dev/null
+xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test >/dev/null &
+xfs_io -F -c 'pread -b 64k 0 512m' $testdir/io_test > /dev/null
+wait
+rm $testdir/io_test
+
+echo "Buffered writer, direct reader"
+xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test > /dev/null
+xfs_io -F -f -c 'pwrite -b 64k 0 512m' $testdir/io_test >/dev/null &
+xfs_io -F -d -c 'pread -b 64k 0 512m' $testdir/io_test > /dev/null
+wait
+rm $testdir/io_test
+
+echo "Direct writer, direct reader"
+xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test > /dev/null
+xfs_io -F -f -d -c 'pwrite -b 64k 0 512m' $testdir/io_test >/dev/null &
+xfs_io -F -d -c 'pread -b 64k 0 512m' $testdir/io_test > /dev/null
+wait
+rm $testdir/io_test
+
+status=0
+exit 
diff --git a/tests/generic/133.out b/tests/generic/133.out
new file mode 100644 (file)
index 0000000..205e7dd
--- /dev/null
@@ -0,0 +1,5 @@
+QA output created by 133
+Buffered writer, buffered reader
+Direct writer, buffered reader
+Buffered writer, direct reader
+Direct writer, direct reader
diff --git a/tests/generic/135 b/tests/generic/135
new file mode 100755 (executable)
index 0000000..f0bf9b9
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/bash
+# FSQA Test No. 135
+#
+# Concurrent I/O to same file to ensure no deadlocks
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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 /
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux IRIX
+
+_setup_testdir
+_require_scratch
+_scratch_mkfs >/dev/null 2>&1
+
+_umount_mount()
+{
+    CWD=`pwd`
+    cd /
+    # pipe error into /dev/null, in case not mounted (after _require_scratch)
+    umount $SCRATCH_MNT 2>/dev/null
+    _scratch_mount
+    cd "$CWD"
+}
+
+
+
+_umount_mount
+
+cd $SCRATCH_MNT
+
+# create file with async I/O
+xfs_io -F -f -c 'pwrite -b 4k -S 0x12 0 4k' async_file > /dev/null
+
+# create file with sync I/O
+xfs_io -F -f -s -c 'pwrite -b 4k -S 0x34 0 4k' sync_file > /dev/null
+
+# create file with sync I/O
+xfs_io -F -f -d -c 'pwrite -b 4k -S 0x56 0 4k' direct_file > /dev/null
+
+# create file, truncate and then dirty again
+xfs_io -F -f -c 'pwrite -b 4k -S 0x78 0 4k' trunc_file > /dev/null
+xfs_io -F -f -c 'truncate 2k' trunc_file > /dev/null
+xfs_io -F -c 'pwrite 1k 0 1k' trunc_file > /dev/null
+
+_umount_mount
+
+# check file size and contents
+od -Ad -x async_file
+od -Ad -x sync_file
+od -Ad -x direct_file
+od -Ad -x trunc_file
+
+rm -f async_file sync_file direct_file trunc_file
+
+status=0
+exit 
diff --git a/tests/generic/135.out b/tests/generic/135.out
new file mode 100644 (file)
index 0000000..64eb427
--- /dev/null
@@ -0,0 +1,13 @@
+QA output created by 135
+0000000 1212 1212 1212 1212 1212 1212 1212 1212
+*
+0004096
+0000000 3434 3434 3434 3434 3434 3434 3434 3434
+*
+0004096
+0000000 5656 5656 5656 5656 5656 5656 5656 5656
+*
+0004096
+0000000 7878 7878 7878 7878 7878 7878 7878 7878
+*
+0002048
diff --git a/tests/generic/141 b/tests/generic/141
new file mode 100755 (executable)
index 0000000..45c1b5e
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/bash
+# FSQA Test No. 141
+#
+# Test for xfs_io mmap read problem
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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()
+{
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_setup_testdir
+_require_scratch
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+# create file, mmap a region and mmap read it
+file=$SCRATCH_MNT/mmap
+
+xfs_io -F -f -c "pwrite 0 1024k" -c "mmap 64k 64k" -c "mread -r" $file > /dev/null
+
+rm -f $file
+
+status=0
+exit 
diff --git a/tests/generic/141.out b/tests/generic/141.out
new file mode 100644 (file)
index 0000000..53ae588
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 141
diff --git a/tests/generic/169 b/tests/generic/169
new file mode 100755 (executable)
index 0000000..413a86b
--- /dev/null
@@ -0,0 +1,107 @@
+#! /bin/bash
+# FSQA Test No. 169
+#
+# Test for file size consistency with append followed by umount/mount
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2007 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+rm -f $seq.full
+status=1    # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+       cd /
+       rm -f $tmp.*
+}
+
+_show_wrote_and_stat_only()
+{
+       # filer out xfs_io bits we are interested in
+       perl -ne '
+               if (/^wrote/) { print } ;
+               if (/^stat\.size/) { print } ;
+       '
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_scratch
+
+_scratch_mkfs >>$seq.full 2>&1 \
+       || _fail "mkfs scratch failed"
+
+_scratch_mount >>$seq.full 2>&1 \
+    || _fail "mount failed: $MOUNT_OPTIONS"
+
+echo "# creating new file for io"
+touch $SCRATCH_MNT/testfile
+
+echo "# appending 15k to new file, sync every 5k"
+xfs_io -F -a -c "pwrite 0 5k" -c "fsync" \
+       -c "pwrite 5k 5k" -c "fsync" \
+       -c "pwrite 10k 5k" -c "fsync" -c "stat" \
+       $SCRATCH_MNT/testfile \
+       | _show_wrote_and_stat_only
+
+echo "# unmounting scratch"
+umount $SCRATCH_MNT>>$seq.full 2>&1 \
+    || _fail "unmount failed"
+
+echo "# mounting scratch"
+_scratch_mount >>$seq.full 2>&1 \
+    || _fail "mount failed: $MOUNT_OPTIONS"
+
+echo "# stating file to confirm correct size"
+xfs_io -F -r -c "stat" $SCRATCH_MNT/testfile \
+       | _show_wrote_and_stat_only
+
+echo "# appending 10 bytes to new file, sync at 5 bytes"
+xfs_io -F -f -c "pwrite 0 5" -c s -c "pwrite 5 5" \
+       -c "stat" $SCRATCH_MNT/nextfile \
+       | _show_wrote_and_stat_only
+
+echo "# unmounting scratch"
+umount $SCRATCH_MNT>>$seq.full 2>&1 \
+    || _fail "unmount failed"
+
+echo "# mounting scratch"
+_scratch_mount >>$seq.full 2>&1 \
+    || _fail "mount failed: $MOUNT_OPTIONS"
+
+echo "# stating file to confirm correct size"
+xfs_io -F -r -c "stat" $SCRATCH_MNT/nextfile \
+    | _show_wrote_and_stat_only
+
+# success, all done
+status=0
+exit
+
diff --git a/tests/generic/169.out b/tests/generic/169.out
new file mode 100644 (file)
index 0000000..22a5b77
--- /dev/null
@@ -0,0 +1,19 @@
+QA output created by 169
+# creating new file for io
+# appending 15k to new file, sync every 5k
+wrote 5120/5120 bytes at offset 0
+wrote 5120/5120 bytes at offset 5120
+wrote 5120/5120 bytes at offset 10240
+stat.size = 15360
+# unmounting scratch
+# mounting scratch
+# stating file to confirm correct size
+stat.size = 15360
+# appending 10 bytes to new file, sync at 5 bytes
+wrote 5/5 bytes at offset 0
+wrote 5/5 bytes at offset 5
+stat.size = 10
+# unmounting scratch
+# mounting scratch
+# stating file to confirm correct size
+stat.size = 10
diff --git a/tests/generic/184 b/tests/generic/184
new file mode 100755 (executable)
index 0000000..a37f700
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/bash
+# FS QA Test No. 184
+#
+# check mknod makes working nodes.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2007 Silicon Graphics, 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`
+echo "QA output created by $seq - silence is golden"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -f $tmp.*
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+
+_setup_testdir
+
+rm -f $testdir/null
+mknod $testdir/null c 1 3
+chmod 666 $testdir/null
+echo fred > $testdir/null
+
+status=$?
+exit
diff --git a/tests/generic/184.out b/tests/generic/184.out
new file mode 100644 (file)
index 0000000..2d19691
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 184 - silence is golden
diff --git a/tests/generic/192 b/tests/generic/192
new file mode 100755 (executable)
index 0000000..691ab7d
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/bash
+# FS QA Test No. 192
+#
+# Simple test of atime
+# - ensure it is persistent after unmount
+# - check updated time by correct amount
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2008 Silicon Graphics, 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+trap "exit \$status" 0 1 2 3 15
+
+_access_time()
+{
+       stat --format=%X $1
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+
+_supported_fs generic
+_supported_os Linux
+#delay=150
+#delay=75
+#delay=60
+#delay=45
+delay=40
+
+testfile=$TEST_DIR/testfile
+rm -f $testfile
+rm -f $seq.full
+
+echo test >$testfile
+time1=`_access_time $testfile | tee -a $seq.full` 
+
+echo "sleep for $delay"
+sleep $delay # sleep to allow time to move on for access
+cat $testfile
+time2=`_access_time $testfile | tee -a $seq.full` 
+
+cd /
+umount $TEST_DIR
+_test_mount
+time3=`_access_time $testfile | tee -a $here/$seq.full`
+
+delta1=`expr $time2 - $time1`
+delta2=`expr $time3 - $time1`
+
+echo "delta1 - access time after sleep in-core: $delta1"
+echo "delta2 - access time after sleep on-disk: $delta2"
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/192.out b/tests/generic/192.out
new file mode 100644 (file)
index 0000000..7e1f699
--- /dev/null
@@ -0,0 +1,5 @@
+QA output created by 192
+sleep for 40
+test
+delta1 - access time after sleep in-core: 40
+delta2 - access time after sleep on-disk: 40
diff --git a/tests/generic/193 b/tests/generic/193
new file mode 100755 (executable)
index 0000000..88ab971
--- /dev/null
@@ -0,0 +1,251 @@
+#! /bin/bash
+# FS QA Test No. 193
+#
+# Test permission checks in ->setattr
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2008 Christoph Hellwig.
+#
+# 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+trap "_cleanup_files; exit \$status" 0 1 2 3 15
+tag="added by qa $seq"
+
+#
+# For some tests we need a secondary group for the qa_user.  Currently
+# that's not available in the framework, so the tests using it are
+# commented out.
+#
+#group2=foo
+
+#
+# Create two files, one owned by root, one by the qa_user
+#
+_create_files()
+{
+       touch test.root
+       touch test.${qa_user}
+       chown ${qa_user}:${qa_user} test.${qa_user}
+}
+
+#
+# Remove our files again
+#
+_cleanup_files()
+{
+       rm -f test.${qa_user}
+       rm -f test.root
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_user
+_need_to_be_root
+
+
+#
+# make sure we have a normal umask set
+#
+umask 022
+
+
+#
+# Test the ATTR_UID case
+#
+echo
+echo "testing ATTR_UID"
+echo
+
+_create_files
+
+echo "user: chown root owned file to qa_user (should fail)"
+su ${qa_user} -c "chown ${qa_user} test.root"
+
+echo "user: chown root owned file to root (should fail)"
+su ${qa_user} -c "chown root test.root"
+
+echo "user: chown qa_user owned file to qa_user (should succeed)"
+su ${qa_user} -c "chown ${qa_user} test.${qa_user}"
+
+# this would work without _POSIX_CHOWN_RESTRICTED
+echo "user: chown qa_user owned file to root (should fail)"
+su ${qa_user} -c "chown root test.${qa_user}"
+
+_cleanup_files
+
+#
+# Test the ATTR_GID case
+#
+echo
+echo "testing ATTR_GID"
+echo
+
+_create_files
+
+echo "user: chgrp root owned file to root (should fail)"
+su ${qa_user} -c "chgrp root test.root"
+
+echo "user: chgrp qa_user owned file to root (should fail)"
+su ${qa_user} -c "chgrp root test.${qa_user}"
+
+echo "user: chgrp root owned file to qa_user (should fail)"
+su ${qa_user} -c "chgrp ${qa_user} test.root"
+
+echo "user: chgrp qa_user owned file to qa_user (should succeed)"
+su ${qa_user} -c "chgrp ${qa_user} test.${qa_user}"
+
+#echo "user: chgrp qa_user owned file to secondary group (should succeed)"
+#su ${qa_user} -c "chgrp ${group2} test.${qa_user}"
+
+_cleanup_files
+
+
+#
+# Test the ATTR_MODE case
+#
+echo
+echo "testing ATTR_MODE"
+echo
+
+_create_files
+
+echo "user: chmod a+r on qa_user owned file (should succeed)"
+su ${qa_user} -c "chmod a+r test.${qa_user}"
+
+echo "user: chmod a+r on root owned file (should fail)"
+su ${qa_user} -c "chmod a+r test.root"
+
+#
+# Setup a file owned by the qa_user, but with a group ID that
+# is not present in the qa_users group list (use root to make it easier for it)
+# and mark it with set sgid bit
+#
+# From Posix (www.opengroup.org) for chmod:
+#      "If the calling process does not have appropriate privileges, and
+#      if the group ID of the file does not match the effective group ID
+#      or one of the supplementary group IDs and if the file is a regular
+#      file, bit S_ISGID (set-group-ID on execution) in the file's mode
+#      shall be cleared upon successful return from chmod()."
+# i.e.
+# reg file + file's gid not in process' group set + no approp. privileges -> clear sgid
+#
+echo "check that the sgid bit is cleared"
+chown ${qa_user}:root test.${qa_user}
+chmod g+s test.${qa_user}
+
+# and let the qa_user change permission bits
+su ${qa_user} -c "chmod a+w test.${qa_user}"
+stat -c '%A' test.${qa_user}
+
+#
+# Setup a file owned by the qa_user and with the suid bit set.
+# A chmod by root should not clear the suid bit.
+# There is nothing in Posix that says it should but just checking.
+#
+echo "check that suid bit is not cleared"
+chmod u+s test.${qa_user}
+chmod a+w test.${qa_user}
+stat -c '%A' test.${qa_user}
+
+_cleanup_files
+
+_create_files
+# Now test out the clear of suid/sgid for chown
+#
+# From Posix (www.opengroup.org) for chown:
+#      "If the specified file is a regular file, one or more of the S_IXUSR,
+#      S_IXGRP, or S_IXOTH bits of the file mode are set, and the process
+#      does not have appropriate privileges, the set-user-ID (S_ISUID) and
+#      set-group-ID (S_ISGID) bits of the file mode shall be cleared upon
+#      successful return from chown(). If the specified file is a regular
+#      file, one or more of the S_IXUSR, S_IXGRP, or S_IXOTH bits of the
+#      file mode are set, and the process has appropriate privileges, it
+#      is implementation-defined whether the set-user-ID and set-group-ID
+#      bits are altered. If the chown() function is successfully invoked
+#      on a file that is not a regular file and one or more of the S_IXUSR,
+#      S_IXGRP, or S_IXOTH bits of the file mode are set, the set-user-ID
+#      and set-group-ID bits may be cleared."
+# i.e.
+# reg file + exec-mode-bits set + no appropriate privileges -> clear suid,sgid
+# reg file + exec-mode-bits set + appropriate privileges -> maybe clear suid,sgid
+# non reg file + exec-mode-bits set + chown success on file (??) -> maybe clear suid/sgid
+#
+echo "check that suid/sgid bits are cleared after successful chown..."
+
+echo "with no exec perm"
+chmod ug+s test.${qa_user}
+echo -n "before: "; stat -c '%A' test.${qa_user}
+chown root test.${qa_user}
+echo -n "after:  "; stat -c '%A' test.${qa_user}
+
+echo "with user exec perm"
+chmod ug+s test.${qa_user}
+chmod u+x test.${qa_user}
+echo -n "before: "; stat -c '%A' test.${qa_user}
+chown root test.${qa_user}
+echo -n "after:  "; stat -c '%A' test.${qa_user}
+
+echo "with group exec perm"
+chmod ug+s test.${qa_user}
+chmod g+x test.${qa_user}
+chmod u-x test.${qa_user}
+echo -n "before: "; stat -c '%A' test.${qa_user}
+chown root test.${qa_user}
+echo -n "after:  "; stat -c '%A' test.${qa_user}
+
+echo "with user+group exec perm"
+chmod ug+s test.${qa_user}
+chmod ug+x test.${qa_user}
+echo -n "before: "; stat -c '%A' test.${qa_user}
+chown root test.${qa_user}
+echo -n "after:  "; stat -c '%A' test.${qa_user}
+
+_cleanup_files
+
+
+#
+# Test ATTR_*TIMES_SET
+#
+echo
+echo "testing ATTR_*TIMES_SET"
+echo
+
+_create_files
+
+echo "user: touch qa_user file (should succeed)"
+su ${qa_user} -c "touch test.${qa_user}"
+
+echo "user: touch root file (should fail)"
+su ${qa_user} -c "touch test.root"
+
+_cleanup_files
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/generic/193.out b/tests/generic/193.out
new file mode 100644 (file)
index 0000000..b89add3
--- /dev/null
@@ -0,0 +1,51 @@
+QA output created by 193
+
+testing ATTR_UID
+
+user: chown root owned file to qa_user (should fail)
+chown: changing ownership of `test.root': Operation not permitted
+user: chown root owned file to root (should fail)
+chown: changing ownership of `test.root': Operation not permitted
+user: chown qa_user owned file to qa_user (should succeed)
+user: chown qa_user owned file to root (should fail)
+chown: changing ownership of `test.fsgqa': Operation not permitted
+
+testing ATTR_GID
+
+user: chgrp root owned file to root (should fail)
+chgrp: changing group of `test.root': Operation not permitted
+user: chgrp qa_user owned file to root (should fail)
+chgrp: changing group of `test.fsgqa': Operation not permitted
+user: chgrp root owned file to qa_user (should fail)
+chgrp: changing group of `test.root': Operation not permitted
+user: chgrp qa_user owned file to qa_user (should succeed)
+
+testing ATTR_MODE
+
+user: chmod a+r on qa_user owned file (should succeed)
+user: chmod a+r on root owned file (should fail)
+chmod: changing permissions of `test.root': Operation not permitted
+check that the sgid bit is cleared
+-rw-rw-rw-
+check that suid bit is not cleared
+-rwSrw-rw-
+check that suid/sgid bits are cleared after successful chown...
+with no exec perm
+before: -rwSr-Sr--
+after:  -rw-r-Sr--
+with user exec perm
+before: -rwsr-Sr--
+after:  -rwxr-Sr--
+with group exec perm
+before: -rwSr-sr--
+after:  -rw-r-xr--
+with user+group exec perm
+before: -rwsr-sr--
+after:  -rwxr-xr--
+
+testing ATTR_*TIMES_SET
+
+user: touch qa_user file (should succeed)
+user: touch root file (should fail)
+touch: cannot touch `test.root': Permission denied
+*** done
diff --git a/tests/generic/198 b/tests/generic/198
new file mode 100755 (executable)
index 0000000..31de96c
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/bash
+# FS QA Test No. 198
+#
+# Test that aio+dio into holes does completion at the proper offsets
+# See also https://bugzilla.redhat.com/show_bug.cgi?id=217098
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2008 Eric Sandeen.  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`
+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
+
+_supported_fs generic
+_supported_os Linux
+_require_aiodio aiodio_sparse2
+
+echo "Silence is golden."
+
+# real QA test starts here
+rm -f $seq.full
+
+rm -f "$TEST_DIR/aiodio_sparse*"
+$AIO_TEST "$TEST_DIR/aiodio_sparse"
+
+status=$?
+exit
diff --git a/tests/generic/198.out b/tests/generic/198.out
new file mode 100644 (file)
index 0000000..4ec2f06
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 198
+Silence is golden.
diff --git a/tests/generic/204 b/tests/generic/204
new file mode 100755 (executable)
index 0000000..6c4a3f0
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/bash
+# FS QA Test No. 204
+#
+# Test out ENOSPC flushing on small filesystems.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Christoph Hellwig.
+#
+# 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_scratch
+
+SIZE=`expr 104 \* 1024 \* 1024`
+_scratch_mkfs_sized $SIZE  &> /dev/null
+_scratch_mount
+
+# fix the reserve block pool to a known size so that the enospc calculations
+# work out correctly.
+_scratch_resvblks 1024 > $seq.full 2>&1
+
+for i in `seq 1 22500`; do
+    echo -n > $SCRATCH_MNT/$i
+    echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX > $SCRATCH_MNT/$i
+done
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/generic/204.out b/tests/generic/204.out
new file mode 100644 (file)
index 0000000..f9604ec
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 204
+*** done
diff --git a/tests/generic/207 b/tests/generic/207
new file mode 100755 (executable)
index 0000000..6eaf50c
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/bash
+# FS QA Test No. 207
+#
+# Run aio-dio-extend-stat - test race in dio aio completion
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  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`
+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
+
+# real QA test starts here
+
+_supported_fs generic
+_supported_os Linux
+
+_run_aiodio aio-dio-extend-stat
+
+exit $status
diff --git a/tests/generic/207.out b/tests/generic/207.out
new file mode 100644 (file)
index 0000000..5799065
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 207
+4000 iterations of racing extensions and collection passed
diff --git a/tests/generic/208 b/tests/generic/208
new file mode 100755 (executable)
index 0000000..7ea7514
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/bash
+# FS QA Test No. 208
+#
+# Run aio-dio-invalidate-failure - test race in read cache invalidation
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  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`
+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
+
+# real QA test starts here
+
+_supported_fs generic
+_supported_os Linux
+
+_run_aiodio aio-dio-invalidate-failure
+
+exit $status
diff --git a/tests/generic/208.out b/tests/generic/208.out
new file mode 100644 (file)
index 0000000..e825b72
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 208
+ran for 200 seconds without error, passing
diff --git a/tests/generic/209 b/tests/generic/209
new file mode 100755 (executable)
index 0000000..8b2a4e1
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/bash
+# FS QA Test No. 209
+#
+# Run aio-dio-invalidate-readahead - test sync DIO invalidation of readahead
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  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`
+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
+
+# real QA test starts here
+
+_supported_fs generic
+_supported_os Linux
+
+_run_aiodio aio-dio-invalidate-readahead
+
+exit $status
diff --git a/tests/generic/209.out b/tests/generic/209.out
new file mode 100644 (file)
index 0000000..e3524ef
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 209
+test ran for 30 seconds without error
diff --git a/tests/generic/210 b/tests/generic/210
new file mode 100755 (executable)
index 0000000..56ac8ad
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/bash
+# FS QA Test No. 210
+#
+# Run aio-dio-subblock-eof-read - test AIO read of last block of DIO file
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  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`
+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
+
+# real QA test starts here
+
+_supported_fs generic
+_supported_os Linux
+
+_run_aiodio aio-dio-subblock-eof-read
+
+exit $status
diff --git a/tests/generic/210.out b/tests/generic/210.out
new file mode 100644 (file)
index 0000000..7f855e7
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 210
+AIO read of last block in file succeeded.
diff --git a/tests/generic/211 b/tests/generic/211
new file mode 100755 (executable)
index 0000000..5667d20
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/bash
+# FS QA Test No. 211
+#
+# Run aio-free-ring-with-bogus-nr-pages - test aio_setup_ring with bad nr_pages
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  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`
+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
+
+# real QA test starts here
+
+_supported_fs generic
+_supported_os Linux
+
+_run_aiodio aio-free-ring-with-bogus-nr-pages
+
+exit $status
diff --git a/tests/generic/211.out b/tests/generic/211.out
new file mode 100644 (file)
index 0000000..08be2c5
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 211
+aio-free-ring-with-bogus-nr-pages: Success!
diff --git a/tests/generic/212 b/tests/generic/212
new file mode 100755 (executable)
index 0000000..e211cc4
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/bash
+# FS QA Test No. 212
+#
+# Run aio-io-setup-with-nonwritable-context-pointer -
+# Test what happens when a non-writable context pointer is passed to io_setup
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  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`
+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
+
+# real QA test starts here
+
+_supported_fs generic
+_supported_os Linux
+
+_run_aiodio aio-io-setup-with-nonwritable-context-pointer
+
+exit $status
diff --git a/tests/generic/212.out b/tests/generic/212.out
new file mode 100644 (file)
index 0000000..67ecc4b
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 212
+aio-io-setup-with-nonwritable-context-pointer: Success!
diff --git a/tests/generic/213 b/tests/generic/213
new file mode 100755 (executable)
index 0000000..e297fdf
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/bash
+# FS QA Test No. 213
+#
+# Check some unwritten extent boundary conditions, fallocate version.
+#
+# Based on xfs-specific test 072
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2003 Silicon Graphics, Inc.  All Rights Reserved.
+# Copyright (c) 2009 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`
+echo "QA output created by $seq"
+
+_cleanup()
+{
+       cd /
+       rm -f $tmp.*
+}
+
+here=`pwd`
+tmp=$TEST_DIR/$$
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+# generic, but xfs_io's fallocate must work
+_supported_fs generic
+# only Linux supports fallocate
+_supported_os Linux
+
+[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
+
+rm -f $seq.full
+
+_require_xfs_io_falloc
+
+# check there's enough freespace on $TEST_DIR ... (1GiB + 1MiB)
+avail=`df -P $TEST_DIR | awk 'END {print $4}'`
+[ "$avail" -ge 1049600 ] || _notrun "Test device is too small ($avail KiB)"
+
+# reserve 1GiB, truncate at 100bytes
+$XFS_IO_PROG -F -f -c 'falloc 0 1g' -c 'truncate 100' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+# reserve 1GiB, truncate at 1GiB
+$XFS_IO_PROG -F -f -c 'falloc 0 1g' -c 'truncate 1g' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+# reserve 1GiB, truncate at 2GiB
+$XFS_IO_PROG -F -f -c 'falloc 0 1g' -c 'truncate 2g' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+# reserve 1GiB, 1GiB hole, reserve 1MiB, truncate at 3GiB
+$XFS_IO_PROG -F -f -c 'falloc 0 1g' -c 'falloc 2g 1m' -c 'truncate 3g' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+# Try to reserve more space than we have
+echo "We should get: fallocate: No space left on device"
+echo "Strangely, xfs_io sometimes says \"Success\" when something went wrong, FYI"
+
+let toobig=$avail*2
+$XFS_IO_PROG -F -f -c "falloc 0 ${toobig}k" $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/213.out b/tests/generic/213.out
new file mode 100644 (file)
index 0000000..521fca3
--- /dev/null
@@ -0,0 +1,4 @@
+QA output created by 213
+We should get: fallocate: No space left on device
+Strangely, xfs_io sometimes says "Success" when something went wrong, FYI
+fallocate: No space left on device
diff --git a/tests/generic/214 b/tests/generic/214
new file mode 100755 (executable)
index 0000000..682cfca
--- /dev/null
@@ -0,0 +1,149 @@
+#! /bin/bash
+# FS QA Test No. 214
+#
+# Basic unwritten extent sanity checks
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 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`
+echo "QA output created by $seq"
+
+_cleanup()
+{
+       rm -f $TEST_DIR/ouch*
+       cd /
+       rm -f $tmp.*
+}
+
+here=`pwd`
+tmp=$TEST_DIR/$$
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+# generic, but xfs_io's fallocate must work
+_supported_fs generic
+# only Linux supports fallocate
+_supported_os Linux
+
+[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
+
+rm -f $seq.full
+rm -f $TEST_DIR/ouch*
+
+_require_xfs_io_falloc
+
+# Ok, off we go.
+
+# We don't remove files after they are written to check
+# for subsequent fs corruption at the end
+rm -f $TEST_DIR/test214-*
+
+# Super-trivial; preallocate a region and read it; get 0s.
+echo "=== falloc & read  ==="
+$XFS_IO_PROG -F -f             \
+       -c 'falloc 0 4096'      \
+       -c 'pread -v 0 4096'    \
+       $TEST_DIR/test214-1 | _filter_xfs_io_unique
+
+# Preallocate a chunk, write 1 byte, read it all back.
+# Should get no stale data.  Early ext4 bug.
+
+echo "=== falloc, write beginning, read ==="
+$XFS_IO_PROG -F -f             \
+       -c 'falloc 0 512'       \
+       -c 'pwrite 0 1'         \
+       -c 'pread -v 0 512'     \
+       $TEST_DIR/test214-2 | _filter_xfs_io_unique
+
+# Same but write in the middle of the region
+echo "=== falloc, write middle, read ==="
+$XFS_IO_PROG -F -f             \
+       -c 'falloc 0 512'       \
+       -c 'pwrite 256 1'       \
+       -c 'pread -v 0 512'     \
+       $TEST_DIR/test214-3 | _filter_xfs_io_unique
+
+# Same but write the end of the region
+echo "=== falloc, write end, read ==="
+$XFS_IO_PROG -F -f             \
+       -c 'falloc 0 512'       \
+       -c 'pwrite 511 1'       \
+       -c 'pread -v 0 512'     \
+       $TEST_DIR/test214-4 | _filter_xfs_io_unique
+
+# Reported by IBM on ext4.
+#
+# Fixed by commit a41f20716975910d9beb90b7efc61107901492b8
+#
+# The file was previously preallocated, and then initialized the middle of
+# the preallocation area using Direct IO write, then overwrite part of
+# initialized area. Later after truncate the file (to the middle of the
+# initialized data), the initialized data *before* the new file size was
+# gone after remount the filesystem.
+
+echo "=== falloc, write, sync, truncate, read ==="
+# Allocate, write, sync, truncate (buffered)
+$XFS_IO_PROG -F -f                             \
+       -c 'falloc         0x0     0x65C00'     \
+       -c 'pwrite -S 0xAA 0x12000 0x10000'     \
+       -c 'fsync'                              \
+       -c 'truncate 0x16000'                   \
+       $TEST_DIR/test214-5 | _filter_xfs_io_unique
+
+# now do a direct read and see what's on-disk
+$XFS_IO_PROG -F -f -d                          \
+       -c 'pread -v 0 0x16000'                 \
+       $TEST_DIR/test214-5 | _filter_xfs_io_unique
+
+# Reported by Ted Ts'o on linux-ext4, 12/31/2009
+# double-allocation on ext4 when fallocating over delalloc blocks
+# Regression due to d21cd8f163ac44b15c465aab7306db931c606908
+
+echo "=== delalloc write 16k; fallocate same range ==="
+# delalloc write 16k, fallocate same range.
+# Should get caught on fsck when we're done.
+
+$XFS_IO_PROG -F -f                             \
+       -c "pwrite 0 16k"                       \
+       -c "falloc 0 16k"                       \
+       -c "fsync"                              \
+       $TEST_DIR/test214-6 | _filter_xfs_io_unique
+
+# Another ext4 failure
+
+echo "=== ext4 testcase 2 ==="
+
+$XFS_IO_PROG -F -f \
+        -c "fsync"              \
+        -c "pwrite 551917 41182"        \
+        -c "falloc 917633 392230"       \
+        -c "pwrite 285771 77718"        \
+        -c "pwrite 1136718 104115"      \
+        $TEST_DIR/test214-7 | _filter_xfs_io_unique
+
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/214.out b/tests/generic/214.out
new file mode 100644 (file)
index 0000000..4576150
--- /dev/null
@@ -0,0 +1,51 @@
+QA output created by 214
+=== falloc & read  ===
+00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+read 4096/4096 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+=== falloc, write beginning, read ===
+wrote 1/1 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  cd 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+00000010:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+read 512/512 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+=== falloc, write middle, read ===
+wrote 1/1 bytes at offset 256
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+00000100:  cd 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+00000110:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+read 512/512 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+=== falloc, write end, read ===
+wrote 1/1 bytes at offset 511
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+000001f0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 cd  ................
+read 512/512 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+=== falloc, write, sync, truncate, read ===
+wrote 65536/65536 bytes at offset 73728
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
+*
+00012000:  aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa  ................
+*
+read 90112/90112 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+=== delalloc write 16k; fallocate same range ===
+wrote 16384/16384 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+=== ext4 testcase 2 ===
+wrote 41182/41182 bytes at offset 551917
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 77718/77718 bytes at offset 285771
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+wrote 104115/104115 bytes at offset 1136718
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
diff --git a/tests/generic/215 b/tests/generic/215
new file mode 100755 (executable)
index 0000000..749b27b
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/bash
+# FS QA Test No. 215
+#
+# Test out c/mtime updates after mapped writes.
+#
+# Based on the testcase in http://bugzilla.kernel.org/show_bug.cgi?id=2645
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Christoph Hellwig.
+#
+# 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`
+echo "QA output created by $seq"
+
+_cleanup()
+{
+       cd /
+       rm -f $testfile
+}
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+testfile=$TEST_DIR/tst.mmap
+
+echo
+echo "creating test file"
+dd if=/dev/zero of=$testfile count=4096
+
+mtime1=`stat --printf="%Y" $testfile`
+ctime1=`stat --printf="%Z" $testfile`
+
+sleep 2
+
+echo
+echo "writing via mmap"
+$XFS_IO_PROG -F -f             \
+       -c 'mmap 0 4096'        \
+       -c 'mwrite 0 4096'      \
+       $testfile | _filter_xfs_io_unique
+
+mtime2=`stat --printf="%Y" $testfile`
+ctime2=`stat --printf="%Z" $testfile`
+
+let mtime_diff=$mtime2-$mtime1
+let ctime_diff=$ctime2-$ctime1
+
+if [ "$mtime_diff" -eq "0" ]; then
+   echo "FAIL: mtime not update after mapped write"
+fi
+
+if [ "$ctime_diff" -eq "0" ]; then
+   echo "FAIL: ctime not update after mapped write"
+fi
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/generic/215.out b/tests/generic/215.out
new file mode 100644 (file)
index 0000000..1cfe766
--- /dev/null
@@ -0,0 +1,8 @@
+QA output created by 215
+
+creating test file
+4096+0 records in
+4096+0 records out
+
+writing via mmap
+*** done
diff --git a/tests/generic/219 b/tests/generic/219
new file mode 100755 (executable)
index 0000000..3f4ec09
--- /dev/null
@@ -0,0 +1,134 @@
+#! /bin/bash
+# FS QA Test No. 219
+#
+# Simple quota accounting test for direct/buffered/mmap IO.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  All Rights Reserved.
+#
+# Based on test 108,
+# Copyright (c) 2005 Silicon Graphics, 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`
+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.quota
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux #IRIX
+_require_scratch
+_require_quota
+_require_user
+_require_group
+
+test_files()
+{
+       echo; echo "### create files, setting up ownership (type=$type)"
+       rm -f $SCRATCH_MNT/{buffer,direct,mmap}
+       touch $SCRATCH_MNT/{buffer,direct,mmap}
+       chown $qa_user $SCRATCH_MNT/{buffer,direct,mmap}
+       chgrp $qa_group $SCRATCH_MNT/{buffer,direct,mmap}
+       for file in $SCRATCH_MNT/{buffer,direct,mmap}; do
+               $here/src/lstat64 $file | head -2 | _filter_scratch
+       done
+}
+
+check_usage()
+{
+       wroteblocks=$1
+       wrotefiles=$2
+       read id exceed blocks bsoft bhard inodes isoft ihard
+       if [ "$blocks" -lt "$wroteblocks" ]; then
+               echo "Too few blocks used (type=$type)"
+       # Save 5% for overhead of metadata or different block size
+       elif [ "$blocks" -gt $((wroteblocks+wroteblocks/20)) ]; then
+               echo "Too many blocks used (type=$type)"
+       elif [ "$inodes" != "$wrotefiles" ]; then
+               echo "Bad number of inodes used (type=$type)"
+       else
+               echo "Usage OK (type=$type)"
+       fi
+}
+
+test_accounting()
+{
+       echo "### some controlled buffered, direct and mmapd IO (type=$type)"
+       echo "--- initiating parallel IO..." >>$seq.full
+       # Small ios here because ext3 will account for indirect blocks too ...
+       # 48k will fit w/o indirect for 4k blocks (default blocksize)
+       $XFS_IO_PROG -F -c 'pwrite 0 48k' -c 'fsync' \
+                                       $SCRATCH_MNT/buffer >>$seq.full 2>&1 &
+       $XFS_IO_PROG -F -c 'pwrite 0 48k' -d \
+                                       $SCRATCH_MNT/direct >>$seq.full 2>&1 &
+       $XFS_IO_PROG -F -c 't 48k' -c 'mm -rw 0 48k' -c 'mw 0 48k' -c 'ms -s' \
+                                       $SCRATCH_MNT/mmap   >>$seq.full 2>&1 &
+       wait
+       echo "--- completed parallel IO ($type)" >>$seq.full
+
+       for file in $SCRATCH_MNT/{buffer,direct,mmap}; do
+               $here/src/lstat64 $file | head -2 | _filter_scratch
+       done
+
+       if [ $type == 'u' ]; then
+               id=$qa_user
+       else
+               id=$qa_group
+       fi
+       repquota -$type $SCRATCH_MNT | grep "^$id" | check_usage 144 3
+}
+
+# real QA test starts here
+rm -f $seq.full
+
+umount $SCRATCH_DEV 2>/dev/null
+_scratch_mkfs >> $seq.full 2>&1
+_scratch_mount "-o usrquota,grpquota"
+quotacheck -u -g $SCRATCH_MNT 2>/dev/null
+quotaon $SCRATCH_MNT 2>/dev/null
+umount $SCRATCH_DEV
+
+echo; echo "### test user accounting"
+export MOUNT_OPTIONS="-o usrquota"
+_qmount
+quotaon $SCRATCH_MNT 2>/dev/null
+type=u
+test_files
+test_accounting
+umount $SCRATCH_DEV 2>/dev/null
+
+echo; echo "### test group accounting"
+export MOUNT_OPTIONS="-o grpquota"
+_qmount
+quotaon $SCRATCH_MNT 2>/dev/null
+type=g
+test_files
+test_accounting
+umount $SCRATCH_DEV 2>/dev/null
+
+status=0
+exit
diff --git a/tests/generic/219.out b/tests/generic/219.out
new file mode 100644 (file)
index 0000000..f45658d
--- /dev/null
@@ -0,0 +1,37 @@
+QA output created by 219
+
+### test user accounting
+
+### create files, setting up ownership (type=u)
+  File: "SCRATCH_MNT/buffer"
+  Size: 0            Filetype: Regular File
+  File: "SCRATCH_MNT/direct"
+  Size: 0            Filetype: Regular File
+  File: "SCRATCH_MNT/mmap"
+  Size: 0            Filetype: Regular File
+### some controlled buffered, direct and mmapd IO (type=u)
+  File: "SCRATCH_MNT/buffer"
+  Size: 49152        Filetype: Regular File
+  File: "SCRATCH_MNT/direct"
+  Size: 49152        Filetype: Regular File
+  File: "SCRATCH_MNT/mmap"
+  Size: 49152        Filetype: Regular File
+Usage OK (type=u)
+
+### test group accounting
+
+### create files, setting up ownership (type=g)
+  File: "SCRATCH_MNT/buffer"
+  Size: 0            Filetype: Regular File
+  File: "SCRATCH_MNT/direct"
+  Size: 0            Filetype: Regular File
+  File: "SCRATCH_MNT/mmap"
+  Size: 0            Filetype: Regular File
+### some controlled buffered, direct and mmapd IO (type=g)
+  File: "SCRATCH_MNT/buffer"
+  Size: 49152        Filetype: Regular File
+  File: "SCRATCH_MNT/direct"
+  Size: 49152        Filetype: Regular File
+  File: "SCRATCH_MNT/mmap"
+  Size: 49152        Filetype: Regular File
+Usage OK (type=g)
diff --git a/tests/generic/221 b/tests/generic/221
new file mode 100755 (executable)
index 0000000..9cab3c4
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/bash
+# FS QA Test No. 221
+#
+# Check ctime updates when calling futimens without UTIME_OMIT for the
+# mtime entry.
+#
+# Based on a bug report and testcase from Eric Blake <ebb9@byu.net>.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Christoph Hellwig.  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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+# get standard environment, filters and checks
+. ./common.rc
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+echo "Silence is golden."
+
+(cd $TEST_DIR && $here/src/t_futimens)
+
+status=0
+exit $status
diff --git a/tests/generic/221.out b/tests/generic/221.out
new file mode 100644 (file)
index 0000000..1c6aa0f
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 221
+Silence is golden.
diff --git a/tests/generic/223 b/tests/generic/223
new file mode 100755 (executable)
index 0000000..8eba2d7
--- /dev/null
@@ -0,0 +1,99 @@
+#! /bin/bash
+# FS QA Test No. 223
+#
+# File alignment tests
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Eric Sandeen.  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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+_cleanup()
+{
+    rm -f $tmp.*
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_scratch
+_require_xfs_io_falloc
+
+rm -f $seq.full
+
+BLOCKSIZE=4096
+
+for SUNIT_K in 8 16 32 64 128; do
+       let SUNIT_BYTES=$SUNIT_K*1024
+       let SUNIT_BLOCKS=$SUNIT_BYTES/$BLOCKSIZE
+
+       echo "=== mkfs with su $SUNIT_BLOCKS blocks x 4 ==="
+       export MKFS_OPTIONS=""
+       _scratch_mkfs_geom $SUNIT_BYTES 4 $BLOCKSIZE >> $seq.full 2>&1
+       _scratch_mount
+
+       for SIZE_MULT in 1 2 8 64 256; do
+               let SIZE=$SIZE_MULT*$SUNIT_BYTES
+
+               echo "=== Testing size ${SIZE_MULT}*${SUNIT_K}k on ${SUNIT_K}k stripe ==="
+               for FILE in 1 2 3 4; do
+                       xfs_io -F -f -c "falloc 0 $SIZE" \
+                               $SCRATCH_MNT/file-$FILE-$SIZE-falloc \
+                                       >> $seq.full 2>&1
+                       xfs_io -F -f -c "pwrite 0 $SIZE" \
+                               $SCRATCH_MNT/file-$FILE-$SIZE-write \
+                                       >> $seq.full 2>&1
+                       src/t_stripealign $SCRATCH_MNT/file-$FILE-$SIZE-falloc \
+                               $SUNIT_BLOCKS | _filter_scratch
+                       src/t_stripealign $SCRATCH_MNT/file-$FILE-$SIZE-write \
+                               $SUNIT_BLOCKS | _filter_scratch
+               done
+       done
+
+       echo "=== Testing size 1g falloc on ${SUNIT_K}k stripe ==="
+       xfs_io -F -f -c "falloc 0 1g" \
+           $SCRATCH_MNT/file-1g-falloc >> $seq.full 2>&1
+       src/t_stripealign $SCRATCH_MNT/file-1g-falloc $SUNIT_BLOCKS \
+           | _filter_scratch
+
+       rm -f $SCRATCH_MNT/file-1g-falloc | _filter_scratch
+
+       echo "=== Testing size 1073745920 falloc on ${SUNIT_K}k stripe ==="
+       xfs_io -F -f -c "falloc 0 1073745920" \
+               $SCRATCH_MNT/file-1073745920-falloc >> $seq.full 2>&1
+       src/t_stripealign $SCRATCH_MNT/file-1073745920-falloc \
+               $SUNIT_BLOCKS | _filter_scratch
+
+       _scratch_unmount
+done
+
+status=0
+exit
diff --git a/tests/generic/223.out b/tests/generic/223.out
new file mode 100644 (file)
index 0000000..2fb3122
--- /dev/null
@@ -0,0 +1,251 @@
+QA output created by 223
+=== mkfs with su 2 blocks x 4 ===
+=== Testing size 1*8k on 8k stripe ===
+SCRATCH_MNT/file-1-8192-falloc: well-aligned
+SCRATCH_MNT/file-1-8192-write: well-aligned
+SCRATCH_MNT/file-2-8192-falloc: well-aligned
+SCRATCH_MNT/file-2-8192-write: well-aligned
+SCRATCH_MNT/file-3-8192-falloc: well-aligned
+SCRATCH_MNT/file-3-8192-write: well-aligned
+SCRATCH_MNT/file-4-8192-falloc: well-aligned
+SCRATCH_MNT/file-4-8192-write: well-aligned
+=== Testing size 2*8k on 8k stripe ===
+SCRATCH_MNT/file-1-16384-falloc: well-aligned
+SCRATCH_MNT/file-1-16384-write: well-aligned
+SCRATCH_MNT/file-2-16384-falloc: well-aligned
+SCRATCH_MNT/file-2-16384-write: well-aligned
+SCRATCH_MNT/file-3-16384-falloc: well-aligned
+SCRATCH_MNT/file-3-16384-write: well-aligned
+SCRATCH_MNT/file-4-16384-falloc: well-aligned
+SCRATCH_MNT/file-4-16384-write: well-aligned
+=== Testing size 8*8k on 8k stripe ===
+SCRATCH_MNT/file-1-65536-falloc: well-aligned
+SCRATCH_MNT/file-1-65536-write: well-aligned
+SCRATCH_MNT/file-2-65536-falloc: well-aligned
+SCRATCH_MNT/file-2-65536-write: well-aligned
+SCRATCH_MNT/file-3-65536-falloc: well-aligned
+SCRATCH_MNT/file-3-65536-write: well-aligned
+SCRATCH_MNT/file-4-65536-falloc: well-aligned
+SCRATCH_MNT/file-4-65536-write: well-aligned
+=== Testing size 64*8k on 8k stripe ===
+SCRATCH_MNT/file-1-524288-falloc: well-aligned
+SCRATCH_MNT/file-1-524288-write: well-aligned
+SCRATCH_MNT/file-2-524288-falloc: well-aligned
+SCRATCH_MNT/file-2-524288-write: well-aligned
+SCRATCH_MNT/file-3-524288-falloc: well-aligned
+SCRATCH_MNT/file-3-524288-write: well-aligned
+SCRATCH_MNT/file-4-524288-falloc: well-aligned
+SCRATCH_MNT/file-4-524288-write: well-aligned
+=== Testing size 256*8k on 8k stripe ===
+SCRATCH_MNT/file-1-2097152-falloc: well-aligned
+SCRATCH_MNT/file-1-2097152-write: well-aligned
+SCRATCH_MNT/file-2-2097152-falloc: well-aligned
+SCRATCH_MNT/file-2-2097152-write: well-aligned
+SCRATCH_MNT/file-3-2097152-falloc: well-aligned
+SCRATCH_MNT/file-3-2097152-write: well-aligned
+SCRATCH_MNT/file-4-2097152-falloc: well-aligned
+SCRATCH_MNT/file-4-2097152-write: well-aligned
+=== Testing size 1g falloc on 8k stripe ===
+SCRATCH_MNT/file-1g-falloc: well-aligned
+=== Testing size 1073745920 falloc on 8k stripe ===
+SCRATCH_MNT/file-1073745920-falloc: well-aligned
+=== mkfs with su 4 blocks x 4 ===
+=== Testing size 1*16k on 16k stripe ===
+SCRATCH_MNT/file-1-16384-falloc: well-aligned
+SCRATCH_MNT/file-1-16384-write: well-aligned
+SCRATCH_MNT/file-2-16384-falloc: well-aligned
+SCRATCH_MNT/file-2-16384-write: well-aligned
+SCRATCH_MNT/file-3-16384-falloc: well-aligned
+SCRATCH_MNT/file-3-16384-write: well-aligned
+SCRATCH_MNT/file-4-16384-falloc: well-aligned
+SCRATCH_MNT/file-4-16384-write: well-aligned
+=== Testing size 2*16k on 16k stripe ===
+SCRATCH_MNT/file-1-32768-falloc: well-aligned
+SCRATCH_MNT/file-1-32768-write: well-aligned
+SCRATCH_MNT/file-2-32768-falloc: well-aligned
+SCRATCH_MNT/file-2-32768-write: well-aligned
+SCRATCH_MNT/file-3-32768-falloc: well-aligned
+SCRATCH_MNT/file-3-32768-write: well-aligned
+SCRATCH_MNT/file-4-32768-falloc: well-aligned
+SCRATCH_MNT/file-4-32768-write: well-aligned
+=== Testing size 8*16k on 16k stripe ===
+SCRATCH_MNT/file-1-131072-falloc: well-aligned
+SCRATCH_MNT/file-1-131072-write: well-aligned
+SCRATCH_MNT/file-2-131072-falloc: well-aligned
+SCRATCH_MNT/file-2-131072-write: well-aligned
+SCRATCH_MNT/file-3-131072-falloc: well-aligned
+SCRATCH_MNT/file-3-131072-write: well-aligned
+SCRATCH_MNT/file-4-131072-falloc: well-aligned
+SCRATCH_MNT/file-4-131072-write: well-aligned
+=== Testing size 64*16k on 16k stripe ===
+SCRATCH_MNT/file-1-1048576-falloc: well-aligned
+SCRATCH_MNT/file-1-1048576-write: well-aligned
+SCRATCH_MNT/file-2-1048576-falloc: well-aligned
+SCRATCH_MNT/file-2-1048576-write: well-aligned
+SCRATCH_MNT/file-3-1048576-falloc: well-aligned
+SCRATCH_MNT/file-3-1048576-write: well-aligned
+SCRATCH_MNT/file-4-1048576-falloc: well-aligned
+SCRATCH_MNT/file-4-1048576-write: well-aligned
+=== Testing size 256*16k on 16k stripe ===
+SCRATCH_MNT/file-1-4194304-falloc: well-aligned
+SCRATCH_MNT/file-1-4194304-write: well-aligned
+SCRATCH_MNT/file-2-4194304-falloc: well-aligned
+SCRATCH_MNT/file-2-4194304-write: well-aligned
+SCRATCH_MNT/file-3-4194304-falloc: well-aligned
+SCRATCH_MNT/file-3-4194304-write: well-aligned
+SCRATCH_MNT/file-4-4194304-falloc: well-aligned
+SCRATCH_MNT/file-4-4194304-write: well-aligned
+=== Testing size 1g falloc on 16k stripe ===
+SCRATCH_MNT/file-1g-falloc: well-aligned
+=== Testing size 1073745920 falloc on 16k stripe ===
+SCRATCH_MNT/file-1073745920-falloc: well-aligned
+=== mkfs with su 8 blocks x 4 ===
+=== Testing size 1*32k on 32k stripe ===
+SCRATCH_MNT/file-1-32768-falloc: well-aligned
+SCRATCH_MNT/file-1-32768-write: well-aligned
+SCRATCH_MNT/file-2-32768-falloc: well-aligned
+SCRATCH_MNT/file-2-32768-write: well-aligned
+SCRATCH_MNT/file-3-32768-falloc: well-aligned
+SCRATCH_MNT/file-3-32768-write: well-aligned
+SCRATCH_MNT/file-4-32768-falloc: well-aligned
+SCRATCH_MNT/file-4-32768-write: well-aligned
+=== Testing size 2*32k on 32k stripe ===
+SCRATCH_MNT/file-1-65536-falloc: well-aligned
+SCRATCH_MNT/file-1-65536-write: well-aligned
+SCRATCH_MNT/file-2-65536-falloc: well-aligned
+SCRATCH_MNT/file-2-65536-write: well-aligned
+SCRATCH_MNT/file-3-65536-falloc: well-aligned
+SCRATCH_MNT/file-3-65536-write: well-aligned
+SCRATCH_MNT/file-4-65536-falloc: well-aligned
+SCRATCH_MNT/file-4-65536-write: well-aligned
+=== Testing size 8*32k on 32k stripe ===
+SCRATCH_MNT/file-1-262144-falloc: well-aligned
+SCRATCH_MNT/file-1-262144-write: well-aligned
+SCRATCH_MNT/file-2-262144-falloc: well-aligned
+SCRATCH_MNT/file-2-262144-write: well-aligned
+SCRATCH_MNT/file-3-262144-falloc: well-aligned
+SCRATCH_MNT/file-3-262144-write: well-aligned
+SCRATCH_MNT/file-4-262144-falloc: well-aligned
+SCRATCH_MNT/file-4-262144-write: well-aligned
+=== Testing size 64*32k on 32k stripe ===
+SCRATCH_MNT/file-1-2097152-falloc: well-aligned
+SCRATCH_MNT/file-1-2097152-write: well-aligned
+SCRATCH_MNT/file-2-2097152-falloc: well-aligned
+SCRATCH_MNT/file-2-2097152-write: well-aligned
+SCRATCH_MNT/file-3-2097152-falloc: well-aligned
+SCRATCH_MNT/file-3-2097152-write: well-aligned
+SCRATCH_MNT/file-4-2097152-falloc: well-aligned
+SCRATCH_MNT/file-4-2097152-write: well-aligned
+=== Testing size 256*32k on 32k stripe ===
+SCRATCH_MNT/file-1-8388608-falloc: well-aligned
+SCRATCH_MNT/file-1-8388608-write: well-aligned
+SCRATCH_MNT/file-2-8388608-falloc: well-aligned
+SCRATCH_MNT/file-2-8388608-write: well-aligned
+SCRATCH_MNT/file-3-8388608-falloc: well-aligned
+SCRATCH_MNT/file-3-8388608-write: well-aligned
+SCRATCH_MNT/file-4-8388608-falloc: well-aligned
+SCRATCH_MNT/file-4-8388608-write: well-aligned
+=== Testing size 1g falloc on 32k stripe ===
+SCRATCH_MNT/file-1g-falloc: well-aligned
+=== Testing size 1073745920 falloc on 32k stripe ===
+SCRATCH_MNT/file-1073745920-falloc: well-aligned
+=== mkfs with su 16 blocks x 4 ===
+=== Testing size 1*64k on 64k stripe ===
+SCRATCH_MNT/file-1-65536-falloc: well-aligned
+SCRATCH_MNT/file-1-65536-write: well-aligned
+SCRATCH_MNT/file-2-65536-falloc: well-aligned
+SCRATCH_MNT/file-2-65536-write: well-aligned
+SCRATCH_MNT/file-3-65536-falloc: well-aligned
+SCRATCH_MNT/file-3-65536-write: well-aligned
+SCRATCH_MNT/file-4-65536-falloc: well-aligned
+SCRATCH_MNT/file-4-65536-write: well-aligned
+=== Testing size 2*64k on 64k stripe ===
+SCRATCH_MNT/file-1-131072-falloc: well-aligned
+SCRATCH_MNT/file-1-131072-write: well-aligned
+SCRATCH_MNT/file-2-131072-falloc: well-aligned
+SCRATCH_MNT/file-2-131072-write: well-aligned
+SCRATCH_MNT/file-3-131072-falloc: well-aligned
+SCRATCH_MNT/file-3-131072-write: well-aligned
+SCRATCH_MNT/file-4-131072-falloc: well-aligned
+SCRATCH_MNT/file-4-131072-write: well-aligned
+=== Testing size 8*64k on 64k stripe ===
+SCRATCH_MNT/file-1-524288-falloc: well-aligned
+SCRATCH_MNT/file-1-524288-write: well-aligned
+SCRATCH_MNT/file-2-524288-falloc: well-aligned
+SCRATCH_MNT/file-2-524288-write: well-aligned
+SCRATCH_MNT/file-3-524288-falloc: well-aligned
+SCRATCH_MNT/file-3-524288-write: well-aligned
+SCRATCH_MNT/file-4-524288-falloc: well-aligned
+SCRATCH_MNT/file-4-524288-write: well-aligned
+=== Testing size 64*64k on 64k stripe ===
+SCRATCH_MNT/file-1-4194304-falloc: well-aligned
+SCRATCH_MNT/file-1-4194304-write: well-aligned
+SCRATCH_MNT/file-2-4194304-falloc: well-aligned
+SCRATCH_MNT/file-2-4194304-write: well-aligned
+SCRATCH_MNT/file-3-4194304-falloc: well-aligned
+SCRATCH_MNT/file-3-4194304-write: well-aligned
+SCRATCH_MNT/file-4-4194304-falloc: well-aligned
+SCRATCH_MNT/file-4-4194304-write: well-aligned
+=== Testing size 256*64k on 64k stripe ===
+SCRATCH_MNT/file-1-16777216-falloc: well-aligned
+SCRATCH_MNT/file-1-16777216-write: well-aligned
+SCRATCH_MNT/file-2-16777216-falloc: well-aligned
+SCRATCH_MNT/file-2-16777216-write: well-aligned
+SCRATCH_MNT/file-3-16777216-falloc: well-aligned
+SCRATCH_MNT/file-3-16777216-write: well-aligned
+SCRATCH_MNT/file-4-16777216-falloc: well-aligned
+SCRATCH_MNT/file-4-16777216-write: well-aligned
+=== Testing size 1g falloc on 64k stripe ===
+SCRATCH_MNT/file-1g-falloc: well-aligned
+=== Testing size 1073745920 falloc on 64k stripe ===
+SCRATCH_MNT/file-1073745920-falloc: well-aligned
+=== mkfs with su 32 blocks x 4 ===
+=== Testing size 1*128k on 128k stripe ===
+SCRATCH_MNT/file-1-131072-falloc: well-aligned
+SCRATCH_MNT/file-1-131072-write: well-aligned
+SCRATCH_MNT/file-2-131072-falloc: well-aligned
+SCRATCH_MNT/file-2-131072-write: well-aligned
+SCRATCH_MNT/file-3-131072-falloc: well-aligned
+SCRATCH_MNT/file-3-131072-write: well-aligned
+SCRATCH_MNT/file-4-131072-falloc: well-aligned
+SCRATCH_MNT/file-4-131072-write: well-aligned
+=== Testing size 2*128k on 128k stripe ===
+SCRATCH_MNT/file-1-262144-falloc: well-aligned
+SCRATCH_MNT/file-1-262144-write: well-aligned
+SCRATCH_MNT/file-2-262144-falloc: well-aligned
+SCRATCH_MNT/file-2-262144-write: well-aligned
+SCRATCH_MNT/file-3-262144-falloc: well-aligned
+SCRATCH_MNT/file-3-262144-write: well-aligned
+SCRATCH_MNT/file-4-262144-falloc: well-aligned
+SCRATCH_MNT/file-4-262144-write: well-aligned
+=== Testing size 8*128k on 128k stripe ===
+SCRATCH_MNT/file-1-1048576-falloc: well-aligned
+SCRATCH_MNT/file-1-1048576-write: well-aligned
+SCRATCH_MNT/file-2-1048576-falloc: well-aligned
+SCRATCH_MNT/file-2-1048576-write: well-aligned
+SCRATCH_MNT/file-3-1048576-falloc: well-aligned
+SCRATCH_MNT/file-3-1048576-write: well-aligned
+SCRATCH_MNT/file-4-1048576-falloc: well-aligned
+SCRATCH_MNT/file-4-1048576-write: well-aligned
+=== Testing size 64*128k on 128k stripe ===
+SCRATCH_MNT/file-1-8388608-falloc: well-aligned
+SCRATCH_MNT/file-1-8388608-write: well-aligned
+SCRATCH_MNT/file-2-8388608-falloc: well-aligned
+SCRATCH_MNT/file-2-8388608-write: well-aligned
+SCRATCH_MNT/file-3-8388608-falloc: well-aligned
+SCRATCH_MNT/file-3-8388608-write: well-aligned
+SCRATCH_MNT/file-4-8388608-falloc: well-aligned
+SCRATCH_MNT/file-4-8388608-write: well-aligned
+=== Testing size 256*128k on 128k stripe ===
+SCRATCH_MNT/file-1-33554432-falloc: well-aligned
+SCRATCH_MNT/file-1-33554432-write: well-aligned
+SCRATCH_MNT/file-2-33554432-falloc: well-aligned
+SCRATCH_MNT/file-2-33554432-write: well-aligned
+SCRATCH_MNT/file-3-33554432-falloc: well-aligned
+SCRATCH_MNT/file-3-33554432-write: well-aligned
+SCRATCH_MNT/file-4-33554432-falloc: well-aligned
+SCRATCH_MNT/file-4-33554432-write: well-aligned
+=== Testing size 1g falloc on 128k stripe ===
+SCRATCH_MNT/file-1g-falloc: well-aligned
+=== Testing size 1073745920 falloc on 128k stripe ===
+SCRATCH_MNT/file-1073745920-falloc: well-aligned
diff --git a/tests/generic/224 b/tests/generic/224
new file mode 100755 (executable)
index 0000000..23ee7c2
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/bash
+# FS QA Test No. 224
+#
+# Delayed allocation at ENOSPC test
+#
+# Derived from a test case from Lachlan McIlroy and improved to
+# reliably trigger a BUG in xfs_get_blocks(). Despite this XFS
+# focus, the test can to run on any filesystem to exercise ENOSPC
+# behaviour.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Dave Chinner.  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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+_cleanup()
+{
+       rm -f $tmp.*
+       rm -f $SCRATCH_MNT/testfile.*
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_scratch
+
+# make a 1GB filesystem
+_scratch_mkfs_sized `expr 1024 \* 1024 \* 1024` > $seq.full 2>&1
+_scratch_mount >> $seq.full 2>&1
+
+# set the reserved block pool to almost empty for XFS
+if [ "$FSTYP" = "xfs" ]; then
+       xfs_io -x -c "resblks 4" $SCRATCH_MNT >> $seq.full 2>&1
+fi
+
+FILES=1000
+for i in `seq 0 1 $FILES`; do
+
+       # set the file size to be 10MB - that way the direct IO will always try
+       # to read at least 10MB even if only 4k was written. This allows
+       # discarded delalloc pages that would have been beyond EOF to be
+       # tripped over.
+        (
+               sleep 5
+               xfs_io -f -c "truncate 10485760" $SCRATCH_MNT/testfile.$i
+               dd if=/dev/zero of=$SCRATCH_MNT/testfile.$i bs=4k conv=notrunc
+       ) > /dev/null 2>&1 &
+done
+wait
+
+for i in `seq 0 1 $FILES`; do
+        dd of=/dev/null if=$SCRATCH_MNT/testfile.$i bs=512k iflag=direct > /dev/null 2>&1 &
+done
+wait
+echo "*** Silence is golden ***"
+status=0
+exit
diff --git a/tests/generic/224.out b/tests/generic/224.out
new file mode 100644 (file)
index 0000000..cf4fd9c
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 224
+*** Silence is golden ***
diff --git a/tests/generic/225 b/tests/generic/225
new file mode 100755 (executable)
index 0000000..c09bd2a
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/bash
+# FS QA Test No. 225
+#
+# Run the fiemap (file extent mapping) tester
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  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`
+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.*
+       _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_scratch
+
+_scratch_mkfs > /dev/null 2>&1
+_scratch_mount > /dev/null 2>&1
+
+rm -f $seq.full
+fiemapfile=$SCRATCH_MNT/$seq.fiemap
+fiemaplog=$SCRATCH_MNT/$seq.log
+
+
+[ -x $here/src/fiemap-tester ] || _notrun "fiemap-tester not built"
+
+seed=`date +%s`
+
+echo "using seed $seed" >> $fiemaplog
+
+echo "fiemap run without preallocation, with sync"
+$here/src/fiemap-tester -q -S -s $seed -p 0 -r 200 $fiemapfile 2>&1 | tee -a $fiemaplog
+
+if [ $? -ne 0 ]; then
+       if grep -q "Operation not supported" $fiemaplog; then
+             _notrun "FIEMAP not supported by this filesystem type: $FSTYP"
+       fi
+       status=$?
+       exit
+fi
+
+echo "fiemap run without preallocation or sync"
+$here/src/fiemap-tester -q -s $seed -p 0 -r 200 $fiemapfile 2>&1 | tee -a $fiemaplog
+
+status=0
+exit
diff --git a/tests/generic/225.out b/tests/generic/225.out
new file mode 100644 (file)
index 0000000..b4f6477
--- /dev/null
@@ -0,0 +1,3 @@
+QA output created by 225
+fiemap run without preallocation, with sync
+fiemap run without preallocation or sync
diff --git a/tests/generic/226 b/tests/generic/226
new file mode 100755 (executable)
index 0000000..2179f2a
--- /dev/null
@@ -0,0 +1,77 @@
+#! /bin/bash
+# FS QA Test No. 226
+#
+# Test for prealloc space leaks by rewriting the same file in a loop
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2009 Eric Sandeen.  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`
+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
+
+_supported_fs generic
+_supported_os Linux IRIX
+_require_scratch
+
+# real QA test starts here
+rm -f $seq.full
+
+umount $SCRATCH_DEV 2>/dev/null
+echo "--> mkfs 256m filesystem"
+_scratch_mkfs_sized `expr 256 \* 1024 \* 1024` >> $seq.full 2>&1
+_scratch_mount
+
+loops=16
+
+# Buffer size argument supplied to xfs_io "pwrite" command
+buffer="-b $(expr 512 \* 1024)"
+
+echo "--> $loops buffered 64m writes in a loop"
+for I in `seq 1 $loops`; do
+       echo -n "$I "
+       xfs_io -F -f \
+               -c "pwrite ${buffer} 0 64m" $SCRATCH_MNT/test >> $seq.full
+       rm -f $SCRATCH_MNT/test
+done
+
+echo
+umount $SCRATCH_DEV
+_scratch_mount
+
+echo "--> $loops direct 64m writes in a loop"
+for I in `seq 1 $loops`; do
+       echo -n "$I "
+       xfs_io -F -f -d \
+               -c "pwrite ${buffer} 0 64m" $SCRATCH_MNT/test >> $seq.full
+       rm -f $SCRATCH_MNT/test 
+done
+
+echo
+umount $SCRATCH_DEV
+
+status=0
+exit
diff --git a/tests/generic/226.out b/tests/generic/226.out
new file mode 100644 (file)
index 0000000..b5f60bf
--- /dev/null
@@ -0,0 +1,6 @@
+QA output created by 226
+--> mkfs 256m filesystem
+--> 16 buffered 64m writes in a loop
+1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
+--> 16 direct 64m writes in a loop
+1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
diff --git a/tests/generic/228 b/tests/generic/228
new file mode 100755 (executable)
index 0000000..2704934
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/bash
+# FS QA Test No. 228
+#
+# Check if fallocate respects RLIMIT_FSIZE
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 IBM Corporation. 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`
+echo "QA output created by $seq"
+
+_cleanup()
+{
+       cd /
+       rm -f $tmp.*
+       sysctl -w kernel.core_pattern="$core_pattern" &>/dev/null
+       ulimit -c $ulimit_c
+}
+
+here=`pwd`
+tmp=$TEST_DIR/$$
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15 25
+
+# get standard environment, filters and checks
+. ./common.rc
+
+# real QA test starts here
+# generic, but xfs_io's fallocate must work
+_supported_fs generic
+# only Linux supports fallocate
+_supported_os Linux
+
+[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
+
+rm -f $seq.full
+
+# Sanity check to see if fallocate works
+_require_xfs_io_falloc
+
+# Check if we have good enough space available
+avail=`df -P $TEST_DIR | awk 'END {print $4}'`
+[ "$avail" -ge 104000 ] || _notrun "Test device is too small ($avail KiB)"
+
+# Suppress core dumped messages
+core_pattern=`sysctl kernel.core_pattern | awk -F = '{print $NF}'`
+ulimit_c=`ulimit -c`
+sysctl -w kernel.core_pattern=core &>/dev/null
+ulimit -c 0
+
+# Set the FSIZE ulimit to 100MB and check
+ulimit -f 102400
+flim=`ulimit -f`
+[ "$flim" != "unlimited" ] || _notrun "Unable to set FSIZE ulimit"
+[ "$flim" -eq 102400 ] || _notrun "FSIZE ulimit is not correct (100 MB)"
+
+echo "File size limit is now set to 100 MB."
+echo "Let us try to preallocate 101 MB. This should fail."
+$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+echo "Let us now try to preallocate 50 MB. This should succeed."
+$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+echo "Test over."
+# success, all done
+status=0
+exit
diff --git a/tests/generic/228.out b/tests/generic/228.out
new file mode 100644 (file)
index 0000000..842d4bb
--- /dev/null
@@ -0,0 +1,6 @@
+QA output created by 228
+File size limit is now set to 100 MB.
+Let us try to preallocate 101 MB. This should fail.
+File size limit exceeded
+Let us now try to preallocate 50 MB. This should succeed.
+Test over.
diff --git a/tests/generic/230 b/tests/generic/230
new file mode 100755 (executable)
index 0000000..a442857
--- /dev/null
@@ -0,0 +1,145 @@
+#! /bin/bash
+# FS QA Test No. 230
+#
+# Simple quota enforcement test.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Jan Kara.  All Rights Reserved.
+#
+# Based on test 219,
+# Copyright (c) 2005 Silicon Graphics, 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`
+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.quota
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux #IRIX
+_require_scratch
+_require_quota
+_require_user
+_need_to_be_root
+
+test_files()
+{
+       echo; echo "### create files, setting up ownership (type=$type)"
+       touch $SCRATCH_MNT/file{1,2} 2>/dev/null
+       chown $qa_user $SCRATCH_MNT/file{1,2} 2>/dev/null
+       chgrp $qa_user $SCRATCH_MNT/file{1,2} 2>/dev/null
+       chmod 777 $SCRATCH_MNT 2>/dev/null
+}
+
+test_enforcement()
+{
+       echo "### some buffered IO (type=$type)"
+       echo "--- initiating IO..." >>$seq.full
+       # Firstly fit below block soft limit
+       echo "Write 900k..."
+       su $qa_user -c "$XFS_IO_PROG -F -c 'pwrite 0 900k' -c fsync \
+               $SCRATCH_MNT/file1" 2>&1 >>$seq.full | tee -a $seq.full
+       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
+       # Secondly overcome block soft limit
+       echo "Rewrite 1001k..."
+       su $qa_user -c "$XFS_IO_PROG -F -c 'pwrite 0 1001k' -c fsync \
+               $SCRATCH_MNT/file1" 2>&1 >>$seq.full | tee -a $seq.full
+       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
+       # Now try to overcome block hardlimit
+       echo "Write 1000k..."
+       su $qa_user -c "$XFS_IO_PROG -F -c 'pwrite 0 1000k' -c fsync \
+               $SCRATCH_MNT/file2" 2>&1 >>$seq.full | tee -a $seq.full
+       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
+       # Now sleep for grace time and check that softlimit got enforced
+       sleep $((grace+1))
+       echo "Write 4096..."
+       su $qa_user -c "$XFS_IO_PROG -F -c 'truncate 0' -c 'pwrite 0 4096' \
+               $SCRATCH_MNT/file2" 2>&1 >>$seq.full | tee -a $seq.full
+       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
+       # And now the softlimit test for inodes
+       # First reset space limits so that we don't have problems with
+       # space reservations on XFS
+       setquota -$type $qa_user 0 0 3 5 $SCRATCH_MNT
+       echo "Touch 3+4"
+       su $qa_user -c "touch $SCRATCH_MNT/file3 $SCRATCH_MNT/file4" \
+               2>&1 >>$seq.full | _filter_scratch | tee -a $seq.full
+       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
+       # Try to exceed inode hardlimit
+       echo "Touch 5+6"
+       su $qa_user -c "touch $SCRATCH_MNT/file5 $SCRATCH_MNT/file6" \
+               2>&1 >>$seq.full | _filter_scratch | tee -a $seq.full
+       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
+       # Wait and check grace time enforcement
+       rm -f $SCRATCH_MNT/file5 >>$seq.full 2>&1
+       sleep $((grace+1))
+       echo "Touch 5"
+       su $qa_user -c "touch $SCRATCH_MNT/file5" 2>&1 >>$seq.full |
+               _filter_scratch | tee -a $seq.full
+       repquota -$type $SCRATCH_MNT  | grep -v "^root" >>$seq.full 2>&1
+       echo "--- completed IO ($type)" >>$seq.full
+}
+
+cleanup_files()
+{
+       rm -f $SCRATCH_MNT/file{1,2,3,4,5,6}
+}
+
+# real QA test starts here
+rm -f $seq.full
+
+grace=2
+
+_scratch_mkfs >> $seq.full 2>&1
+_scratch_mount "-o usrquota,grpquota"
+quotacheck -u -g $SCRATCH_MNT 2>/dev/null
+quotaon $SCRATCH_MNT 2>/dev/null
+setquota -u $qa_user 1000 2000 3 5 $SCRATCH_MNT
+setquota -u -t $grace $grace $SCRATCH_MNT
+setquota -g $qa_user 1000 2000 3 5 $SCRATCH_MNT
+setquota -g -t $grace $grace $SCRATCH_MNT
+umount $SCRATCH_DEV
+
+echo; echo "### test user limit enforcement"
+_scratch_mount "-o usrquota"
+quotaon $SCRATCH_MNT 2>/dev/null
+type=u
+test_files
+test_enforcement
+cleanup_files
+umount $SCRATCH_DEV 2>/dev/null
+
+echo; echo "### test group limit enforcement"
+_scratch_mount "-o grpquota"
+quotaon $SCRATCH_MNT 2>/dev/null
+type=g
+test_files
+test_enforcement
+cleanup_files
+umount $SCRATCH_DEV 2>/dev/null
+
+status=0
+exit
diff --git a/tests/generic/230.out b/tests/generic/230.out
new file mode 100644 (file)
index 0000000..d2d434c
--- /dev/null
@@ -0,0 +1,33 @@
+QA output created by 230
+
+### test user limit enforcement
+
+### create files, setting up ownership (type=u)
+### some buffered IO (type=u)
+Write 900k...
+Rewrite 1001k...
+Write 1000k...
+pwrite64: Disk quota exceeded
+Write 4096...
+pwrite64: Disk quota exceeded
+Touch 3+4
+Touch 5+6
+touch: cannot touch `SCRATCH_MNT/file6': Disk quota exceeded
+Touch 5
+touch: cannot touch `SCRATCH_MNT/file5': Disk quota exceeded
+
+### test group limit enforcement
+
+### create files, setting up ownership (type=g)
+### some buffered IO (type=g)
+Write 900k...
+Rewrite 1001k...
+Write 1000k...
+pwrite64: Disk quota exceeded
+Write 4096...
+pwrite64: Disk quota exceeded
+Touch 3+4
+Touch 5+6
+touch: cannot touch `SCRATCH_MNT/file6': Disk quota exceeded
+Touch 5
+touch: cannot touch `SCRATCH_MNT/file5': Disk quota exceeded
diff --git a/tests/generic/231 b/tests/generic/231
new file mode 100755 (executable)
index 0000000..6d8bda7
--- /dev/null
@@ -0,0 +1,119 @@
+#! /bin/bash
+# FSQA Test No. 231
+#
+# Run fsx with quotas enabled and verify accounted quotas in the end
+#
+# Derived from test 127
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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.quota
+
+FSX_FILE_SIZE=64000000
+FSX_ARGS="-q -l $FSX_FILE_SIZE -o 65536 -N 20000"
+
+_fsx()
+{
+       tasks=$1
+       echo "=== FSX Standard Mode, Memory Mapping, $tasks Tasks ==="
+       for (( i = 1; i <= $tasks; i++ )); do
+               SEED=$RANDOM
+               echo "ltp/fsx $FSX_ARGS -S $SEED $SCRATCH_MNT/fsx_file$i" >>$seq.full
+               su $qa_user -c "ltp/fsx $FSX_ARGS -S $SEED \
+                       $SCRATCH_MNT/fsx_file$i" >$tmp.output$i 2>&1 &
+       done
+
+       for (( i = 1; i <= $tasks; i++ )); do
+               if ! wait %$i; then
+                       cat $tmp.output$i | tee -a $seq.full
+                       wait
+                       return 1
+               fi
+               $XFS_IO_PROG -F -c 'fsync' $SCRATCH_MNT/fsx_file$i
+               cat $tmp.output$i | tee -a $seq.full
+       done
+       return 0
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_scratch
+_require_quota
+_require_user
+_need_to_be_root
+
+_scratch_mkfs >> $seq.full 2>&1
+_scratch_mount "-o usrquota,grpquota"
+chmod 777 $SCRATCH_MNT
+quotacheck -u -g $SCRATCH_MNT 2>/dev/null
+quotaon -u -g $SCRATCH_MNT 2>/dev/null
+
+if ! _fsx 1; then
+       umount $SCRATCH_DEV 2>/dev/null
+       status=1
+       exit
+fi
+
+if ! _check_quota_usage; then
+       umount $SCRATCH_DEV 2>/dev/null
+       status=1
+       exit
+fi
+
+if ! _fsx 4; then
+       umount $SCRATCH_DEV 2>/dev/null
+       status=1
+       exit
+fi
+
+if ! _check_quota_usage; then
+       umount $SCRATCH_DEV 2>/dev/null
+       status=1
+       exit
+fi
+
+#flush cache after write
+FSX_ARGS="-f $FSX_ARGS"
+if ! _fsx 1; then
+       umount $SCRATCH_DEV 2>/dev/null
+       status=1
+       exit
+fi
+
+if ! _check_quota_usage; then
+       umount $SCRATCH_DEV 2>/dev/null
+       status=1
+       exit
+fi
+
+umount $SCRATCH_DEV 2>/dev/null
+status=0
+exit
diff --git a/tests/generic/231.out b/tests/generic/231.out
new file mode 100644 (file)
index 0000000..ef264a9
--- /dev/null
@@ -0,0 +1,16 @@
+QA output created by 231
+=== FSX Standard Mode, Memory Mapping, 1 Tasks ===
+All operations completed A-OK!
+Comparing user usage
+Comparing group usage
+=== FSX Standard Mode, Memory Mapping, 4 Tasks ===
+All operations completed A-OK!
+All operations completed A-OK!
+All operations completed A-OK!
+All operations completed A-OK!
+Comparing user usage
+Comparing group usage
+=== FSX Standard Mode, Memory Mapping, 1 Tasks ===
+All operations completed A-OK!
+Comparing user usage
+Comparing group usage
diff --git a/tests/generic/232 b/tests/generic/232
new file mode 100755 (executable)
index 0000000..f7a1eb7
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/bash
+# FSQA Test No. 232
+#
+# Run fsstress with quotas enabled and verify accounted quotas in the end
+#
+# Derived from test 231
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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.quota
+
+_filter_num()
+{
+       tee -a $here/$seq.full |\
+       sed -e 's/[0-9][0-9]* inodes/I inodes/g' \
+           -e 's/[0-9][0-9]* paths/P paths/g' \
+           -e 's/seed = [0-9][0-9]*/seed = S/'
+}
+
+_fsstress()
+{
+       echo ""
+       echo "Testing fsstress"
+       echo ""
+
+       out=$SCRATCH_MNT/fsstress.$$
+       count=2000
+       args=`_scale_fsstress_args -d $out -n $count -p 7`
+
+       echo "fsstress $args" >> tee -a $here/$seq.full
+       if ! $FSSTRESS_PROG $args | tee -a $here/$seq.full | _filter_num
+       then
+               echo "    fsstress $args returned $?"
+               cat $tmp.out | tee -a $here/$seq.full
+               status=1
+       fi
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_scratch
+_require_quota
+_need_to_be_root
+
+_scratch_mkfs >> $seq.full 2>&1
+_scratch_mount "-o usrquota,grpquota"
+chmod 777 $SCRATCH_MNT
+quotacheck -u -g $SCRATCH_MNT 2>/dev/null
+quotaon -u -g $SCRATCH_MNT 2>/dev/null
+
+if ! _fsstress; then
+       umount $SCRATCH_DEV 2>/dev/null
+       exit
+fi
+
+if ! _check_quota_usage; then
+       umount $SCRATCH_DEV 2>/dev/null
+       status=1
+       exit
+fi
+
+umount $SCRATCH_DEV 2>/dev/null
+status=0
+exit
diff --git a/tests/generic/232.out b/tests/generic/232.out
new file mode 100644 (file)
index 0000000..5da53d4
--- /dev/null
@@ -0,0 +1,7 @@
+QA output created by 232
+
+Testing fsstress
+
+seed = S
+Comparing user usage
+Comparing group usage
diff --git a/tests/generic/233 b/tests/generic/233
new file mode 100755 (executable)
index 0000000..330041c
--- /dev/null
@@ -0,0 +1,101 @@
+#! /bin/bash
+# FSQA Test No. 233
+#
+# Run fsstress with quotas enabled and limits set low and verify accounted
+# quotas in the end
+#
+# Derived from test 231
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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.quota
+
+FSX_FILE_SIZE=64000000
+FSX_ARGS="-q -l $FSX_FILE_SIZE -o 65536 -S 191110531 -N 100000"
+
+_filter_num()
+{
+       tee -a $here/$seq.full |\
+       sed -e 's/[0-9][0-9]* inodes/I inodes/g' \
+           -e 's/[0-9][0-9]* paths/P paths/g' \
+           -e 's/seed = [0-9][0-9]*/seed = S/'
+}
+
+_fsstress()
+{
+       echo ""
+       echo "Testing fsstress"
+       echo ""
+
+       out=$SCRATCH_MNT/fsstress.$$
+       count=5000
+       args=`_scale_fsstress_args -z \
+-f rmdir=20 -f link=10 -f creat=10 -f mkdir=10 -f unlink=20 -f symlink=10 \
+-f rename=10 -f fsync=2 -f write=15 -f dwrite=15 \
+-n $count -d $out -p 7`
+
+       echo "fsstress $args" >> tee -a $here/$seq.full
+       if ! su $qa_user -c "$FSSTRESS_PROG $args" | tee -a $here/$seq.full | _filter_num
+       then
+               echo "    fsstress $args returned $?"
+               cat $tmp.out | tee -a $here/$seq.full
+               status=1
+       fi
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_scratch
+_require_quota
+_require_user
+_need_to_be_root
+
+_scratch_mkfs >> $seq.full 2>&1
+_scratch_mount "-o usrquota,grpquota"
+chmod 777 $SCRATCH_MNT
+quotacheck -u -g $SCRATCH_MNT 2>/dev/null
+quotaon -u -g $SCRATCH_MNT 2>/dev/null
+setquota -u $qa_user 32000 32000 1000 1000 $SCRATCH_MNT 2>/dev/null
+
+if ! _fsstress; then
+       umount $SCRATCH_DEV 2>/dev/null
+       exit
+fi
+
+if ! _check_quota_usage; then
+       umount $SCRATCH_DEV 2>/dev/null
+       status=1
+       exit
+fi
+
+umount $SCRATCH_DEV 2>/dev/null
+status=0
+exit
diff --git a/tests/generic/233.out b/tests/generic/233.out
new file mode 100644 (file)
index 0000000..91c1a30
--- /dev/null
@@ -0,0 +1,7 @@
+QA output created by 233
+
+Testing fsstress
+
+seed = S
+Comparing user usage
+Comparing group usage
diff --git a/tests/generic/234 b/tests/generic/234
new file mode 100755 (executable)
index 0000000..dbb13f6
--- /dev/null
@@ -0,0 +1,106 @@
+#! /bin/bash
+# FS QA Test No. 234
+#
+# Stress setquota and setinfo handling.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Jan Kara.  All Rights Reserved.
+#
+# Based on test 219,
+# Copyright (c) 2005 Silicon Graphics, 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`
+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.quota
+
+test_setting()
+{
+       echo; echo "### test limits and info setting"
+       count=2000
+       procs=5
+       idmod=200000
+       seed=$RANDOM
+       RANDOM=$seed
+       echo "Starting test with procs=$procs, idmod=$idmod, and seed=$seed" >>$seq.full
+
+       for (( i = 0; i < $procs; i++ )); do
+               ( SETUCOUNT=1; SETGCOUNT=1; SETUIDS[0]=0; SETGIDS[0]=0
+               for (( j = 0; j < $count; j++ )); do
+                       OP=$(($RANDOM%22))
+                       UG=$(($OP%2))
+                       OP=$(($OP/2))
+                       if [ $UG -eq 1 ]; then
+                               type='u'
+                       else
+                               type='g'
+                       fi
+                       if [ $OP -eq 10 ]; then
+                               setquota -t -$type $j $j $SCRATCH_MNT
+                       elif [ $OP -lt 5 ]; then
+                               ID=$((($RANDOM*32768+$RANDOM)%$idmod))
+                               if [ $UG -eq 1 ]; then
+                                       SETUIDS[$SETUCOUNT]=$ID
+                                       SETUCOUNT=$(($SETUCOUNT+1))
+                               else
+                                       SETGIDS[$SETGCOUNT]=$ID
+                                       SETGCOUNT=$(($SETGCOUNT+1))
+                               fi
+                               setquota -$type $ID $j $j $j $j $SCRATCH_MNT
+                       else
+                               if [ $UG -eq 1 ]; then
+                                       ID=${SETUIDS[$(($RANDOM%$SETUCOUNT))]}
+                               else
+                                       ID=${SETGIDS[$(($RANDOM%$SETGCOUNT))]}
+                               fi
+                               setquota -$type $ID 0 0 0 0 $SCRATCH_MNT
+                       fi
+               done )&
+       done
+       wait
+       echo "### done with testing"
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux #IRIX
+_require_scratch
+_require_quota
+_need_to_be_root
+
+# real QA test starts here
+rm -f $seq.full
+
+_scratch_mkfs >> $seq.full 2>&1
+_scratch_mount "-o usrquota,grpquota"
+quotacheck -u -g $SCRATCH_MNT 2>/dev/null
+quotaon -u -g $SCRATCH_MNT 2>/dev/null
+test_setting
+umount $SCRATCH_DEV
+
+status=0
+exit
diff --git a/tests/generic/234.out b/tests/generic/234.out
new file mode 100644 (file)
index 0000000..78d1587
--- /dev/null
@@ -0,0 +1,4 @@
+QA output created by 234
+
+### test limits and info setting
+### done with testing
diff --git a/tests/generic/235 b/tests/generic/235
new file mode 100755 (executable)
index 0000000..f4a1fce
--- /dev/null
@@ -0,0 +1,78 @@
+#! /bin/bash
+# FS QA Test No. 235
+#
+# Test whether quota gets properly reenabled after remount read-write
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Jan Kara.  All Rights Reserved.
+#
+# Based on test 219,
+# Copyright (c) 2005 Silicon Graphics, 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`
+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.quota
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux #IRIX
+_require_scratch
+_require_quota
+_require_user
+_need_to_be_root
+
+# real QA test starts here
+rm -f $seq.full
+
+_scratch_mkfs >> $seq.full 2>&1
+_scratch_mount "-o usrquota,grpquota"
+quotacheck -u -g $SCRATCH_MNT 2>/dev/null
+quotaon $SCRATCH_MNT 2>/dev/null
+
+touch $SCRATCH_MNT/testfile
+chown $qa_user:$qa_user $SCRATCH_MNT/testfile
+
+repquota -u -g $SCRATCH_MNT  | grep -v "^root" | _filter_scratch
+
+# XXX This is a nasty hack.  remount doesn't work on a fileystem
+# with a context; see https://bugzilla.redhat.com/show_bug.cgi?id=563267
+#
+# We work around it by editing the context out of mtab.  Sigh.
+sed -i "s#^$SCRATCH_DEV\(.*\),context=\"system_u:object_r:nfs_t:s0\"#$SCRATCH_DEV\1#" /etc/mtab
+mount -o remount,ro $SCRATCH_DEV 2>&1 | tee -a $seq.full | _filter_scratch
+touch $SCRATCH_MNT/failed 2>&1 | tee -a $seq.full | _filter_scratch
+mount -o remount,rw $SCRATCH_DEV 2>&1 | tee -a $seq.full | _filter_scratch
+
+$XFS_IO_PROG -F -c 'pwrite 0 8k' -c 'fsync' \
+                       $SCRATCH_MNT/testfile >>$seq.full 2>&1
+repquota -u -g $SCRATCH_MNT  | grep -v "^root" | _filter_scratch
+
+umount $SCRATCH_DEV 2>/dev/null
+
+status=0
+exit
diff --git a/tests/generic/235.out b/tests/generic/235.out
new file mode 100644 (file)
index 0000000..a095694
--- /dev/null
@@ -0,0 +1,34 @@
+QA output created by 235
+*** Report for user quotas on device SCRATCH_DEV
+Block grace time: 7days; Inode grace time: 7days
+                        Block limits                File limits
+User            used    soft    hard  grace    used  soft  hard  grace
+----------------------------------------------------------------------
+fsgqa     --       0       0       0              1     0     0       
+
+
+*** Report for group quotas on device SCRATCH_DEV
+Block grace time: 7days; Inode grace time: 7days
+                        Block limits                File limits
+Group           used    soft    hard  grace    used  soft  hard  grace
+----------------------------------------------------------------------
+fsgqa     --       0       0       0              1     0     0       
+
+
+touch: cannot touch `SCRATCH_MNT/failed': Read-only file system
+*** Report for user quotas on device SCRATCH_DEV
+Block grace time: 7days; Inode grace time: 7days
+                        Block limits                File limits
+User            used    soft    hard  grace    used  soft  hard  grace
+----------------------------------------------------------------------
+fsgqa     --       8       0       0              1     0     0       
+
+
+*** Report for group quotas on device SCRATCH_DEV
+Block grace time: 7days; Inode grace time: 7days
+                        Block limits                File limits
+Group           used    soft    hard  grace    used  soft  hard  grace
+----------------------------------------------------------------------
+fsgqa     --       8       0       0              1     0     0       
+
+
diff --git a/tests/generic/236 b/tests/generic/236
new file mode 100755 (executable)
index 0000000..ec70cdb
--- /dev/null
@@ -0,0 +1,68 @@
+#! /bin/bash
+# FS QA Test No. 236
+#
+# Check ctime updated or not if file linked
+# See also http://marc.info/?l=linux-btrfs&m=127434439020230&w=2
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 FUJITSU LIMITED. 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`
+echo "QA output created by $seq"
+
+_cleanup()
+{
+       rm -f $TEST_DIR/ouch*
+}
+
+here=`pwd`
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+
+# real QA test starts here
+_supported_fs generic
+# only Linux supports fallocate
+_supported_os Linux
+
+rm -f $TEST_DIR/ouch*
+
+# create a file and get its ctime
+touch $TEST_DIR/ouch
+ctime=`stat -c %Z $TEST_DIR/ouch`
+sleep 1
+
+# create a link to a file and get existing file's ctime
+link $TEST_DIR/ouch $TEST_DIR/ouch2
+ctime2=`stat -c %Z $TEST_DIR/ouch`
+
+# check ctime updated
+if [ $ctime2 -le $ctime ]; then
+       echo "ctime: $ctime -> $ctime2 "
+       echo "Fatal error: ctime not updated after link"
+       _cleanup
+       exit 1
+fi
+
+echo "Test over."
+# success, all done
+status=0
+exit
diff --git a/tests/generic/236.out b/tests/generic/236.out
new file mode 100644 (file)
index 0000000..f313fbb
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 236
+Test over.
diff --git a/tests/generic/237 b/tests/generic/237
new file mode 100755 (executable)
index 0000000..7ebb88e
--- /dev/null
@@ -0,0 +1,78 @@
+#! /bin/bash
+# FS QA Test No. 237
+#
+# Check user B can setfacl a file which belongs to user A
+# See also http://marc.info/?l=linux-btrfs&m=127434445620298&w=2
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 FUJITSU LIMITED. 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+runas=$here/src/runas
+status=1        # FAILure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.attr
+
+_cleanup()
+{
+       cd /
+       rm -f $tmp.*
+       [ -n "$testdir" ] && rm -rf $testdir/$seq.dir1
+       _cleanup_testdir
+}
+
+# real QA test starts here
+_supported_fs generic
+# only Linux supports fallocate
+_supported_os Linux
+
+[ -x $runas ] || _notrun "$runas executable not found"
+
+rm -f $seq.full
+
+_setup_testdir
+
+_need_to_be_root
+_acl_setup_ids
+_require_acls
+
+# get dir
+cd $testdir
+rm -rf $seq.dir1
+mkdir $seq.dir1
+cd $seq.dir1
+
+touch file1
+chown $acl1.$acl1 file1
+
+echo "Expect to FAIL"
+$runas -u $acl2 -g $acl2 -- `which setfacl` -m u::rwx file1 2>&1 | sed 's/^setfacl: \/.*file1: Operation not permitted$/setfacl: file1: Operation not permitted/'
+
+echo "Test over."
+# success, all done
+status=0
+exit
diff --git a/tests/generic/237.out b/tests/generic/237.out
new file mode 100644 (file)
index 0000000..09d98c6
--- /dev/null
@@ -0,0 +1,4 @@
+QA output created by 237
+Expect to FAIL
+setfacl: file1: Operation not permitted
+Test over.
diff --git a/tests/generic/239 b/tests/generic/239
new file mode 100755 (executable)
index 0000000..8aa4ed0
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/bash
+# FS QA Test No. 239
+#
+# Read from a sparse file immedialy after filling a hole to test for races
+# in unwritten extent conversion.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 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`
+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 $TEST_DIR/tst-aio-dio-sparse-unwritten
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_supported_fs generic
+_supported_os Linux
+
+_require_sparse_files
+_require_aiodio aio-dio-hole-filling-race
+
+echo "Silence is golden"
+
+for i in `seq 1 500`; do
+  $AIO_TEST $TEST_DIR/tst-aio-dio-hole-filling-race || break
+done
+
+status=$?
+exit
diff --git a/tests/generic/239.out b/tests/generic/239.out
new file mode 100644 (file)
index 0000000..aa7ebf3
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 239
+Silence is golden
diff --git a/tests/generic/240 b/tests/generic/240
new file mode 100755 (executable)
index 0000000..d5f8940
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/bash
+# FS QA Test No. 240
+#
+# Test that non-block-aligned aio+dio into holes does not leave
+# zero'd out portions of the file
+#
+# QEMU IO to a file-backed device with misaligned partitions
+# can send this sort of IO
+#
+# This test need only be run in the case where the logical block size
+# of the device can be smaller than the file system block size.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 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`
+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
+
+_supported_fs generic
+_supported_os Linux
+
+_require_sparse_files
+_require_aiodio aiodio_sparse2
+
+echo "Silence is golden."
+
+# real QA test starts here
+rm -f $seq.full
+
+rm -f $TEST_DIR/aiodio_sparse
+
+logical_block_size=`blockdev --getss $TEST_DEV`
+fs_block_size=`stat -f $TEST_DIR | grep "Block size:" | awk '{print $3}'`
+
+if [ $fs_block_size -le $logical_block_size ]; then
+       _notrun "fs block size must be larger than the device block size.  fs block size: $fs_block_size, device block size: $logical_block_size"
+fi
+
+# 2 threads, fs block sized writes, 64k filesize, stride through file by
+# fs block size, start at logical block size offset
+$AIO_TEST -i 2 -w $fs_block_size -s 64k -n $fs_block_size -o $logical_block_size "$TEST_DIR/aiodio_sparse"
+
+status=$?
+exit
diff --git a/tests/generic/240.out b/tests/generic/240.out
new file mode 100644 (file)
index 0000000..b6bdbce
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 240
+Silence is golden.
diff --git a/tests/generic/241 b/tests/generic/241
new file mode 100755 (executable)
index 0000000..ee572a7
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/bash
+# FS QA Test No. 241
+#
+# Run parallel dbench & check for filesystem corruption
+# This corrupted ext4 inode bitmaps due to races at one point
+#
+# Copyright (c) 2010 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`
+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
+
+_supported_fs generic
+_supported_os Linux
+
+[ "$DBENCH_PROG" = "" ] && _notrun "dbench not found"
+
+echo "Silence is golden."
+
+# real QA test starts here
+rm -f $seq.full
+
+rm -rf $TEST_DIR/dbench
+mkdir $TEST_DIR/dbench
+
+dbench -t 60 -D $TEST_DIR/dbench 4 >> $seq.full
+
+status=$?
+exit
diff --git a/tests/generic/241.out b/tests/generic/241.out
new file mode 100644 (file)
index 0000000..55cd2c8
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 241
+Silence is golden.
diff --git a/tests/generic/245 b/tests/generic/245
new file mode 100755 (executable)
index 0000000..fb81d39
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/bash
+# FS QA Test No. 245
+#
+# Check that directory renames onto non-empty targets fail
+#
+# Based on a bug report and testcase from  Vlado Plaga <rechner@vlado-do.de>
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Christoph Hellwig.  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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+dir=$TEST_DIR/test-mv
+
+_cleanup()
+{
+       rm -rf $dir
+}
+
+# According to the rename(2) manpage you can get either EEXIST or ENOTEMPTY as an
+# error for trying to rename a non-empty directory, so just catch the error for
+# ENOTMEMPTY and replace it with the EEXIST output so that either result passes
+_filter_directory_not_empty()
+{
+       sed -e "s,Directory not empty,File exists,g"
+}
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+
+mkdir $dir
+
+mkdir $dir/aa
+mkdir $dir/ab
+touch $dir/aa/1
+mkdir $dir/ab/aa
+touch $dir/ab/aa/2
+
+mv $dir/ab/aa/ $dir 2>&1 | _filter_test_dir | _filter_directory_not_empty
+
+status=0
+exit $status
diff --git a/tests/generic/245.out b/tests/generic/245.out
new file mode 100644 (file)
index 0000000..8322aac
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 245
+mv: cannot move `TEST_DIR/test-mv/ab/aa/' to `TEST_DIR/test-mv/aa': File exists
diff --git a/tests/generic/246 b/tests/generic/246
new file mode 100755 (executable)
index 0000000..d82e27d
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/bash
+# FS QA Test No. 246
+#
+# Check that truncation after failed writes does not zero too much data.
+#
+# Based on a bug report and testcase from
+# Marius Tolzmann <tolzmann@molgen.mpg.de>
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Christoph Hellwig.  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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+file=$TEST_DIR/mmap-writev
+
+_cleanup()
+{
+       rm -rf $file
+       rm -rf $file.NEW
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+echo -n "cccccccccc" > $file
+$here/src/t_mmap_writev $file $file.NEW
+od -t x2 $file.NEW
+
+status=0
+exit $status
diff --git a/tests/generic/246.out b/tests/generic/246.out
new file mode 100644 (file)
index 0000000..e00e48e
--- /dev/null
@@ -0,0 +1,4 @@
+QA output created by 246
+0000000 6161 6161 6161 6161 6161 6262 6262 6262
+0000020 6262 6262 6363 6363 6363 6363 6363
+0000036
diff --git a/tests/generic/247 b/tests/generic/247
new file mode 100755 (executable)
index 0000000..3a2f735
--- /dev/null
@@ -0,0 +1,78 @@
+#! /bin/bash
+# FS QA Test No. 247
+#
+# Test for race between direct I/O and mmap
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 7 15
+
+_cleanup()
+{
+    cd /
+    rm -f $tmp.* $testfile
+    wait
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs generic
+_supported_os Linux
+
+testfile=$TEST_DIR/$seq.$$
+
+loops=500
+iosize=1048576
+
+# Initialise file
+dd if=/dev/zero of=$testfile bs=$iosize count=$loops &> /dev/null
+[ $? -ne 0 ] && exit
+sync
+       
+# Direct I/O overwriter
+dd if=/dev/zero of=$testfile oflag=direct bs=$iosize count=$loops conv=notrunc &> /dev/null &
+[ $? -ne 0 ] && exit
+
+# Mmap writer
+start=`expr $loops - 1`
+for i in `seq $start -1 0`
+do
+       offset=`expr $i \* $iosize`
+       $XFS_IO_PROG -F -f -c "mmap -w $offset $iosize" -c "mwrite $offset $iosize" $testfile
+       [ $? -ne 0 ] && exit
+done
+
+wait
+
+echo "Silence is golden."
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/247.out b/tests/generic/247.out
new file mode 100644 (file)
index 0000000..356bfbd
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 247
+Silence is golden.
diff --git a/tests/generic/248 b/tests/generic/248
new file mode 100755 (executable)
index 0000000..f245c1c
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/bash
+# FS QA Test No. 248
+#
+# Test for pwrite hang problem when writing from mmaped buffer of the same page 
+#
+#-----------------------------------------------------------------------
+#    Copyright (c) 2010 Intel Corporation
+#
+#    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; version 2 of the License
+#
+#    This program is distributed in the hope that it will 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 to the Free Software Foundation, Inc., 59
+#    Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+#-----------------------------------------------------------------------
+#
+
+seq=`basename $0`
+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.* $TESTFILE
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs generic
+_supported_os Linux
+
+TESTFILE=$TEST_DIR/test_file
+TEST_PROG=$here/src/pwrite_mmap_blocked
+
+$TEST_PROG $TESTFILE
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/248.out b/tests/generic/248.out
new file mode 100644 (file)
index 0000000..d02c1ac
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 248
+pwrite 1 bytes from 2 to 3
diff --git a/tests/generic/249 b/tests/generic/249
new file mode 100755 (executable)
index 0000000..e72092d
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/bash
+# FS QA Test No. 249
+#
+# simple splice(2) test.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011 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`
+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.*
+       rm -f $SRC $DST
+       _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_setup_testdir
+
+echo "Feel the serenity."
+
+SRC=$TEST_DIR/$seq.src
+DST=$TEST_DIR/$seq.dst
+rm -f $seq.full
+
+$XFS_IO_PROG -F -f -c "pwrite -S 0xa5a55a5a 0 32768k" -c fsync $SRC >> $seq.full 2>&1
+[ $? -ne 0 ] && _fail "xfs_io pwrite failed"
+$XFS_IO_PROG -F -f -c "sendfile -i $SRC 0 32768k" -c fsync $DST >> $seq.full 2>&1
+[ $? -ne 0 ] && _fail "xfs_io sendfile failed"
+
+diff -q $SRC $DST
+status=$?
+[ $status -ne 0 ] && _fail "$SRC and $DST differ"
+
+exit
diff --git a/tests/generic/249.out b/tests/generic/249.out
new file mode 100644 (file)
index 0000000..592696f
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 249
+Feel the serenity.
diff --git a/tests/generic/251 b/tests/generic/251
new file mode 100755 (executable)
index 0000000..25f14bd
--- /dev/null
@@ -0,0 +1,183 @@
+#!/bin/bash
+# FS QA Test No. 251
+#
+# This test was created in order to verify filesystem FITRIM implementation.
+# By many concurrent copy and remove operations and checking that files
+# does not change after copied into SCRATCH_MNT test if FITRIM implementation
+# corrupts the filesystem (data/metadata).
+#
+#-----------------------------------------------------------------------
+# Copyright 2010 (C) Red Hat, Inc., Lukas Czerner <lczerner@redhat.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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=`mktemp -d`
+status=1    # failure is the default!
+trap "_cleanup; exit \$status" 0 1 3
+trap "_destroy; exit \$status" 2 15
+chpid=0
+mypid=$$
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_scratch
+_require_fstrim
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+_cleanup()
+{
+       rm -rf $tmp
+}
+
+_destroy()
+{
+       kill $pids $fstrim_pid 2> /dev/null
+       wait $pids $fstrim_pid 2> /dev/null
+       rm -rf $tmp
+}
+
+_destroy_fstrim()
+{
+       kill $fpid 2> /dev/null
+       wait $fpid 2> /dev/null
+}
+
+_fail()
+{
+       echo "$1"
+       kill $mypid 2> /dev/null
+}
+
+_guess_max_minlen()
+{
+       mmlen=100000
+       while [ $mmlen -gt 1 ]; do
+               $FSTRIM_PROG -l $(($mmlen*2))k -m ${mmlen}k $SCRATCH_MNT &> /dev/null && break
+               mmlen=$(($mmlen/2))
+       done
+       echo $mmlen
+}
+
+##
+# Background FSTRIM loop. We are trimming the device in the loop and for
+# test coverage, we are doing whole device trim followed by several smaller
+# trims.
+##
+fstrim_loop()
+{
+       trap "_destroy_fstrim; exit \$status" 2 15
+       fsize=$(df | grep $SCRATCH_MNT | grep $SCRATCH_DEV  | awk '{print $2}')
+       mmlen=$(_guess_max_minlen)
+
+       while true ; do
+               step=$((RANDOM*$RANDOM+4))
+               minlen=$(((RANDOM*($RANDOM%2+1))%$mmlen))
+               start=$RANDOM
+               if [ $((RANDOM%10)) -gt 7 ]; then
+                       $FSTRIM_PROG $SCRATCH_MNT &
+                       fpid=$!
+                       wait $fpid
+               fi
+               while [ $start -lt $fsize ] ; do
+                       $FSTRIM_PROG -m ${minlen}k -o ${start}k -l ${step}k $SCRATCH_MNT &
+                       fpid=$!
+                       wait $fpid
+                       start=$(( $start + $step ))
+               done
+       done
+}
+
+function check_sums() {
+       (
+       cd $SCRATCH_MNT/$p
+       find -P . -xdev -type f -print0 | xargs -0 md5sum | sort -o $tmp/stress.$$.$p
+       )
+
+       diff $tmp/content.sums $tmp/stress.$$.$p
+       if [ $? -ne 0 ]; then
+               _fail "!!!Checksums has changed - Filesystem possibly corrupted!!!\n"
+       fi
+       rm -f $tmp/stress.$$.$p
+}
+
+function run_process() {
+       local p=$1
+       repeat=10
+
+       sleep $((5*$p))s &
+       export chpid=$! && wait $chpid &> /dev/null
+       chpid=0
+
+       while [ $repeat -gt 0 ]; do
+
+               # Remove old directories.
+               rm -rf $SCRATCH_MNT/$p
+               export chpid=$! && wait $chpid &> /dev/null
+
+               # Copy content -> partition.
+               mkdir $SCRATCH_MNT/$p
+               cp -axT $content/ $SCRATCH_MNT/$p/
+               export chpid=$! && wait $chpid &> /dev/null
+
+               check_sums
+               repeat=$(( $repeat - 1 ))
+       done
+}
+
+nproc=20
+content=$here
+
+# Check for FITRIM support
+echo -n "Checking FITRIM support: "
+_test_batched_discard $SCRATCH_MNT || _notrun "FITRIM not supported on $SCRATCH_DEV"
+echo "done."
+
+mkdir -p $tmp
+
+(
+cd $content
+find -P . -xdev -type f -print0 | xargs -0 md5sum | sort -o $tmp/content.sums
+)
+
+echo -n "Running the test: "
+pids=""
+fstrim_loop &
+fstrim_pid=$!
+p=1
+while [ $p -le $nproc ]; do
+       run_process $p &
+       pids="$pids $!"
+       p=$(($p+1))
+done
+echo "done."
+
+wait $pids
+kill $fstrim_pid
+wait $fstrim_pid
+
+status=0
+
+exit
diff --git a/tests/generic/251.out b/tests/generic/251.out
new file mode 100644 (file)
index 0000000..3017b5e
--- /dev/null
@@ -0,0 +1,3 @@
+QA output created by 251
+Checking FITRIM support: done.
+Running the test: done.
diff --git a/tests/generic/255 b/tests/generic/255
new file mode 100755 (executable)
index 0000000..d2973a8
--- /dev/null
@@ -0,0 +1,66 @@
+#! /bin/bash
+# FS QA Test No. 255
+#
+# Test Generic fallocate hole punching
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Red Hat.  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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+_cleanup()
+{
+    rm -f $tmp.*
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.punch
+
+# real QA test starts here
+_supported_fs generic 
+_supported_os Linux
+
+_require_xfs_io_falloc_punch
+_require_xfs_io_falloc
+_require_xfs_io_fiemap
+
+testfile=$TEST_DIR/255.$$
+
+# Standard punch hole tests
+_test_generic_punch falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
+
+# Delayed allocation punch hole tests
+_test_generic_punch -d falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
+
+# Multi hole punch tests
+_test_generic_punch -k falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
+
+# Delayed allocation multi punch hole tests
+_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
+
+status=0 ; exit
diff --git a/tests/generic/255.out b/tests/generic/255.out
new file mode 100644 (file)
index 0000000..2ce882b
--- /dev/null
@@ -0,0 +1,307 @@
+QA output created by 255
+       1. into a hole
+daa100df6e6711906b61c9ab5aa16032
+       2. into allocated space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       3. into unwritten space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+daa100df6e6711906b61c9ab5aa16032
+       4. hole -> data
+0: [0..23]: hole
+1: [24..31]: extent
+2: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
+       5. hole -> unwritten
+0: [0..23]: hole
+1: [24..31]: extent
+2: [32..39]: hole
+daa100df6e6711906b61c9ab5aa16032
+       6. data -> hole
+0: [0..7]: extent
+1: [8..39]: hole
+1b3779878366498b28c702ef88c4a773
+       7. data -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..31]: extent
+3: [32..39]: hole
+1b3779878366498b28c702ef88c4a773
+       8. unwritten -> hole
+0: [0..7]: extent
+1: [8..39]: hole
+daa100df6e6711906b61c9ab5aa16032
+       9. unwritten -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..31]: extent
+3: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
+       10. hole -> data -> hole
+daa100df6e6711906b61c9ab5aa16032
+       11. data -> hole -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       12. unwritten -> data -> unwritten
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+daa100df6e6711906b61c9ab5aa16032
+       13. data -> unwritten -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       14. data -> hole @ EOF
+0: [0..23]: extent
+1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
+       15. data -> hole @ 0
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+       16. data -> cache cold ->hole
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+       17. data -> hole in single block file
+0: [0..7]: extent
+13535fd4d496bf0b74bb2335aa4d1b31
+       1. into a hole
+daa100df6e6711906b61c9ab5aa16032
+       2. into allocated space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       3. into unwritten space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+daa100df6e6711906b61c9ab5aa16032
+       4. hole -> data
+0: [0..23]: hole
+1: [24..31]: extent
+2: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
+       5. hole -> unwritten
+0: [0..23]: hole
+1: [24..31]: extent
+2: [32..39]: hole
+daa100df6e6711906b61c9ab5aa16032
+       6. data -> hole
+0: [0..7]: extent
+1: [8..39]: hole
+1b3779878366498b28c702ef88c4a773
+       7. data -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..31]: extent
+3: [32..39]: hole
+1b3779878366498b28c702ef88c4a773
+       8. unwritten -> hole
+0: [0..7]: extent
+1: [8..39]: hole
+daa100df6e6711906b61c9ab5aa16032
+       9. unwritten -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..31]: extent
+3: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
+       10. hole -> data -> hole
+daa100df6e6711906b61c9ab5aa16032
+       11. data -> hole -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       12. unwritten -> data -> unwritten
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+daa100df6e6711906b61c9ab5aa16032
+       13. data -> unwritten -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       14. data -> hole @ EOF
+0: [0..23]: extent
+1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
+       15. data -> hole @ 0
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+       16. data -> cache cold ->hole
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+       17. data -> hole in single block file
+0: [0..7]: extent
+13535fd4d496bf0b74bb2335aa4d1b31
+       1. into a hole
+0: [0..7]: extent
+1: [8..39]: hole
+5a58e46082be047d0f13bee7974015b9
+       2. into allocated space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       3. into unwritten space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       4. hole -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       5. hole -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       6. data -> hole
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       7. data -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       8. unwritten -> hole
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       9. unwritten -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       10. hole -> data -> hole
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       11. data -> hole -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       12. unwritten -> data -> unwritten
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       13. data -> unwritten -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       14. data -> hole @ EOF
+0: [0..23]: extent
+1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
+       15. data -> hole @ 0
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+       16. data -> cache cold ->hole
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+       17. data -> hole in single block file
+0: [0..7]: extent
+13535fd4d496bf0b74bb2335aa4d1b31
+       1. into a hole
+0: [0..7]: extent
+1: [8..39]: hole
+5a58e46082be047d0f13bee7974015b9
+       2. into allocated space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       3. into unwritten space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       4. hole -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       5. hole -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       6. data -> hole
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       7. data -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       8. unwritten -> hole
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       9. unwritten -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+       10. hole -> data -> hole
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       11. data -> hole -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       12. unwritten -> data -> unwritten
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       13. data -> unwritten -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+       14. data -> hole @ EOF
+0: [0..23]: extent
+1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
+       15. data -> hole @ 0
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+       16. data -> cache cold ->hole
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+       17. data -> hole in single block file
+0: [0..7]: extent
+13535fd4d496bf0b74bb2335aa4d1b31
diff --git a/tests/generic/256 b/tests/generic/256
new file mode 100755 (executable)
index 0000000..0d72795
--- /dev/null
@@ -0,0 +1,176 @@
+#! /bin/bash
+# FS QA Test No. 256
+#
+# Test Full File System Hole Punching
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011 IBM Corporation.  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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+_cleanup()
+{
+    rm -f $tmp.*
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.punch
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_xfs_io_falloc_punch
+_require_scratch
+_require_user
+
+testfile=$TEST_DIR/256.$$
+
+
+# _fill_fs()
+#
+# Fills a file system by repeatedly creating files in the given folder
+# starting with the given file size.  Files are reduced in size when
+# they can no longer fit untill no more files can be created.
+#
+# This routine is used by _test_full_fs_punch to test that a hole may
+# still be punched when the disk is full by borrowing reserved blocks.
+# All files are created as a non root user to prevent reserved blocks
+# from being consumed.
+#
+_fill_fs() {
+       local file_size=$1
+       local dir=$2
+       local block_size=$3
+       local file_count=1
+       local bytes_written=0
+
+       if [ $# -ne 3 ]
+       then
+               echo "USAGE: _fill_fs filesize dir block size"
+               exit 1
+       fi
+
+       # Creation of files or folders
+       # must not be done as root or
+       # reserved blocks will be consumed
+       _user_do "mkdir -p $dir &> /dev/null"
+       if [ $? -ne 0 ] ; then
+               return 0
+       fi
+
+       if [ $file_size -lt $block_size ]
+       then
+               $file_size = $block_size
+       fi
+
+       while [ $file_size -ge $block_size ]
+       do
+               bytes_written=0
+               _user_do "$XFS_IO_PROG -F -f -c \"pwrite 0 $file_size\" $dir/$file_count.bin &> /dev/null"
+
+               if [ -f $dir/$file_count.bin ]
+               then
+                       bytes_written=`$XFS_IO_PROG -F -c "stat"  $dir/$file_count.bin | grep stat.size | cut -d ' ' -f3`
+               fi
+
+               # If there was no room to make the file,
+               # then divide it in half, and keep going
+               if [ $bytes_written -lt $file_size ]
+               then
+                       file_size=$(( $file_size / 2 ))
+               fi
+               file_count=$(( $file_count + 1 ))
+
+       done
+}
+
+# _test_full_fs_punch()
+#
+# This function will test that a hole may be punched
+# even when the file system is full.  Reserved blocks
+# should be used to allow a punch hole to proceed even
+# when there is not enough blocks to further fragment the
+# file. To test this, this function will fragment the file
+# system by punching holes in regular intervals and filling
+# the file system between punches.
+#
+_test_full_fs_punch()
+{
+       local hole_len=$1      # The length of the holes to punch
+       local hole_interval=$2 # The interval between the holes
+       local iterations=$3    # The number of holes to punch
+       local file_name=$4     # File to punch holes in
+       local block_size=$5    # File system block size
+       local file_len=$(( $(( $hole_len + $hole_interval )) * $iterations ))
+       local path=`dirname $file_name`
+       local hole_offset=0
+
+       if [ $# -ne 5 ]
+       then
+               echo "USAGE: _test_full_fs_punch hole_len hole_interval iterations file_name block_size"
+               exit 1
+       fi
+
+       rm -f $file_name &> /dev/null
+
+       $XFS_IO_PROG -F -f -c "pwrite 0 $file_len" \
+               -c "fsync" $file_name &> /dev/null
+       chmod 666 $file_name
+
+       _fill_fs $(( 1024 * 1024 * 1024 )) $path/fill $block_size
+
+       for (( i=0; i<$iterations; i++ ))
+       do
+               # This part must not be done as root in order to
+               # test that reserved blocks are used when needed
+               _user_do "$XFS_IO_PROG -F -f -c \"fpunch $hole_offset $hole_len\" $file_name"
+               rc=$?
+               if [ $? -ne 0 ] ; then
+                       echo Punch hole failed
+                       break
+               fi
+
+               hole_offset=$(( $hole_offset + $hole_len + $hole_interval ))
+
+               _fill_fs $hole_len $path/fill.$i $block_size
+
+       done
+}
+
+# Make a small file system to fill
+umount $SCRATCH_DEV &> /dev/null
+_scratch_mkfs_sized $(( 1024 * 1024 * 1024 )) &> /dev/null
+_scratch_mount
+# Test must be able to write files with non-root permissions
+chmod 777 $SCRATCH_MNT
+
+block_size=`stat -f $SCRATCH_DEV | grep "Block size" | cut -d " " -f3`
+_test_full_fs_punch $(( $block_size * 2 )) $block_size 500 $SCRATCH_MNT/252.$$ $block_size
+
+status=0 ; exit
diff --git a/tests/generic/256.out b/tests/generic/256.out
new file mode 100644 (file)
index 0000000..e1b0437
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 256
diff --git a/tests/generic/257 b/tests/generic/257
new file mode 100755 (executable)
index 0000000..b58bd56
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/bash
+#
+# Check that no duplicate d_off values are returned and that those
+# values are seekable. Most work is done by the C program here.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011 Gražvydas Ignotas
+#
+# 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+_cleanup()
+{
+       rm -rf $TEST_DIR/ttt
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+mkdir $TEST_DIR/ttt
+for n in {1..168}; do
+    touch $TEST_DIR/ttt/$n;
+done
+src/t_dir_offset2 $TEST_DIR/ttt
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/generic/257.out b/tests/generic/257.out
new file mode 100644 (file)
index 0000000..ac232ec
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 257
+*** done
diff --git a/tests/generic/258 b/tests/generic/258
new file mode 100755 (executable)
index 0000000..87817bc
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/bash
+# FS QA Test No. 258
+#
+# Test timestamps prior to epoch
+# On 64-bit, ext2/3/4 was sign-extending when read from disk
+# See also commit 4d7bf11d649c72621ca31b8ea12b9c94af380e63
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+_cleanup()
+{
+    rm -f $tmp.*
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+TESTFILE=$TEST_DIR/timestamp-test.txt
+
+# Create a file with a timestamp prior to the epoch
+echo "Creating file with timestamp of Jan 1, 1960"
+touch -t 196001010101 $TESTFILE
+# Should yield -315593940 (prior to epoch)
+echo "Testing for negative seconds since epoch"
+ts=`stat -c %X $TESTFILE`
+if [ "$ts" -ge 0 ]; then
+       echo "Timestamp wrapped: $ts"
+       _fail "Timestamp wrapped"
+fi
+
+# unmount, remount, and check the timestamp
+echo "Remounting to flush cache"
+umount $TEST_DEV
+mount $TEST_DEV $TEST_DIR
+
+# Should yield -315593940 (prior to epoch)
+echo "Testing for negative seconds since epoch"
+ts=`stat -c %X $TESTFILE`
+if [ "$ts" -ge 0 ]; then
+       echo "Timestamp wrapped: $ts"
+       _fail "Timestamp wrapped"
+fi
+
+status=0 ; exit
diff --git a/tests/generic/258.out b/tests/generic/258.out
new file mode 100644 (file)
index 0000000..87fae0f
--- /dev/null
@@ -0,0 +1,5 @@
+QA output created by 258
+Creating file with timestamp of Jan 1, 1960
+Testing for negative seconds since epoch
+Remounting to flush cache
+Testing for negative seconds since epoch
diff --git a/tests/generic/260 b/tests/generic/260
new file mode 100755 (executable)
index 0000000..65a01c3
--- /dev/null
@@ -0,0 +1,189 @@
+#!/bin/bash
+# FS QA Test No. 260
+#
+# Purpose of this test is to check FITRIM argument handling to make sure
+# that the argument processing is right and that it does not overflow.
+#
+#-----------------------------------------------------------------------
+# Copyright 2011 (C) Red Hat, Inc., Lukas Czerner <lczerner@redhat.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`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=`mktemp -d`
+status=0
+trap "exit \$status" 0 1 2 3 15
+chpid=0
+mypid=$$
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_math
+_require_fstrim
+
+_require_scratch
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+_test_batched_discard $SCRATCH_MNT || _notrun "FITRIM not supported on $SCRATCH_DEV"
+
+fssize=$(df -k | grep "$SCRATCH_MNT" | grep "$SCRATCH_DEV"  | awk '{print $2}')
+
+beyond_eofs=$(_math "$fssize*2048")
+max_64bit=$(_math "2^64 - 1")
+
+# All these tests should return EINVAL
+# since the start is beyond the end of
+# the file system
+
+echo "[+] Start beyond the end of fs (should fail)"
+out=$($FSTRIM_PROG -o $beyond_eofs $SCRATCH_MNT 2>&1)
+[ $? -eq 0 ] && status=1
+echo $out | _filter_scratch
+
+echo "[+] Start beyond the end of fs with len set (should fail)"
+out=$($FSTRIM_PROG -o $beyond_eofs -l1M $SCRATCH_MNT 2>&1)
+[ $? -eq 0 ] && status=1
+echo $out | _filter_scratch
+
+echo "[+] Start = 2^64-1 (should fail)"
+out=$($FSTRIM_PROG -o $max_64bit $SCRATCH_MNT 2>&1)
+[ $? -eq 0 ] && status=1
+echo $out | _filter_scratch
+
+echo "[+] Start = 2^64-1 and len is set (should fail)"
+out=$($FSTRIM_PROG -o $max_64bit -l1M $SCRATCH_MNT 2>&1)
+[ $? -eq 0 ] && status=1
+echo $out | _filter_scratch
+
+_scratch_unmount
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+# All these tests should succeed
+# since the length should be truncated
+
+echo "[+] Default length (should succeed)"
+$FSTRIM_PROG $SCRATCH_MNT
+[ $? -ne 0 ] && status=1
+echo "[+] Default length with start set (should succeed)"
+$FSTRIM_PROG -o10M $SCRATCH_MNT
+[ $? -ne 0 ] && status=1
+echo "[+] Length beyond the end of fs (should succeed)"
+$FSTRIM_PROG -l $beyond_eofs $SCRATCH_MNT
+[ $? -ne 0 ] && status=1
+echo "[+] Length beyond the end of fs with start set (should succeed)"
+$FSTRIM_PROG -o10M -l $beyond_eofs $SCRATCH_MNT
+[ $? -ne 0 ] && status=1
+
+_scratch_unmount
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+# This is a bit fuzzy, but since the file system is fresh
+# there should be at least (fssize/2) free space to trim.
+# This is supposed to catch wrong FITRIM argument handling
+out=$($FSTRIM_PROG -v -o10M $SCRATCH_MNT)
+nopref=${out##*: }
+bytes=${nopref%% *}
+
+if [ $bytes -gt $(_math "$fssize*1024") ]; then
+       status=1
+       echo "After the full fs discard $bytes bytes were discarded"\
+            "however the file system is $(_math "$fssize*1024") bytes long."
+fi
+
+# Btrfs is special and this test does not apply to it
+# It is because btrfs does not have not-yet-used parts of the device
+# mapped and since we got here right after the mkfs, there is not
+# enough free extents in the root tree.
+if [ $bytes -le $(_math "$fssize*512") ] && [ $FSTYP != "btrfs" ]; then
+       status=1
+       echo "After the full fs discard $bytes bytes were discarded"\
+            "however the file system is $(_math "$fssize*1024") bytes long."
+fi
+
+# Now to catch overflows due to fsblk->allocation group number conversion
+# This is different for every file system and it also apply just to some of
+# them. In order to add check specific for file system you're interested in
+# compute the arguments as you need and make the file system with proper
+# alignment
+
+# (2^32-1) + 2 (this is set to overflow 32bit variable by 2)
+base=$(_math "2^32+1")
+
+case $FSTYP in
+       ext[34])
+               agsize=32768
+               bsize=4096
+               start=$(_math "$base*$agsize*$bsize")
+               len=$start
+               export MKFS_OPTIONS="-F -b $bsize -g $agsize"
+               ;;
+       xfs)
+               agsize=65538
+               bsize=4096
+               start=$(_math "$base*$agsize*$bsize")
+               len=$start
+               export MKFS_OPTIONS="-f -d agsize=$(_math "$agsize*$bsize") -b size=$bsize"
+               ;;
+       *)
+               # (2^32-1) * 4096 * 65536 == 32bit max size * block size * ag size
+               start=$(_math "(2^32 - 1) * 4096 * 65536")
+               len=$start
+               ;;
+esac
+
+_scratch_unmount
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+# It should fail since $start is beyond the end of file system
+$FSTRIM_PROG -o$start -l10M $SCRATCH_MNT &> /dev/null
+if [ $? -eq 0 ]; then
+       status=1
+       echo "It seems that fs logic handling start"\
+            "argument overflows"
+fi
+
+_scratch_unmount
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+# len should be big enough to cover the whole file system, so if the
+# number of discarded bytes is smaller than file system size/2 then it
+# most likely overflowed
+# Btrfs is special and this test does not apply to it
+# It is because btrfs does not have not-yet-used parts of the device
+# mapped and since we got here right after the mkfs, there is not
+# enough free extents in the root tree.
+out=$($FSTRIM_PROG -v -l$len $SCRATCH_MNT)
+nopref=${out##*: }
+bytes=${nopref%% *}
+if [ $bytes -le $(_math "$fssize*512") ] && [ $FSTYP != "btrfs" ]; then
+       status=1
+       echo "It seems that fs logic handling len argument overflows"
+fi
+
+echo "Test done"
+exit
diff --git a/tests/generic/260.out b/tests/generic/260.out
new file mode 100644 (file)
index 0000000..a16c4f7
--- /dev/null
@@ -0,0 +1,14 @@
+QA output created by 260
+[+] Start beyond the end of fs (should fail)
+fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
+[+] Start beyond the end of fs with len set (should fail)
+fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
+[+] Start = 2^64-1 (should fail)
+fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
+[+] Start = 2^64-1 and len is set (should fail)
+fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
+[+] Default length (should succeed)
+[+] Default length with start set (should succeed)
+[+] Length beyond the end of fs (should succeed)
+[+] Length beyond the end of fs with start set (should succeed)
+Test done
diff --git a/tests/generic/263 b/tests/generic/263
new file mode 100755 (executable)
index 0000000..18cd5de
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/bash
+# FS QA Test No. 263
+#
+# fsx exercising direct IO vs sub-block buffered I/O
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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`
+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
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+rm -f $seq.full
+
+run_fsx()
+{
+       echo fsx $@ | tee -a $seq.full
+       args=`echo $@ | sed -e "s/ BSIZE / $bsize /g" -e "s/ PSIZE / $psize /g"`
+       rm -f $TEST_DIR/junk
+       $here/ltp/fsx $args $TEST_DIR/junk >>$seq.full 2>&1
+       if [ $? -ne 0 ]; then
+               cat $seq.full
+               exit 1
+       fi
+}
+
+psize=`$here/src/feature -s`
+bsize=`blockdev --getss $TEST_DEV`
+
+run_fsx -N 10000  -o 8192   -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
+run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
+
+status=0
+exit
diff --git a/tests/generic/263.out b/tests/generic/263.out
new file mode 100644 (file)
index 0000000..64699f6
--- /dev/null
@@ -0,0 +1,3 @@
+QA output created by 263
+fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
+fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
diff --git a/tests/generic/269 b/tests/generic/269
new file mode 100755 (executable)
index 0000000..ed27fb4
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/bash
+# FSQA Test No. 269
+#
+# Run fsstress and ENSPC hitters in parallel, check fs consistency an the end
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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
+# Disable all sync operations to get higher load
+FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0"
+_workout()
+{
+       echo ""
+       echo "Run fsstress"
+       echo ""
+       num_iterations=10
+       enospc_time=2
+       out=$SCRATCH_MNT/fsstress.$$
+       args=`_scale_fsstress_args -p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out`
+       echo "fsstress $args" >> $here/$seq.full
+       $FSSTRESS_PROG $args > /dev/null 2>&1 &
+       pid=$!
+       echo "Run dd writers in parallel"
+       for ((i=0; i < num_iterations; i++))
+       do
+               # File will be opened with O_TRUNC each time
+               dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M \
+                       >> $here/$seq.full 2>&1
+               sleep $enospc_time
+       done
+       kill $pid
+       wait $pid
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_need_to_be_root
+_require_scratch
+
+_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1
+_scratch_mount
+
+if ! _workout; then
+       umount $SCRATCH_DEV 2>/dev/null
+       exit
+fi
+
+if ! _scratch_unmount; then
+       echo "failed to umount"
+       status=1
+       exit
+fi
+_check_scratch_fs
+status=$?
+exit
diff --git a/tests/generic/269.out b/tests/generic/269.out
new file mode 100644 (file)
index 0000000..0a83965
--- /dev/null
@@ -0,0 +1,5 @@
+QA output created by 269
+
+Run fsstress
+
+Run dd writers in parallel
diff --git a/tests/generic/270 b/tests/generic/270
new file mode 100755 (executable)
index 0000000..7841cd1
--- /dev/null
@@ -0,0 +1,108 @@
+#! /bin/bash
+# FSQA Test No. 270
+#
+# Run fsstress and ENSPC hitters in parallel, check quota and 
+# fs consistency an the end
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2006 Silicon Graphics, 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`
+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.quota
+
+# Disable all sync operations to get higher load
+FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0"
+_workout()
+{
+       echo ""
+       echo "Run fsstress"
+       echo ""
+       num_iterations=10
+       enospc_time=2
+       out=$SCRATCH_MNT/fsstress.$$
+       args=`_scale_fsstress_args -p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out`
+       echo "fsstress $args" >> $here/$seq.full
+       # Grant chown capability 
+       cp $FSSTRESS_PROG  $tmp.fsstress.bin
+       if [ "`whereis setcap`" == "setcap:" ]; then
+            _notrun "setcap not installed."
+       fi
+       setcap cap_chown=epi  $tmp.fsstress.bin
+
+       (su $qa_user -c "$tmp.fsstress.bin $args" &) > /dev/null 2>&1
+       pid=$!
+
+       echo "Run dd writers in parallel"
+       for ((i=0; i < num_iterations; i++))
+       do
+               # File will be opened with O_TRUNC each time
+               su $qa_user -c "dd if=/dev/zero \
+                       of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M " \
+                       >> $here/$seq.full 2>&1
+               sleep $enospc_time
+       done
+
+       killall $tmp.fsstress.bin
+       wait $pid
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_quota
+_require_user
+_need_to_be_root
+_require_scratch
+
+_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1
+_scratch_mount "-o usrquota,grpquota"
+chmod 777 $SCRATCH_MNT
+quotacheck -u -g $SCRATCH_MNT 2>/dev/null
+quotaon -u -g $SCRATCH_MNT 2>/dev/null
+
+if ! _workout; then
+       _scratch_unmount 2>/dev/null
+       exit
+fi
+
+if ! _check_quota_usage; then
+       _scratch_unmount 2>/dev/null
+       status=1
+       exit
+fi
+
+echo Comparing filesystem consistency
+if ! _scratch_unmount; then
+       echo "failed to umount"
+       status=1
+       exit
+fi
+_check_scratch_fs
+status=$?
+exit
diff --git a/tests/generic/270.out b/tests/generic/270.out
new file mode 100644 (file)
index 0000000..bbd8026
--- /dev/null
@@ -0,0 +1,8 @@
+QA output created by 270
+
+Run fsstress
+
+Run dd writers in parallel
+Comparing user usage
+Comparing group usage
+Comparing filesystem consistency
diff --git a/tests/generic/273 b/tests/generic/273
new file mode 100755 (executable)
index 0000000..4473fd4
--- /dev/null
@@ -0,0 +1,142 @@
+#! /bin/bash
+# FS QA Test No. 273
+#
+# reservation test with heavy cp workload
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011-2012 Fujitsu, 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
+#
+#-----------------------------------------------------------------------
+#
+#creator
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+       cd /
+       rm -rf $tmp.*
+       _scratch_unmount
+}
+
+. ./common.rc
+. ./common.filter
+
+threads=50
+count=2
+
+_threads_set()
+{
+       _cpu_num=`cat /proc/cpuinfo | grep "processor" | wc -l`
+       threads=$(($_cpu_num * 50))
+       if [ $threads -gt 200 ]
+       then
+               threads=200
+       fi
+}
+
+_file_create()
+{
+       _i=0
+
+       if ! mkdir $SCRATCH_MNT/origin
+       then
+               echo "mkdir origin err"
+               status=1
+               exit
+       fi
+
+       cd $SCRATCH_MNT/origin
+
+       _disksize=`df --block-size=1 $SCRATCH_DEV | awk -v sd=$SCRATCH_DEV 'BEGIN{c=0}{for(i=1;i<=NF;++i){a[c]=$i;++c}}END{for(entry in a){if(a[entry] ~ sd){print a[entry + 3]; break}}}'`
+       _disksize=$(($_disksize / 3))
+       _num=$(($_disksize / $count / $threads / 4096))
+       _count=$count
+       while [ $_i -lt $_num ]
+       do
+               dd if=/dev/zero of=file_$_i bs=4096 count=$_count >/dev/null 2>&1
+               _i=$(($_i + 1))
+       done
+
+       cd $here
+}
+
+_porter()
+{
+       _suffix=$1
+
+       if ! mkdir $SCRATCH_MNT/sub_$_suffix
+       then
+               echo "mkdir sub_xxx err"
+               status=1
+               exit
+       fi
+
+       cp -r $SCRATCH_MNT/origin $SCRATCH_MNT/sub_$_suffix >>$seq.full 2>&1
+       if [ $? -ne 0 ]
+       then
+               echo "_porter $_suffix not complete"
+       fi
+       
+       sync
+}
+
+_do_workload()
+{
+       _pids=""
+       _pid=1
+       
+       _threads_set
+       _file_create
+
+       _threads=$threads
+
+       while [ $_pid -lt $_threads ]
+       do
+               _porter $_pid &
+               _pids="$_pids $!"
+               _pid=$(($_pid + 1))
+       done
+
+       wait $_pids
+}
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+_require_scratch
+
+echo "------------------------------"
+echo "start the workload"
+echo "------------------------------"
+
+rm -f $seq.full
+
+_scratch_unmount 2>/dev/null
+_scratch_mkfs_sized $((2 * 1024 * 1024 * 1024)) >>$seq.full 2>&1
+_scratch_mount
+
+_do_workload
+
+_check_scratch_fs
+status=$?
+exit
diff --git a/tests/generic/273.out b/tests/generic/273.out
new file mode 100644 (file)
index 0000000..146af43
--- /dev/null
@@ -0,0 +1,4 @@
+QA output created by 273
+------------------------------
+start the workload
+------------------------------
diff --git a/tests/generic/274 b/tests/generic/274
new file mode 100755 (executable)
index 0000000..9b0fb71
--- /dev/null
@@ -0,0 +1,100 @@
+#! /bin/bash
+# FS QA Test No. 274
+#
+# preallocation test:
+# Preallocate space to a file, and fill the rest of the fs to 100%.
+# Then test a write into that preallocated space, which should succeed.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011-2012 Fujitsu, 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
+#
+#-----------------------------------------------------------------------
+#
+#creator
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0    # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+       cd /
+       rm -f $tmp.*
+       _scratch_unmount
+}
+
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+_require_scratch
+_require_xfs_io_falloc
+
+echo "------------------------------"
+echo "preallocation test"
+echo "------------------------------"
+
+rm -f $seq.full
+
+umount $SCRATCH_DEV 2>/dev/null
+_scratch_mkfs_sized $((1 * 1024 * 1024 * 1024)) >>$seq.full 2>&1
+_scratch_mount
+
+# Create a 4k file and Allocate 4M past EOF on that file
+xfs_io -F -f -c "pwrite 0 4k" -c "falloc -k 4k 4m" $SCRATCH_MNT/test \
+       >>$seq.full 2>&1 || _fail "failed to create test file"
+
+# Fill the rest of the fs completely
+# Note, this will show ENOSPC errors in $seq.full, that's ok.
+echo "Fill fs with 1M IOs; ENOSPC expected" >> $seq.full
+dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=1M >>$seq.full 2>&1
+echo "Fill fs with 4K IOs; ENOSPC expected" >> $seq.full
+dd if=/dev/zero of=$SCRATCH_MNT/tmp2 bs=4K >>$seq.full 2>&1
+sync
+# Last effort, use O_SYNC
+echo "Fill fs with 4K DIOs; ENOSPC expected" >> $seq.full
+dd if=/dev/zero of=$SCRATCH_MNT/tmp3 bs=4K oflag=sync >>$seq.full 2>&1
+# Save space usage info
+echo "Post-fill space:" >> $seq.full
+df $SCRATCH_MNT >>$seq.full 2>&1
+
+# Now attempt a write into all of the preallocated space -
+# in a very nasty way, badly fragmenting it and then filling it in.
+echo "Fill in prealloc space; fragment at offsets:" >> $seq.full
+for i in `seq 1 2 1023`; do
+       echo -n "$i " >> $seq.full
+       dd if=/dev/zero of=$SCRATCH_MNT/test seek=$i bs=4K count=1 conv=notrunc \
+               >>$seq.full 2>/dev/null || _fail "failed to write to test file"
+done
+sync
+echo >> $seq.full
+echo "Fill in prealloc space; fill holes at offsets:" >> $seq.full
+for i in `seq 2 2 1023`; do
+       echo -n "$i " >> $seq.full
+       dd if=/dev/zero of=$SCRATCH_MNT/test seek=$i bs=4K count=1 conv=notrunc \
+               >>$seq.full 2>/dev/null || _fail "failed to fill test file"
+done
+sync
+echo >> $seq.full
+
+echo "done"
+exit
diff --git a/tests/generic/274.out b/tests/generic/274.out
new file mode 100644 (file)
index 0000000..edbf3cc
--- /dev/null
@@ -0,0 +1,5 @@
+QA output created by 274
+------------------------------
+preallocation test
+------------------------------
+done
diff --git a/tests/generic/275 b/tests/generic/275
new file mode 100755 (executable)
index 0000000..dc1eeeb
--- /dev/null
@@ -0,0 +1,92 @@
+#! /bin/bash
+# FS QA Test No. 275
+#
+# The posix write test.  When write size is larger than disk free size,
+# should write as much as possible until ENOSPC.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011-2012 Fujitsu, 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
+#
+#-----------------------------------------------------------------------
+#
+#creator
+
+seq=`basename $0`
+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 /
+       _scratch_unmount
+}
+
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os IRIX Linux
+_require_scratch
+
+echo "------------------------------"
+echo "write until ENOSPC test"
+echo "------------------------------"
+
+rm -f $seq.full
+
+umount $SCRATCH_DEV 2>/dev/null
+_scratch_mkfs_sized $((2 * 1024 * 1024 * 1024)) >>$seq.full 2>&1
+_scratch_mount
+
+dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=256K count=1 >>$seq.full 2>&1
+[ $? -ne 0 ] && _fail "Error creating file"
+
+# Attempt to completely fill fs
+dd if=/dev/zero of=$SCRATCH_MNT/tmp2 bs=1M >>$seq.full 2>&1
+sync
+dd if=/dev/zero of=$SCRATCH_MNT/tmp3 bs=4K >>$seq.full 2>&1
+sync
+# Last effort, use O_SYNC
+dd if=/dev/zero of=$SCRATCH_MNT/tmp4 bs=4K oflag=sync >>$seq.full 2>&1
+# Save space usage info to the full file
+echo "Pre rm space:" >> $seq.full
+df $SCRATCH_MNT >>$seq.full 2>&1
+
+# Should leave approx 256k free
+rm -f $SCRATCH_MNT/tmp1
+sync
+echo "Post rm space:" >> $seq.full
+df $SCRATCH_MNT >>$seq.full 2>&1
+_freespace=`df -k $SCRATCH_MNT | tail -n 1 | awk '{print $4}'`
+[ $_freespace -gt 1024 ] && _fail "could not sufficiently fill filesystem"
+
+# Try a write larger than available space
+dd if=/dev/zero of=$SCRATCH_MNT/tmp1 bs=1M count=1 >>$seq.full 2>&1
+echo "Bytes written until ENOSPC:" >>$seq.full
+du $SCRATCH_MNT/tmp1 >>$seq.full
+
+# And at least some of it should succeed.
+_filesize=`ls -l $SCRATCH_MNT/tmp1 | awk '{print $5}'`
+[ $_filesize -eq 0 ] && _fail "write file err: Partial write until enospc failed; wrote 0 bytes."
+
+echo "done"
+status=0
+exit
diff --git a/tests/generic/275.out b/tests/generic/275.out
new file mode 100644 (file)
index 0000000..69b9d52
--- /dev/null
@@ -0,0 +1,5 @@
+QA output created by 275
+------------------------------
+write until ENOSPC test
+------------------------------
+done
diff --git a/tests/generic/277 b/tests/generic/277
new file mode 100755 (executable)
index 0000000..8ef809c
--- /dev/null
@@ -0,0 +1,69 @@
+#! /bin/bash
+# FS QA Test No. 277
+#
+# Check if ctime update caused by chattr is written to disk
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011 Fujitsu.  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`
+echo "QA output created by $seq"
+
+status=1       # failure is the default!
+
+_cleanup()
+{
+    rm -f $SCRATCH_MNT/tmp*
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_scratch
+
+_scratch_mkfs > /dev/null 2>&1
+_scratch_mount
+
+touch $SCRATCH_MNT/tmp
+_scratch_remount
+ctime1=`stat -c %z $SCRATCH_MNT/tmp`
+
+sleep 1
+chattr +A $SCRATCH_MNT/tmp
+chattr -A $SCRATCH_MNT/tmp
+ctime2=`stat -c %z $SCRATCH_MNT/tmp`
+
+_scratch_remount
+ctime3=`stat -c %z $SCRATCH_MNT/tmp`
+
+if [ "$ctime1" == "$ctime2" ]; then
+       echo "error: ctime not updated after chattr"
+elif [ "$ctime1" == "$ctime3" ]; then
+       echo "error: on disk ctime not updated"
+else
+       status=0
+fi
+
+exit
diff --git a/tests/generic/277.out b/tests/generic/277.out
new file mode 100644 (file)
index 0000000..9614b16
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 277
diff --git a/tests/generic/280 b/tests/generic/280
new file mode 100755 (executable)
index 0000000..336bea6
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/bash
+# FS QA Test No. 280
+#
+# Test quota vs. suspend/freeze deadlock, 
+# dcdbed85 quota: Fix deadlock with suspend and quotas
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2012 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`
+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
+. ./common.quota
+
+_require_scratch
+_require_quota
+_require_freeze
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_os Linux
+_supported_fs generic
+
+rm -f $seq.full
+
+umount $SCRATCH_DEV 2>/dev/null
+_scratch_mkfs >> $seq.full 2>&1
+_scratch_mount "-o usrquota,grpquota"
+quotacheck -u -g $SCRATCH_MNT 2>/dev/null
+quotaon $SCRATCH_MNT 2>/dev/null
+xfs_freeze -f $SCRATCH_MNT
+setquota -u root 1 2 3 4 $SCRATCH_MNT &
+sleep 1
+xfs_freeze -u $SCRATCH_MNT
+umount $SCRATCH_DEV
+
+# Failure comes in the form of a deadlock.
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/280.out b/tests/generic/280.out
new file mode 100644 (file)
index 0000000..fb29270
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 280
diff --git a/tests/generic/285 b/tests/generic/285
new file mode 100644 (file)
index 0000000..3bf080c
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/bash
+# FS QA Test No. 285
+#
+# SEEK_DATA/SEEK_HOLE sanity tests.
+#
+# Improved by Jeff.liu@oracle.com
+# Creater: josef@redhat.com
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011 Oracle Inc.  All Rights Reserved.
+# Copyright (c) 2011 Red Hat.  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`
+echo "QA output created by $seq"
+
+here=`pwd`
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_supported_fs generic
+_supported_os Linux
+
+BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
+
+[ -x $here/src/seek_sanity_test ] || _notrun "seek_sanitfy_tester not built"
+
+_cleanup()
+{
+       eval "rm -f $BASE_TEST_FILE.*"
+}
+
+$here/src/seek_sanity_test $BASE_TEST_FILE > $seq.full 2>&1 ||
+       _fail "seek sanity check failed!"
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/285.out b/tests/generic/285.out
new file mode 100644 (file)
index 0000000..58759aa
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 285
diff --git a/tests/generic/286 b/tests/generic/286
new file mode 100644 (file)
index 0000000..1bf0c87
--- /dev/null
@@ -0,0 +1,197 @@
+#! /bin/bash
+# FS QA Test No. 286
+#
+# SEEK_DATA/SEEK_HOLE copy tests.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011 Oracle 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`
+echo "QA output created by $seq"
+
+here=`pwd`
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+src=$TEST_DIR/seek_copy_testfile
+dest=$TEST_DIR/seek_copy_testfile.dest
+
+[ -x $here/src/seek_copy_test ] || _notrun "seek_copy_test not built"
+
+_cleanup()
+{
+       rm -f $src $dest
+}
+
+# seek_copy_test_01: tests file with holes and written data extents.
+# verify results:
+# 1. file size is identical.
+# 2. perform cmp(1) to compare SRC and DEST file byte by byte.
+test01()
+{
+       rm -f $src $dest
+
+       write_cmd="-c \"truncate 100m\""
+       for i in $(seq 0 5 100); do
+               offset=$(($i * $((1 << 20))))
+               write_cmd="$write_cmd -c \"pwrite $offset 1m\""
+       done
+
+       echo "*** test01() create sparse file ***" >>$seq.full
+       eval ${XFS_IO_PROG} -F -f "${write_cmd}" $src >>$seq.full 2>&1 ||
+               _fail "create sparse file failed!"
+       echo "*** test01() create sparse file done ***" >>$seq.full
+       echo >>$seq.full
+
+       $here/src/seek_copy_test $src $dest
+       
+       test $(stat --printf "%s" $src) = $(stat --printf "%s" $dest) ||
+               _fail "TEST01: file size check failed"
+
+       cmp $src $dest || _fail "TEST01: file bytes check failed"
+}
+
+# seek_copy_test_02 - tests file with holes, written and unwritten extents.
+# verify results:
+# 1. file size is identical.
+# 2. perform cmp(1) to compare SRC and DEST file byte by byte.
+test02()
+{
+       rm -rf $src $dest
+
+       write_cmd="-c \"truncate 200m\""
+       for i in $(seq 0 10 100); do
+               offset=$(($((6 << 20)) + $i * $((1 << 20))))
+               write_cmd="$write_cmd -c \"falloc $offset 3m\" -c \"pwrite $offset 1m\""
+       done
+
+       echo "*** test02() create sparse file ***" >>$seq.full
+       eval ${XFS_IO_PROG} -F -f "${write_cmd}" $src >>$seq.full 2>&1 ||
+               _fail "create sparse file failed!"
+       echo "*** test02() create sparse file done ***" >>$seq.full
+       echo >>$seq.full
+
+       $here/src/seek_copy_test $src $dest
+
+       test $(stat --printf "%s" $src) = $(stat --printf "%s" $dest) ||
+               _fail "TEST02: file size check failed"
+
+       cmp $src $dest || _fail "TEST02: file bytes check failed"
+}
+
+# seek_copy_test_03 - tests file with unwritten with data, repeated unwritten
+# without data, as well as data extents mapping.
+# verify results:
+# 1. file size is identical.
+# 2. perform cmp(1) to compare SRC and DEST file byte by byte.
+test03()
+{
+       rm -rf $src $dest
+
+       write_cmd="-c \"truncate 200m\""
+
+       #
+       # Firstly, make the file with allocated && reserved extents
+       # mapping without real data wrote.
+       #
+       for i in $(seq 0 10 180); do
+               offset=$(($((10 << 20)) + $i * $((1 << 20))))
+               write_cmd="$write_cmd -c \"falloc $offset 10m\""
+       done
+
+       #
+       # Secondly, write data to some unwritten extents, hence we
+       # have a test file will extents mapping as:
+       # |data|multiple unwritten_without_data|data| repeat...
+       for i in $(seq 0 60 180); do
+               offset=$(($((20 << 20)) + $i * $((1 << 20))))
+               write_cmd="$write_cmd -c \"pwrite $offset 10m\""
+       done
+
+       echo "*** test03() create sparse file ***" >>$seq.full
+       eval ${XFS_IO_PROG} -F -f "${write_cmd}" $src >>$seq.full 2>&1 ||
+               _fail "create sparse file failed!"
+       echo "*** test03() create sparse file done ***" >>$seq.full
+       echo >>$seq.full
+       $here/src/seek_copy_test $src $dest
+
+       test $(stat --printf "%s" $src) = $(stat --printf "%s" $dest) ||
+               _fail "TEST03: file size check failed"
+
+       cmp $src $dest || _fail "TEST03: file bytes check failed"
+}
+
+# seek_copy_test_04 - tests file with hole, repeated unwritten
+# without data, as well as data extents mapping.
+# verify results:
+# 1. file size is identical.
+# 2. perform cmp(1) to compare SRC and DEST file byte by byte.
+test04()
+{
+       rm -rf $src $dest
+
+       write_cmd="-c \"truncate 200m\""
+
+       #
+       # Firstly, make the file with allocated && reserved extents
+       # mapping without real data wrote.
+       #
+       for i in $(seq 30 30 180); do
+               offset=$(($((30 << 20)) + $i * $((1 << 20))))
+               write_cmd="$write_cmd -c \"falloc $offset 5m\""
+       done
+
+       #
+       # Secondly, write data to some unwritten extents, hence we
+       # have a test file will extents mapping as:
+       # |hole|multiple unwritten_without_data|hole|data| repeat...
+       for i in $(seq 30 90 180); do
+               offset=$(($((30 << 20)) + $i * $((1 << 20))))
+               write_cmd="$write_cmd -c \"pwrite $offset 2m\""
+       done
+
+       echo "*** test04() create sparse file ***" >>$seq.full
+       eval ${XFS_IO_PROG} -F -f "${write_cmd}" $src >>$seq.full 2>&1 ||
+               _fail "create sparse file failed!"
+       echo "*** test04() create sparse file done ***" >>$seq.full
+       echo >>$seq.full
+       $here/src/seek_copy_test $src $dest
+
+       test $(stat --printf "%s" $src) = $(stat --printf "%s" $dest) ||
+               _fail "TEST04: file size check failed"
+
+       cmp $src $dest || _fail "TEST04: file bytes check failed"
+}
+
+rm -f $seq.full
+test01
+test02
+test03
+test04
+
+status=0
+exit
diff --git a/tests/generic/286.out b/tests/generic/286.out
new file mode 100644 (file)
index 0000000..6415ad8
--- /dev/null
@@ -0,0 +1 @@
+QA output created by 286
diff --git a/tests/generic/288 b/tests/generic/288
new file mode 100644 (file)
index 0000000..9e2e583
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/bash
+# FS QA Test No. 288
+#
+# This check the FITRIM argument handling in the corner case where length is
+# smaller than block size of zero.
+#
+#-----------------------------------------------------------------------
+# Copyright 2012 (C) Red Hat, Inc., Lukas Czerner <lczerner@redhat.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`
+echo "QA output created by $seq"
+
+status=0
+trap "exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_fstrim
+_require_scratch
+
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+_test_batched_discard $SCRATCH_MNT || _notrun "FITRIM not supported on $SCRATCH_DEV"
+
+echo "[+] Length is zero (should fail)"
+out=$("$FSTRIM_PROG" -v -o0 -l0 $SCRATCH_MNT 2>&1)
+[ $? -eq 0 ] && status=1
+echo $out | _filter_scratch
+
+echo "[+] Length is smaller than block size (should fail)"
+out=$("$FSTRIM_PROG" -v -o0 -l100 $SCRATCH_MNT 2>&1)
+[ $? -eq 0 ] && status=1
+echo $out | _filter_scratch
+
+echo "Test done"
+exit
diff --git a/tests/generic/288.out b/tests/generic/288.out
new file mode 100644 (file)
index 0000000..a4e2d7b
--- /dev/null
@@ -0,0 +1,6 @@
+QA output created by 288
+[+] Length is zero (should fail)
+fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
+[+] Length is smaller than block size (should fail)
+fstrim: SCRATCH_MNT: FITRIM ioctl failed: Invalid argument
+Test done
diff --git a/tests/generic/294 b/tests/generic/294
new file mode 100644 (file)
index 0000000..3433c9b
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/bash
+# FS QA Test No. 294
+#
+# Tests for EEXIST (not EROFS) for inode creations, if
+# we ask to create an already-existing entity on an RO filesystem
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2012 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`
+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
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs generic
+_supported_os Linux
+_require_scratch
+
+THIS_TEST_DIR=$SCRATCH_MNT/$seq.test
+
+_create_files()
+{
+       mknod $THIS_TEST_DIR/testnode c 1 3
+       mkdir $THIS_TEST_DIR/testdir
+       touch $THIS_TEST_DIR/testtarget
+       ln -s $THIS_TEST_DIR/testtarget $THIS_TEST_DIR/testlink 2>&1 | _filter_ln
+}
+
+_scratch_mount
+
+rm -rf $THIS_TEST_DIR
+mkdir $THIS_TEST_DIR || _fail "Could not create dir for test"
+
+_create_files 2>&1 | _filter_scratch
+_scratch_mount -o remount,ro || _fail "Could not remount scratch readonly"
+_create_files 2>&1 | _filter_scratch
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/294.out b/tests/generic/294.out
new file mode 100644 (file)
index 0000000..027d9fc
--- /dev/null
@@ -0,0 +1,5 @@
+QA output created by 294
+mknod: `SCRATCH_MNT/294.test/testnode': File exists
+mkdir: cannot create directory `SCRATCH_MNT/294.test/testdir': File exists
+touch: cannot touch `SCRATCH_MNT/294.test/testtarget': Read-only file system
+ln: creating symbolic link `SCRATCH_MNT/294.test/testlink': File exists
diff --git a/tests/generic/299 b/tests/generic/299
new file mode 100644 (file)
index 0000000..80aa07e
--- /dev/null
@@ -0,0 +1,155 @@
+#! /bin/bash
+# FSQA Test No. 299
+#
+# AIO/DIO stress test
+# Run random AIO/DIO activity and fallocate/truncate simultaneously
+# Test will operate on huge sparsed files so ENOSPC is expected.
+#
+#-----------------------------------------------------------------------
+# (c) 2013 Dmitry Monakhov
+#
+# 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`
+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
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_need_to_be_root
+_require_scratch
+
+NUM_JOBS=$((4*LOAD_FACTOR))
+BLK_DEV_SIZE=`blockdev --getsz $SCRATCH_DEV`
+FILE_SIZE=$((BLK_DEV_SIZE * 512))
+
+cat >$tmp-$seq.fio <<EOF
+###########
+# $seq test fio activity
+# Filenames derived from jobsname and jobid like follows:
+# ${JOB_NAME}.${JOB_ID}.${ITERATION_ID}
+[global]
+ioengine=libaio
+bs=128k
+directory=${SCRATCH_MNT}
+filesize=${FILE_SIZE}
+size=999G
+iodepth=128*${LOAD_FACTOR}
+continue_on_error=write
+ignore_error=,ENOSPC
+error_dump=0
+create_on_open=1
+fallocate=none
+exitall=1
+
+## Perform direct aio, to files which may be truncated
+## by external task
+[direct_aio]
+direct=1
+buffered=0
+numjobs=${NUM_JOBS}
+rw=randwrite
+runtime=100*${TIME_FACTOR}
+time_based
+
+# Perform direct aio and verify data
+# This test case should check use-after-free issues
+[aio-dio-verifier]
+numjobs=1
+verify=crc32c-intel
+verify_fatal=1
+verify_dump=1
+verify_backlog=1024
+verify_async=4
+verifysort=1
+direct=1
+bs=4k
+rw=randrw
+filename=aio-dio-verifier
+
+# Perform buffered aio and verify data
+# This test case should check use-after-free issues
+[buffered-aio-verifier]
+numjobs=1
+verify=crc32c-intel
+verify_fatal=1
+verify_dump=1
+verify_backlog=1024
+verify_async=4
+verifysort=1
+direct=0
+buffered=1
+bs=4k
+rw=randrw
+filename=buffered-aio-verifier
+EOF
+
+_require_fio $tmp-$seq.fio
+
+_workout()
+{
+       echo ""
+       echo "Run fio with random aio-dio pattern"
+       echo ""
+       cat $tmp-$seq.fio >>  $seq.full
+       run_check $FIO_PROG $tmp-$seq.fio &
+       pid=$!
+       echo "Start fallocate/truncate loop"
+
+       for ((i=0; ; i++))
+       do
+           for ((k=1; k <= NUM_JOBS; k++))
+           do
+               fallocate -l $FILE_SIZE $SCRATCH_MNT/direct_aio.$k.0 \
+                       >> $seq.full 2>&1
+           done
+           for ((k=1; k <= NUM_JOBS; k++))
+           do
+               truncate -s 0 $SCRATCH_MNT/direct_aio.$k.0
+           done
+           # Following like will check that pid is still run.
+           # Once fio exit we can stop fallocate/truncate loop
+           kill -0 $pid > /dev/null 2>&1 || break
+       done
+       wait $pid
+}
+
+_scratch_mkfs >> $seq.full 2>&1
+_scratch_mount
+
+if ! _workout; then
+       umount $SCRATCH_DEV 2>/dev/null
+       exit
+fi
+
+if ! _scratch_unmount; then
+       echo "failed to umount"
+       status=1
+       exit
+fi
+_check_scratch_fs
+status=$?
+exit
diff --git a/tests/generic/299.out b/tests/generic/299.out
new file mode 100644 (file)
index 0000000..fb41f3b
--- /dev/null
@@ -0,0 +1,5 @@
+QA output created by 299
+
+Run fio with random aio-dio pattern
+
+Start fallocate/truncate loop
diff --git a/tests/generic/300 b/tests/generic/300
new file mode 100644 (file)
index 0000000..854efc8
--- /dev/null
@@ -0,0 +1,151 @@
+#! /bin/bash
+# FSQA Test No. 300
+#
+# AIO/DIO stress test
+# Run random AIO/DIO activity and fallocate/punch_hole simultaneously
+# Test will operate on huge sparsed file so ENOSPC is expected.
+#
+#-----------------------------------------------------------------------
+# (c) 2013 Dmitry Monakhov
+#
+# 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`
+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
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_need_to_be_root
+_require_scratch
+
+NUM_JOBS=$((4*LOAD_FACTOR))
+BLK_DEV_SIZE=`blockdev --getsz $SCRATCH_DEV`
+if [ $((BLK_DEV_SIZE)) -gt 1048576 ]
+then
+    BLK_DEV_SIZE=1048576
+fi
+FS_SIZE=$((BLK_DEV_SIZE * 512))
+
+cat >$tmp-$seq.fio <<EOF
+###########
+# $seq test fio activity
+# Run DIO, fallocate and punch_hole threads on a single in parallel
+#
+# If race exist old dio request may rewrite punched block after it was
+# allocated to another file, we will catch that by verifying blocks content
+#
+[global]
+directory=${SCRATCH_MNT}
+filesize=${FS_SIZE}
+size=999G
+continue_on_error=write
+ignore_error=,ENOSPC
+error_dump=0
+
+create_on_open=1
+fallocate=none
+exitall=1
+
+## Perform direct aio, to files which may be truncated
+## by external task
+[direct_aio_raicer]
+ioengine=libaio
+iodepth=128*${LOAD_FACTOR}
+bs=128k
+direct=1
+numjobs=${NUM_JOBS}
+rw=randwrite
+runtime=100*${TIME_FACTOR}
+time_based
+filename=racer
+
+# Run falloc and punch_hole threads in parallel
+# After activity file will be highly fragmented
+[falloc_raicer]
+ioengine=falloc
+runtime=100*${TIME_FACTOR}
+iodepth=1
+bssplit=128k/80:512k/10:32k/10
+rw=randwrite
+numjobs=1
+filename=racer
+
+[punch_hole_raicer]
+ioengine=falloc
+runtime=100*${TIME_FACTOR}
+bs=4k
+time_based=10
+rw=randtrim
+numjobs=2
+filename=racer
+time_based
+
+# Verifier thread continiously write to newly allcated blocks
+# and veryfy written content
+[aio-dio-verifier]
+ioengine=libaio
+iodepth=128*${LOAD_FACTOR}
+numjobs=1
+verify=crc32c-intel
+verify_fatal=1
+verify_dump=1
+verify_backlog=1024
+verify_async=4
+verifysort=1
+direct=1
+bs=4k
+rw=randwrite
+filename=aio-dio-verifier
+EOF
+
+_workout()
+{
+       echo ""
+       echo "Run fio with random aio-dio pattern"
+       echo ""
+       cat $tmp-$seq.fio >>  $seq.full
+       run_check $FIO_PROG $tmp-$seq.fio
+}
+
+_require_fio $tmp-$seq.fio
+
+_scratch_mkfs_sized $FS_SIZE >> $seq.full 2>&1
+_scratch_mount
+
+if ! _workout; then
+       umount $SCRATCH_DEV 2>/dev/null
+       exit
+fi
+
+if ! _scratch_unmount; then
+       echo "failed to umount"
+       status=1
+       exit
+fi
+_check_scratch_fs
+status=$?
+exit
diff --git a/tests/generic/300.out b/tests/generic/300.out
new file mode 100644 (file)
index 0000000..ac8a81e
--- /dev/null
@@ -0,0 +1,4 @@
+QA output created by 300
+
+Run fio with random aio-dio pattern
+
diff --git a/tests/generic/306 b/tests/generic/306
new file mode 100644 (file)
index 0000000..0be57dd
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/bash
+# FS QA Test No. 306
+#
+# Test RW open of a device on a RO fs
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2013 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`
+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
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs generic
+_supported_os Linux
+_require_scratch
+
+DEVNULL=$SCRATCH_MNT/devnull
+DEVZERO=$SCRATCH_MNT/devzero
+
+rm -f $seq.full
+_scratch_mkfs > $seq.full 2>&1
+_scratch_mount
+
+rm -f $DEVNULL $DEVZERO
+
+mknod $DEVNULL c 1 3 || _fail "Could not create devnull device"
+mknod $DEVZERO c 1 5 || _fail "Could not create devzero device"
+
+_scratch_unmount || _fail "Could not unmount scratch device"
+_scratch_mount -o ro || _fail "Could notemount scratch readonly"
+
+# We should be able to read & write to/from these devices even on an RO fs
+echo "== try to create new file"
+touch $SCRATCH_MNT/this_should_fail 2>&1 | _filter_scratch
+echo "== pwrite to null device"
+$XFS_IO_PROG -c "pwrite 0 512" /dev/null | _filter_xfs_io
+echo "== pread from zero device"
+$XFS_IO_PROG -c "pread 0 512" /dev/zero | _filter_xfs_io
+
+echo "== truncating write to null device"
+echo foo > $DEVNULL 2>&1 | _filter_scratch
+echo "== appending write to null device"
+echo foo >> $DEVNULL 2>&1 | _filter_scratch
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/306.out b/tests/generic/306.out
new file mode 100644 (file)
index 0000000..8644f38
--- /dev/null
@@ -0,0 +1,11 @@
+QA output created by 306
+== try to create new file
+touch: cannot touch `SCRATCH_MNT/this_should_fail': Read-only file system
+== pwrite to null device
+wrote 512/512 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+== pread from zero device
+read 512/512 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+== truncating write to null device
+== appending write to null device
index 4e01f0c1d480e3bfd3947f2192cfcdbde4d1dd0c..450e942fd4f71b0b19192b36becddf897d546545 100644 (file)
@@ -3,3 +3,109 @@
 # - do not start group names with a digit
 # - comment line before each group is "new" description
 #
+001 rw dir udf auto quick
+002 metadata udf auto quick
+005 dir udf auto quick
+006 dir udf auto quick
+007 dir udf auto quick
+010 other udf auto
+011 dir udf auto quick
+013 other ioctl udf auto quick
+014 rw udf auto quick
+015 other auto quick
+020 metadata attr udf auto quick
+053 acl repair auto quick
+062 attr udf auto quick
+068 other auto freeze dangerous stress
+069 rw udf auto quick
+070 attr udf auto quick stress
+074 rw udf auto
+075 rw udf auto quick
+076 metadata rw udf auto quick stress
+077 acl attr auto enospc
+079 acl attr ioctl metadata auto quick
+083 rw auto enospc stress
+088 perms auto quick
+089 metadata auto
+091 rw auto quick
+093 attr cap udf auto
+097 udf auto
+099 udf auto
+100 udf auto
+105 acl auto quick
+112 rw aio auto quick
+113 rw aio auto quick
+117 attr auto quick
+120 other auto quick
+123 perms auto quick
+124 pattern auto quick
+125 other auto
+126 perms auto quick
+127 rw auto
+128 perms auto quick
+129 rw auto quick
+130 pattern auto quick
+131 perms auto quick
+132 pattern auto
+133 rw auto
+135 metadata auto quick
+141 rw auto quick
+169 rw metadata auto quick
+184 metadata auto quick
+192 atime auto
+193 metadata auto quick
+198 auto aio quick
+204 metadata rw auto
+207 auto aio quick
+208 auto aio
+209 auto aio
+210 auto aio quick
+211 auto aio quick
+212 auto aio quick
+213 rw auto prealloc quick enospc
+214 rw auto prealloc quick
+215 auto metadata quick
+219 auto quota quick
+221 auto metadata quick
+223 auto quick
+224 auto
+225 auto quick
+226 auto enospc
+228 rw auto prealloc quick
+230 auto quota quick
+231 auto quota
+232 auto quota stress
+233 auto quota stress
+234 auto quota
+235 auto quota quick
+236 auto quick metadata
+237 auto quick acl
+239 auto aio rw
+240 auto aio quick rw
+241 auto
+245 auto quick dir
+246 auto quick rw
+247 auto quick rw
+248 auto quick rw
+249 auto quick rw
+251 ioctl trim
+255 auto quick prealloc
+256 auto quick
+257 dir auto quick
+258 auto quick
+260 auto quick trim
+263 rw auto quick
+269 auto rw prealloc ioctl enospc stress
+270 auto quota rw prealloc ioctl enospc stress
+273 auto rw
+274 auto rw prealloc
+275 auto rw
+277 auto ioctl quick metadata
+280 auto quota freeze dangerous
+285 auto rw
+286 other
+288 auto quick ioctl trim
+294 auto quick
+299 auto aio enospc rw stress
+300 auto aio enospc preallocrw stress
+306 auto quick rw