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