1e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall#!/bin/sh
2e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
3e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallresize_test () {
4e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
5e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrm -f $TMPFILE
6e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgralltouch $TMPFILE
7e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
8e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall# Verify that the $TMP filesystem handles $SIZE_2 sparse files.
9e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall# If that fails, try the local filesystem instead.
10e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif truncate -s $SIZE_2 $TMPFILE 2> /dev/null; then
11e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall        > $TMPFILE
12e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallelse
13e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	rm $TMPFILE
14e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	export TMPFILE=$(TMPDIR=. mktemp -t $test_name.XXXXXX.tmp)
15e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	touch $TMPFILE
16e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	if ! truncate -s $SIZE_2 $TMPFILE 2> /dev/null; then
17e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall		rm $TMPFILE
18e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall		return 111
19e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	fi
20e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
21e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
22e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $MKE2FS $FEATURES -qF $TMPFILE $SIZE_1 > $LOG
23e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall$MKE2FS $FEATURES -qF $TMPFILE $SIZE_1 >> $LOG
24e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
25e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallOUT_TMP=$(mktemp -t csum-tmp.XXXXXX)
26e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
27e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgralldate > $OUT_TMP
28e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallcat $E2FSCK >> $OUT_TMP
29e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $CRCSUM $OUT_TMP >> $LOG 2>&1
30e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallCSUM_1=$($CRCSUM $OUT_TMP)
31e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho Checksum is $CSUM_1 >> $LOG
32e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
33e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho Setting up file system >> $LOG
34e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall$DEBUGFS -w $TMPFILE  >> $LOG 2>&1 << EOF
35e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallmkdir test
36e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallcd test
37e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallwrite $OUT_TMP e2fsck
38e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallls /test
39e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallstat /test/e2fsck
40e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallquit
41e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallEOF
42e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho " " >> $LOG
43e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
44e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrm -f $OUT_TMP
45e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
46e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $FSCK -fy $TMPFILE >> $LOG 2>&1 
47e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall$FSCK -fy $TMPFILE >> $LOG 2>&1 
48e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
49e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $RESIZE2FS $RESIZE2FS_OPTS -d 31 $TMPFILE $SIZE_2 >> $LOG 2>&1
50e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! $RESIZE2FS $RESIZE2FS_OPTS -d 31 $TMPFILE $SIZE_2 >> $LOG 2>&1
51e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
52e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
53e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
54e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
55e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $FSCK -fp $TMPFILE >> $LOG 2>&1 
56e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! $FSCK -fp $TMPFILE >> $LOG 2>&1
57e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
58e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	dumpe2fs $TMPFILE >> $LOG
59e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
60e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
61e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
62e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
63e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall$DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
64e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
65e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $CRCSUM $OUT_TMP >> $LOG 2>&1
66e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallCSUM_2=$($CRCSUM $OUT_TMP)
67e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho Checksum is $CSUM_2 >> $LOG
68e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
69e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif test "$CSUM_1" != "$CSUM_2"
70e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
71e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
72e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
73e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
74e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $RESIZE2FS $RESIZE2FS_OPTS -d 31 -M $TMPFILE $SIZE_2 >> $LOG 2>&1
75e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! $RESIZE2FS $RESIZE2FS_OPTS -d 31 -M $TMPFILE $SIZE_2 >> $LOG 2>&1
76e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
77e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
78e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
79e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
80e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $FSCK -fp $TMPFILE >> $LOG 2>&1 
81e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! $FSCK -fp $TMPFILE >> $LOG 2>&1
82e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
83e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	dumpe2fs $TMPFILE >> $LOG
84e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
85e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
86e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
87e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
88e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall$DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
89e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
90e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $CRCSUM $OUT_TMP >> $LOG 2>&1
91e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallCSUM_2=$($CRCSUM $OUT_TMP)
92e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho Checksum is $CSUM_2 >> $LOG
93e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
94e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif test "$CSUM_1" != "$CSUM_2"
95e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
96e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
97e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
98e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
99e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $RESIZE2FS $RESIZE2FS_OPTS -d 31 -M $TMPFILE $SIZE_2 >> $LOG 2>&1
100e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! $RESIZE2FS $RESIZE2FS_OPTS -d 31 -M $TMPFILE $SIZE_2 >> $LOG 2>&1
101e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
102e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
103e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
104e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
105e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $FSCK -fp $TMPFILE >> $LOG 2>&1 
106e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! $FSCK -fp $TMPFILE >> $LOG 2>&1
107e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
108e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	dumpe2fs $TMPFILE >> $LOG
109e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
110e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
111e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
112e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
113e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall$DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
114e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
115e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $CRCSUM $OUT_TMP >> $LOG 2>&1
116e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallCSUM_2=$($CRCSUM $OUT_TMP)
117e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho Checksum is $CSUM_2 >> $LOG
118e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
119e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif test "$CSUM_1" != "$CSUM_2"
120e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
121e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
122e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
123e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
124e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $RESIZE2FS $RESIZE2FS_OPTS -d 31 -M $TMPFILE $SIZE_2 >> $LOG 2>&1
125e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! $RESIZE2FS $RESIZE2FS_OPTS -d 31 -M $TMPFILE $SIZE_2 >> $LOG 2>&1
126e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
127e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
128e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
129e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
130e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $FSCK -fp $TMPFILE >> $LOG 2>&1 
131e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! $FSCK -fp $TMPFILE >> $LOG 2>&1
132e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
133e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	dumpe2fs $TMPFILE >> $LOG
134e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
135e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
136e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
137e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
138e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall$DEBUGFS -R "dump /test/e2fsck $OUT_TMP" $TMPFILE >> $LOG 2>&1
139e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
140e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho $CRCSUM $OUT_TMP >> $LOG 2>&1
141e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallCSUM_2=$($CRCSUM $OUT_TMP)
142e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallecho Checksum is $CSUM_2 >> $LOG
143e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
144e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrm $OUT_TMP
145e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallunset OUT_TMP
146e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
147e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif test "$CSUM_1" != "$CSUM_2"
148e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallthen
149e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	return 1
150e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
151e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
152e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrm $TMPFILE
153e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallreturn 0
154e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
155e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall}
156