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
|
test_description="convert 64bit,mcsum and revert both"
if test -x $RESIZE2FS_EXE -a -x $E2UNDO_EXE; then
TDB_FILE=${TMPDIR:-/tmp}/resize2fs-$(basename $TMPFILE).e2undo
OUT=$test_name.log
rm -f $TDB_FILE >/dev/null 2>&1
fail=0
echo convert fs to 64bit,metadata_csum and revert both changes > $OUT
dd if=/dev/zero of=$TMPFILE bs=1k count=512 > /dev/null 2>&1
crc0=`$CRCSUM $TMPFILE`
echo $CRCSUM before mke2fs $crc0 >> $OUT
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
blocksize = 4096
inode_size = 256
make_hugefiles = true
hugefiles_dir = /
hugefiles_slack = 0
hugefiles_name = aaaaa
hugefiles_digits = 4
hugefiles_size = 1M
zero_hugefiles = false
}
ENDL
echo mke2fs -q -F -o Linux -T ext4h -O ^metadata_csum,^64bit -E lazy_itable_init=1 -b 4096 -z $TDB_FILE.0 $TMPFILE 524288 >> $OUT
MKE2FS_CONFIG=$CONF $MKE2FS -q -F -o Linux -T ext4h -O ^metadata_csum,^64bit -E lazy_itable_init=1 -b 4096 -z $TDB_FILE.0 $TMPFILE >> $OUT 2>&1
crc1=`$CRCSUM $TMPFILE`
echo $CRCSUM after mke2fs $crc1 >> $OUT
features="$($DUMPE2FS -h $TMPFILE 2> /dev/null | grep 'Filesystem features:')"
if [ "$(echo "${features}" | grep "metadata_csum" -c)" -gt 0 ] || [ "$(echo "${features}" | grep 64bit -c)" -gt 0 ]; then
echo "FS features: ${features}" >> $OUT
echo "Should not have 64bit or metadata_csum set" >> $OUT
fail=1
fi
$FSCK -f -n $TMPFILE >> $OUT 2>&1 || fail=1
echo using resize2fs to test e2undo >> $OUT
$RESIZE2FS -z $TDB_FILE.1 -b $TMPFILE >> $OUT 2>&1
crc2=`$CRCSUM $TMPFILE`
echo $CRCSUM after resize2fs $crc2 >> $OUT
features="$($DUMPE2FS -h $TMPFILE 2> /dev/null | grep 'Filesystem features:')"
if [ "$(echo "${features}" | grep "metadata_csum" -c)" -gt 0 ] || [ "$(echo "${features}" | grep 64bit -c)" -lt 1 ]; then
echo "FS features: ${features}" >> $OUT
echo "Should have 64bit but not metadata_csum set" >> $OUT
fail=1
fi
$FSCK -f -n $TMPFILE >> $OUT 2>&1 || fail=1
echo using tune2fs to test e2undo >> $OUT
$TUNE2FS -O metadata_csum -z $TDB_FILE.2 $TMPFILE >> $OUT 2>&1
crc3=`$CRCSUM $TMPFILE`
echo $CRCSUM after tune2fs $crc3 >> $OUT
features="$($DUMPE2FS -h $TMPFILE 2> /dev/null | grep 'Filesystem features:')"
if [ "$(echo "${features}" | grep "metadata_csum" -c)" -lt 1 ] || [ "$(echo "${features}" | grep 64bit -c)" -lt 1 ]; then
echo "FS features: ${features}" >> $OUT
echo "Should have 64bit and metadata_csum set" >> $OUT
fail=1
fi
$FSCK -f -n $TMPFILE >> $OUT 2>&1 || fail=1
echo using e2fsck to test e2undo >> $OUT
$FSCK -f -y -D -z $TDB_FILE.3 $TMPFILE >> $OUT 2>&1
crc4=`$CRCSUM $TMPFILE`
echo $CRCSUM after e2fsck $crc4 >> $OUT
features="$($DUMPE2FS -h $TMPFILE 2> /dev/null | grep 'Filesystem features:')"
if [ "$(echo "${features}" | grep "metadata_csum" -c)" -lt 1 ] || [ "$(echo "${features}" | grep 64bit -c)" -lt 1 ]; then
echo "FS features: ${features}" >> $OUT
echo "Should have 64bit and metadata_csum set" >> $OUT
fail=1
fi
$FSCK -f -n $TMPFILE >> $OUT 2>&1 || fail=1
echo roll back e2fsck >> $OUT
$E2UNDO $TDB_FILE.3 $TMPFILE >> $OUT 2>&1
crc3_2=`$CRCSUM $TMPFILE`
echo $CRCSUM after e2undo e2fsck $crc3_2 >> $OUT
features="$($DUMPE2FS -h $TMPFILE 2> /dev/null | grep 'Filesystem features:')"
if [ "$(echo "${features}" | grep "metadata_csum" -c)" -lt 1 ] || [ "$(echo "${features}" | grep 64bit -c)" -lt 1 ]; then
echo "FS features: ${features}" >> $OUT
echo "Should have 64bit and metadata_csum set" >> $OUT
fail=1
fi
$FSCK -f -n $TMPFILE >> $OUT 2>&1 || fail=1
echo roll back tune2fs >> $OUT
$E2UNDO $TDB_FILE.2 $TMPFILE >> $OUT 2>&1
crc2_2=`$CRCSUM $TMPFILE`
echo $CRCSUM after e2undo tune2fs $crc2_2 >> $OUT
features="$($DUMPE2FS -h $TMPFILE 2> /dev/null | grep 'Filesystem features:')"
if [ "$(echo "${features}" | grep "metadata_csum" -c)" -gt 0 ] || [ "$(echo "${features}" | grep 64bit -c)" -lt 1 ]; then
echo "FS features: ${features}" >> $OUT
echo "Should have 64bit but not metadata_csum set" >> $OUT
fail=1
fi
$FSCK -f -n $TMPFILE >> $OUT 2>&1 || fail=1
echo roll back resize2fs >> $OUT
$E2UNDO $TDB_FILE.1 $TMPFILE >> $OUT 2>&1
crc1_2=`$CRCSUM $TMPFILE`
echo $CRCSUM after e2undo resize2fs $crc1_2 >> $OUT
features="$($DUMPE2FS -h $TMPFILE 2> /dev/null | grep 'Filesystem features:')"
if [ "$(echo "${features}" | grep "metadata_csum" -c)" -gt 0 ] || [ "$(echo "${features}" | grep 64bit -c)" -gt 0 ]; then
echo "FS features: ${features}" >> $OUT
echo "Should not have 64bit or metadata_csum set" >> $OUT
fail=1
fi
$FSCK -f -n $TMPFILE >> $OUT 2>&1 || fail=1
echo roll back mke2fs >> $OUT
$E2UNDO $TDB_FILE.0 $TMPFILE >> $OUT 2>&1
crc0_2=`$CRCSUM $TMPFILE`
echo $CRCSUM after e2undo mke2fs $crc0_2 >> $OUT
features="$($DUMPE2FS -h $TMPFILE 2> /dev/null | grep 'Filesystem features:')"
if [ -n "${features}" ]; then
echo "FS features: ${features}" >> $OUT
echo "Should not have any features set" >> $OUT
fail=1
fi
$FSCK -f -n $TMPFILE >> $OUT 2>&1 && fail=1
if [ $fail -eq 0 ] && [ $crc0 = $crc0_2 ] && [ $crc1 = $crc1_2 ] && [ $crc2 = $crc2_2 ] && [ $crc3 = $crc3_2 ]; then
echo "$test_name: $test_description: ok"
touch $test_name.ok
else
ln -f $test_name.log $test_name.failed
echo "$test_name: $test_description: failed"
fi
rm -f $TDB_FILE.0 $TDB_FILE.1 $TDB_FILE.2 $TDB_FILE.3 $TMPFILE $CONF
fi
|