1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
FSCK_OPT=-fn
OUT=$test_name.log
EXP=$test_dir/expect
CONF=$TMPFILE.conf
cat > $CONF << ENDL
[fs_types]
ext4h = {
features = has_journal,extent,huge_file,^flex_bg,uninit_bg,dir_nlink,extra_isize,sparse_super,filetype,dir_index,ext_attr,resize_inode,64bit
blocksize = 1024
inode_size = 256
make_hugefiles = true
hugefiles_dir = /
hugefiles_slack = 32M
hugefiles_name = aaaaa
hugefiles_digits = 4
hugefiles_size = 1M
zero_hugefiles = false
}
ext4m = {
features = has_journal,extent,huge_file,^flex_bg,uninit_bg,dir_nlink,extra_isize,sparse_super,filetype,dir_index,ext_attr,resize_inode,64bit,metadata_csum
blocksize = 1024
inode_size = 256
make_hugefiles = true
hugefiles_dir = /
hugefiles_slack = 32M
hugefiles_name = aaaaa
hugefiles_digits = 4
hugefiles_size = 1M
zero_hugefiles = false
}
ENDL
echo "tune2fs dangerous prompts test" > $OUT
MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h -o Linux -U 6fc3daa4-180d-4f2b-a6f2-f7a5efb79bcf $TMPFILE 524288 >> $OUT 2>&1
# trigger a filesystem check
$DEBUGFS -w -R 'ssv mtime now' $TMPFILE > /dev/null 2>&1
$DEBUGFS -w -R 'ssv lastcheck 20000' $TMPFILE > /dev/null 2>&1
# add mcsum
echo "tune2fs -O metadata_csum test.img" >> $OUT
$TUNE2FS -O metadata_csum $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
# check fs
$FSCK -f -y -N test_filesys $TMPFILE > /dev/null 2>&1
# add mcsum
echo "tune2fs -O metadata_csum test.img" >> $OUT
$TUNE2FS -O metadata_csum $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h -o Linux -U 6fc3daa4-180d-4f2b-a6f2-f7a5efb79bcf $TMPFILE 524288 >> $OUT 2>&1
# dump and check
$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before
$FSCK $FSCK_OPT -f -N test_filesys $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
# add mcsum
echo "tune2fs -O metadata_csum test.img" >> $OUT
echo 'n' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -O metadata_csum $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
# change inode size
echo "tune2fs -I 512 test.img" >> $OUT
echo 'n' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -I 512 $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
# check
$FSCK -yD -N test_filesys $TMPFILE >> $OUT 2>&1
# dump and check
$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.after
echo "Change in FS metadata:" >> $OUT
diff -u $OUT.before $OUT.after | tail -n +3 >> $OUT
$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
$DUMPE2FS $TMPFILE 2> /dev/null | egrep '^(Filesystem features:|Filesystem UUID:|Inode size:)' > $OUT.before
# add mcsum
echo "tune2fs -O metadata_csum test.img" >> $OUT
echo 'y' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -O metadata_csum $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
$FSCK -yD -N test_filesys $TMPFILE >> $OUT 2>&1
# change inode size
echo "tune2fs -I 512 test.img" >> $OUT
echo 'y' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -I 512 $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
# change uuid
echo "tune2fs -U f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0 test.img" >> $OUT
echo 'y' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -U f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0 $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
# check
$FSCK -yD -N test_filesys $TMPFILE >> $OUT 2>&1
# dump and check
$DUMPE2FS $TMPFILE 2> /dev/null | egrep '^(Filesystem features:|Filesystem UUID:|Inode size:)' > $OUT.after
echo "Change in FS metadata:" >> $OUT
diff -u $OUT.before $OUT.after | tail -n +3 >> $OUT
$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
echo " " >> $OUT
echo "Testing with metadata checksum enabled" >> $OUT
MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4m -o Linux -U 6fc3daa4-180d-4f2b-a6f2-f7a5efb79bcf $TMPFILE 524288 >> $OUT 2>&1
$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before
$FSCK $FSCK_OPT -f -N test_filesys $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
# change uuid
echo "tune2fs -U random test.img" >> $OUT
echo 'n' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -U random $TMPFILE >> $OUT 2>&1
status=$?
echo Exit status is $status >> $OUT
rm $TMPFILE $OUT.before $OUT.after $CONF
#
# Do the verification
#
sed -f $cmd_dir/filter.sed -e 's/test_filesys:.*//g' < $OUT > $OUT.new
mv $OUT.new $OUT
cmp -s $OUT $EXP
status=$?
if [ "$status" = 0 ] ; then
echo "$test_name: $test_description: ok"
touch $test_name.ok
else
echo "$test_name: $test_description: failed"
diff $DIFF_OPTS $EXP $OUT > $test_name.failed
fi
unset IMAGE FSCK_OPT OUT EXP CONF
|