Whamcloud - gitweb
util: change git-ver to only use a version tag to describe git version
[tools/e2fsprogs.git] / tests / scripts / resize_test
1 #!/bin/sh
2
3 # old distros are missing "truncate", emulate it with "dd" if necessary
4 do_truncate()
5 {
6         [ "$1" = "-s" ] && size=$2 && shift 2
7
8         if ! truncate -s $size $1 >> $LOG 2>&1 ; then
9                 dd if=/dev/zero of=$1 bs=1 count=0 seek=$size >> $LOG 2>&1
10         fi
11 }
12
13 resize_test () {
14 DBG_FLAGS=63
15
16 echo $test_description starting > $LOG
17 rm -f $TMPFILE
18 touch $TMPFILE
19
20 # Verify that the $TMP filesystem handles $SIZE_2 sparse files.
21 # If that fails, try the local filesystem instead.
22 if do_truncate -s $SIZE_2 $TMPFILE 2> /dev/null; then
23         echo "using $TMPFILE" >> $LOG
24 else
25         rm $TMPFILE
26         export TMPFILE=$(mktemp ./$test_name.tmp.XXXXXX)
27         touch $TMPFILE
28         echo "using $TMPFILE" >> $LOG
29         if ! do_truncate -s $SIZE_2 $TMPFILE >> $LOG 2>&1; then
30                 rm $TMPFILE
31                 return 111
32         fi
33 fi
34 > $TMPFILE
35
36 echo $MKE2FS $FEATURES -qF $TMPFILE $SIZE_1 >> $LOG
37 $MKE2FS $FEATURES -qF $TMPFILE $SIZE_1 >> $LOG
38
39 OUT_TMP=$(mktemp ${TMPDIR:-/tmp}/csum-tmp.XXXXXX)
40
41 date > $OUT_TMP
42 cat $E2FSCK >> $OUT_TMP
43 echo $CRCSUM $OUT_TMP >> $LOG 2>&1
44 CSUM_1=$($CRCSUM $OUT_TMP)
45 echo Checksum is $CSUM_1 >> $LOG
46
47 echo Setting up file system >> $LOG
48 $DEBUGFS -w $TMPFILE  >> $LOG 2>&1 << EOF
49 mkdir test
50 cd test
51 write $OUT_TMP e2fsck
52 ls /test
53 stat /test/e2fsck
54 quit
55 EOF
56 echo " " >> $LOG
57
58 rm -f $OUT_TMP
59
60 echo $FSCK -fy $TMPFILE >> $LOG 2>&1 
61 $FSCK -fy $TMPFILE >> $LOG 2>&1 
62
63 chmod u-w $TMPFILE
64 echo $RESIZE2FS -P $TMPFILE >> $LOG 2>&1
65 if ! $RESIZE2FS -P $TMPFILE >> $LOG 2>&1
66 then
67         return 1
68 fi
69 chmod u+w $TMPFILE
70
71 echo $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS $TMPFILE $SIZE_2 >> $LOG 2>&1
72 if ! $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS $TMPFILE $SIZE_2 >> $LOG 2>&1
73 then
74         return 1
75 fi
76
77 echo $FSCK -fy $TMPFILE >> $LOG 2>&1
78 if ! $FSCK -fy $TMPFILE >> $LOG 2>&1
79 then
80         $DUMPE2FS $TMPFILE >> $LOG
81         return 1
82 fi
83
84 echo $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
85 $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
86
87 echo $CRCSUM $OUT_TMP >> $LOG 2>&1
88 CSUM_2=$($CRCSUM $OUT_TMP)
89 echo Checksum is $CSUM_2 >> $LOG
90
91 if test "$CSUM_1" != "$CSUM_2"
92 then
93         return 1
94 fi
95
96 # Uncomment to grab extra debugging image
97 #
98 #mv $TMPFILE /tmp/foo.img
99 #return 0
100
101 echo $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
102 if ! $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
103 then
104         return 1
105 fi
106
107 echo $FSCK -fy $TMPFILE >> $LOG 2>&1
108 if ! $FSCK -fy $TMPFILE >> $LOG 2>&1
109 then
110         $DUMPE2FS $TMPFILE >> $LOG
111         return 1
112 fi
113
114 echo $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
115 $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
116
117 echo $CRCSUM $OUT_TMP >> $LOG 2>&1
118 CSUM_2=$($CRCSUM $OUT_TMP)
119 echo Checksum is $CSUM_2 >> $LOG
120
121 if test "$CSUM_1" != "$CSUM_2"
122 then
123         return 1
124 fi
125
126 echo $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
127 if ! $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
128 then
129         return 1
130 fi
131
132 echo $FSCK -fy $TMPFILE >> $LOG 2>&1
133 if ! $FSCK -fy $TMPFILE >> $LOG 2>&1
134 then
135         $DUMPE2FS $TMPFILE >> $LOG
136         return 1
137 fi
138
139 echo $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
140 $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
141
142 echo $CRCSUM $OUT_TMP >> $LOG 2>&1
143 CSUM_2=$($CRCSUM $OUT_TMP)
144 echo Checksum is $CSUM_2 >> $LOG
145
146 if test "$CSUM_1" != "$CSUM_2"
147 then
148         return 1
149 fi
150
151 echo $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
152 if ! $RESIZE2FS $RESIZE2FS_OPTS -d $DBG_FLAGS -M $TMPFILE $SIZE_2 >> $LOG 2>&1
153 then
154         return 1
155 fi
156
157 echo $FSCK -fy $TMPFILE >> $LOG 2>&1
158 if ! $FSCK -fy $TMPFILE >> $LOG 2>&1
159 then
160         $DUMPE2FS $TMPFILE >> $LOG
161         return 1
162 fi
163
164 echo $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
165 $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
166
167 echo $CRCSUM $OUT_TMP >> $LOG 2>&1
168 CSUM_2=$($CRCSUM $OUT_TMP)
169 echo Checksum is $CSUM_2 >> $LOG
170
171 rm $OUT_TMP
172 unset OUT_TMP
173
174 rm -f $TMPFILE
175
176 if test "$CSUM_1" != "$CSUM_2"
177 then
178         return 1
179 fi
180
181 return 0
182
183 }