fixed order of quota reports to always follow:
[xfstests-dev.git] / 078
1 #! /bin/sh
2 # FS QA Test No. 078
3 #
4 # Check several growfs corner cases
5 #
6 #-----------------------------------------------------------------------
7 # Copyright (c) 2000-2003,2006 Silicon Graphics, Inc.  All Rights Reserved.
8 #-----------------------------------------------------------------------
9 #
10 # creator
11 owner=nathans@sgi.com
12
13 seq=`basename $0`
14 echo "QA output created by $seq"
15
16 here=`pwd`
17 tmp=/tmp/$$
18 status=1
19
20 trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
21
22 # get standard environment, filters and checks
23 . ./common.rc
24 . ./common.filter
25
26
27 _cleanup()
28 {
29     cd /
30     rm -f $tmp.*
31     umount $LOOP_MNT 2>/dev/null
32     rmdir $LOOP_MNT
33     _cleanup_testdir
34 }
35
36 # get standard environment, filters and checks
37 . ./common.rc
38 . ./common.filter
39
40 _require_loop
41
42 LOOP_DEV=$TEST_DIR/$seq.fs
43 LOOP_MNT=$TEST_DIR/$seq.mnt
44
45 _filter_io()
46 {
47         sed -e '/.* ops; /d'
48 }
49
50 # real QA test starts here
51 _supported_fs xfs
52 echo "*** create loop mount point"
53 rm -f $LOOP_MNT 2>/dev/null
54 mkdir $LOOP_MNT || _fail "cannot create loopback mount point"
55
56 _grow_loop()
57 {
58         original=$1
59         new_size=$2
60         bsize=$3
61
62         echo
63         echo "=== GROWFS (from $original to $new_size, $bsize blocksize)"
64         echo
65
66         echo "*** mkfs loop file (size=$original)"
67         /sbin/mkfs.xfs -bsize=$bsize -dfile,name=$LOOP_DEV,size=$original \
68                 | _filter_mkfs 2>/dev/null
69
70         echo "*** extend loop file"
71         $XFS_IO_PROG -c "pwrite $new_size $bsize" $LOOP_DEV | _filter_io
72         echo "*** mount loop filesystem"
73         mount -t xfs -o loop $LOOP_DEV $LOOP_MNT
74
75         echo "*** grow loop filesystem"
76         xfs_growfs $LOOP_MNT | _filter_mkfs 2>/dev/null
77
78         echo "*** unmount and check"
79         umount $LOOP_MNT
80         _check_xfs_filesystem $LOOP_DEV none none
81         rm -f $LOOP_DEV
82 }
83
84 # Wes' problem sizes...
85 _grow_loop 168024b 1376452608 4096
86
87 # Some other blocksize cases...
88 _grow_loop 168024b 1376452608 2048
89 _grow_loop 168024b 1376452608 512
90 _grow_loop 168024b 688230400 1024 
91
92 echo "*** all done"
93 status=0
94 exit