mirror of https://github.com/vitalif/e2fsprogs
tests: testcases for enabling/disabling metadata_csum via tune2fs
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>crypto
parent
052795e630
commit
77905d71e8
|
@ -25,3 +25,4 @@ s/\\015//g
|
||||||
/^ Checksum /d
|
/^ Checksum /d
|
||||||
s/, csum 0x\([0-9a-f]*\)//g
|
s/, csum 0x\([0-9a-f]*\)//g
|
||||||
s/ csum 0x\([0-9a-f]*\)//g
|
s/ csum 0x\([0-9a-f]*\)//g
|
||||||
|
/^Checksum:/d
|
||||||
|
|
|
@ -42,7 +42,6 @@ Required extra isize: 28
|
||||||
Desired extra isize: 28
|
Desired extra isize: 28
|
||||||
Default directory hash: half_md4
|
Default directory hash: half_md4
|
||||||
Checksum type: crc32c
|
Checksum type: crc32c
|
||||||
Checksum: 0x3a9935ab
|
|
||||||
Journal checksum type: crc32c
|
Journal checksum type: crc32c
|
||||||
Journal checksum: 0x661e816f
|
Journal checksum: 0x661e816f
|
||||||
Journal features: journal_64bit journal_checksum_v3
|
Journal features: journal_64bit journal_checksum_v3
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
tune2fs ^metadata_csum test
|
||||||
|
Creating filesystem with 524288 1k blocks and 65536 inodes
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
|
||||||
|
|
||||||
|
Allocating group tables: done
|
||||||
|
Writing inode tables: done
|
||||||
|
Creating journal (16384 blocks): done
|
||||||
|
Creating 477 huge file(s) with 1024 blocks each: done
|
||||||
|
Writing superblocks and filesystem accounting information: done
|
||||||
|
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
||||||
|
tune2fs -O ^metadata_csum test.img
|
||||||
|
Exit status is 0
|
||||||
|
Change in FS metadata:
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
Last mounted on: <not available>
|
||||||
|
Filesystem magic number: 0xEF53
|
||||||
|
Filesystem revision #: 1 (dynamic)
|
||||||
|
-Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
|
||||||
|
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
|
||||||
|
Default mount options: user_xattr acl
|
||||||
|
Filesystem state: clean
|
||||||
|
Errors behavior: Continue
|
||||||
|
@@ -33,7 +33,6 @@
|
||||||
|
Journal inode: 8
|
||||||
|
Default directory hash: half_md4
|
||||||
|
Journal backup: inode blocks
|
||||||
|
-Checksum type: crc32c
|
||||||
|
Journal features: (none)
|
||||||
|
Journal size: 16M
|
||||||
|
Journal length: 16384
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
|
@ -0,0 +1 @@
|
||||||
|
disable metadata_csum
|
|
@ -0,0 +1,67 @@
|
||||||
|
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,metadata_csum
|
||||||
|
blocksize = 1024
|
||||||
|
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 "tune2fs ^metadata_csum test" > $OUT
|
||||||
|
|
||||||
|
MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h $TMPFILE 524288 >> $OUT 2>&1
|
||||||
|
rm -rf $CONF
|
||||||
|
|
||||||
|
# dump and check
|
||||||
|
$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before
|
||||||
|
$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1
|
||||||
|
status=$?
|
||||||
|
echo Exit status is $status >> $OUT
|
||||||
|
|
||||||
|
# remove mcsum
|
||||||
|
echo "tune2fs -O ^metadata_csum test.img" >> $OUT
|
||||||
|
$TUNE2FS -O ^metadata_csum $TMPFILE >> $OUT 2>&1
|
||||||
|
status=$?
|
||||||
|
echo Exit status is $status >> $OUT
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
rm $TMPFILE $OUT.before $OUT.after
|
||||||
|
|
||||||
|
#
|
||||||
|
# Do the verification
|
||||||
|
#
|
||||||
|
|
||||||
|
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" -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
|
|
@ -0,0 +1,68 @@
|
||||||
|
tune2fs ^metadata_csum test
|
||||||
|
Creating filesystem with 524288 1k blocks and 65536 inodes
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
|
||||||
|
|
||||||
|
Allocating group tables: done
|
||||||
|
Writing inode tables: done
|
||||||
|
Creating journal (16384 blocks): done
|
||||||
|
Creating 477 huge file(s) with 1024 blocks each: done
|
||||||
|
Writing superblocks and filesystem accounting information: done
|
||||||
|
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
||||||
|
tune2fs -O ^metadata_csum,^uninit_bg test.img
|
||||||
|
Exit status is 0
|
||||||
|
Change in FS metadata:
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
Last mounted on: <not available>
|
||||||
|
Filesystem magic number: 0xEF53
|
||||||
|
Filesystem revision #: 1 (dynamic)
|
||||||
|
-Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
|
||||||
|
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize
|
||||||
|
Default mount options: user_xattr acl
|
||||||
|
Filesystem state: clean
|
||||||
|
Errors behavior: Continue
|
||||||
|
@@ -33,7 +33,6 @@
|
||||||
|
Journal inode: 8
|
||||||
|
Default directory hash: half_md4
|
||||||
|
Journal backup: inode blocks
|
||||||
|
-Checksum type: crc32c
|
||||||
|
Journal features: (none)
|
||||||
|
Journal size: 16M
|
||||||
|
Journal length: 16384
|
||||||
|
@@ -47,18 +46,18 @@
|
||||||
|
Block bitmap at 262 (+261)
|
||||||
|
Inode bitmap at 278 (+277)
|
||||||
|
Inode table at 294-549 (+293)
|
||||||
|
- 21 free blocks, 536 free inodes, 2 directories, 536 unused inodes
|
||||||
|
+ 21 free blocks, 536 free inodes, 2 directories
|
||||||
|
Free blocks: 4413-4433
|
||||||
|
Free inodes: 489-1024
|
||||||
|
-Group 1: (Blocks 8193-16384) [INODE_UNINIT]
|
||||||
|
+Group 1: (Blocks 8193-16384)
|
||||||
|
Backup superblock at 8193, Group descriptors at 8194-8197
|
||||||
|
Reserved GDT blocks at 8198-8453
|
||||||
|
Block bitmap at 263 (bg #0 + 262)
|
||||||
|
Inode bitmap at 279 (bg #0 + 278)
|
||||||
|
Inode table at 550-805 (bg #0 + 549)
|
||||||
|
- 0 free blocks, 1024 free inodes, 0 directories, 1024 unused inodes
|
||||||
|
+ 0 free blocks, 1024 free inodes, 0 directories
|
||||||
|
Free blocks:
|
||||||
|
Free inodes: 1025-2048
|
||||||
|
-Group 2: (Blocks 16385-24576) [INODE_UNINIT]
|
||||||
|
+Group 2: (Blocks 16385-24576)
|
||||||
|
Block bitmap at 264 (bg #0 + 263)
|
||||||
|
Inode bitmap at 280 (bg #0 + 279)
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
|
@ -0,0 +1 @@
|
||||||
|
disable metadata_csum and uninit_bg
|
|
@ -0,0 +1,67 @@
|
||||||
|
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,metadata_csum
|
||||||
|
blocksize = 1024
|
||||||
|
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 "tune2fs ^metadata_csum test" > $OUT
|
||||||
|
|
||||||
|
MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h $TMPFILE 524288 >> $OUT 2>&1
|
||||||
|
rm -rf $CONF
|
||||||
|
|
||||||
|
# dump and check
|
||||||
|
$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before
|
||||||
|
$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1
|
||||||
|
status=$?
|
||||||
|
echo Exit status is $status >> $OUT
|
||||||
|
|
||||||
|
# remove mcsum
|
||||||
|
echo "tune2fs -O ^metadata_csum,^uninit_bg test.img" >> $OUT
|
||||||
|
$TUNE2FS -O ^metadata_csum,^uninit_bg $TMPFILE >> $OUT 2>&1
|
||||||
|
status=$?
|
||||||
|
echo Exit status is $status >> $OUT
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
rm $TMPFILE $OUT.before $OUT.after
|
||||||
|
|
||||||
|
#
|
||||||
|
# Do the verification
|
||||||
|
#
|
||||||
|
|
||||||
|
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" -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
|
|
@ -0,0 +1,45 @@
|
||||||
|
tune2fs ^metadata_csum test
|
||||||
|
Creating filesystem with 524288 1k blocks and 65536 inodes
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
|
||||||
|
|
||||||
|
Allocating group tables: done
|
||||||
|
Writing inode tables: done
|
||||||
|
Creating journal (16384 blocks): done
|
||||||
|
Creating 477 huge file(s) with 1024 blocks each: done
|
||||||
|
Writing superblocks and filesystem accounting information: done
|
||||||
|
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
||||||
|
tune2fs -O ^metadata_csum,uninit_bg test.img
|
||||||
|
Exit status is 0
|
||||||
|
Change in FS metadata:
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
Last mounted on: <not available>
|
||||||
|
Filesystem magic number: 0xEF53
|
||||||
|
Filesystem revision #: 1 (dynamic)
|
||||||
|
-Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
|
||||||
|
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
|
||||||
|
Default mount options: user_xattr acl
|
||||||
|
Filesystem state: clean
|
||||||
|
Errors behavior: Continue
|
||||||
|
@@ -33,7 +33,6 @@
|
||||||
|
Journal inode: 8
|
||||||
|
Default directory hash: half_md4
|
||||||
|
Journal backup: inode blocks
|
||||||
|
-Checksum type: crc32c
|
||||||
|
Journal features: (none)
|
||||||
|
Journal size: 16M
|
||||||
|
Journal length: 16384
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
|
@ -0,0 +1 @@
|
||||||
|
disable metadata_csum and enable uninit_bg
|
|
@ -0,0 +1,67 @@
|
||||||
|
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,metadata_csum
|
||||||
|
blocksize = 1024
|
||||||
|
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 "tune2fs ^metadata_csum test" > $OUT
|
||||||
|
|
||||||
|
MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h $TMPFILE 524288 >> $OUT 2>&1
|
||||||
|
rm -rf $CONF
|
||||||
|
|
||||||
|
# dump and check
|
||||||
|
$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before
|
||||||
|
$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1
|
||||||
|
status=$?
|
||||||
|
echo Exit status is $status >> $OUT
|
||||||
|
|
||||||
|
# remove mcsum
|
||||||
|
echo "tune2fs -O ^metadata_csum,uninit_bg test.img" >> $OUT
|
||||||
|
$TUNE2FS -O ^metadata_csum,uninit_bg $TMPFILE >> $OUT 2>&1
|
||||||
|
status=$?
|
||||||
|
echo Exit status is $status >> $OUT
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
rm $TMPFILE $OUT.before $OUT.after
|
||||||
|
|
||||||
|
#
|
||||||
|
# Do the verification
|
||||||
|
#
|
||||||
|
|
||||||
|
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" -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
|
|
@ -0,0 +1,78 @@
|
||||||
|
tune2fs metadata_csum test
|
||||||
|
Creating filesystem with 524288 1k blocks and 65536 inodes
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
|
||||||
|
|
||||||
|
Allocating group tables: done
|
||||||
|
Writing inode tables: done
|
||||||
|
Creating journal (16384 blocks): done
|
||||||
|
Creating 477 huge file(s) with 1024 blocks each: done
|
||||||
|
Writing superblocks and filesystem accounting information: done
|
||||||
|
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
||||||
|
tune2fs -O metadata_csum test.img
|
||||||
|
|
||||||
|
Please run e2fsck -D on the filesystem.
|
||||||
|
|
||||||
|
Exit status is 0
|
||||||
|
test_filesys was not cleanly unmounted, check forced.
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 3A: Optimizing directories
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Change in FS metadata:
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
Last mounted on: <not available>
|
||||||
|
Filesystem magic number: 0xEF53
|
||||||
|
Filesystem revision #: 1 (dynamic)
|
||||||
|
-Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
|
||||||
|
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
|
||||||
|
Default mount options: user_xattr acl
|
||||||
|
Filesystem state: clean
|
||||||
|
Errors behavior: Continue
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
Inode count: 65536
|
||||||
|
Block count: 524288
|
||||||
|
Reserved block count: 26214
|
||||||
|
-Free blocks: 571
|
||||||
|
+Free blocks: 568
|
||||||
|
Free inodes: 65048
|
||||||
|
First block: 1
|
||||||
|
Block size: 1024
|
||||||
|
@@ -33,6 +33,7 @@
|
||||||
|
Journal inode: 8
|
||||||
|
Default directory hash: half_md4
|
||||||
|
Journal backup: inode blocks
|
||||||
|
+Checksum type: crc32c
|
||||||
|
Journal features: (none)
|
||||||
|
Journal size: 16M
|
||||||
|
Journal length: 16384
|
||||||
|
@@ -46,8 +47,8 @@
|
||||||
|
Block bitmap at 262 (+261)
|
||||||
|
Inode bitmap at 278 (+277)
|
||||||
|
Inode table at 294-549 (+293)
|
||||||
|
- 21 free blocks, 536 free inodes, 2 directories, 536 unused inodes
|
||||||
|
- Free blocks: 4413-4433
|
||||||
|
+ 18 free blocks, 536 free inodes, 2 directories, 536 unused inodes
|
||||||
|
+ Free blocks: 4413, 4417-4433
|
||||||
|
Free inodes: 489-1024
|
||||||
|
Group 1: (Blocks 8193-16384) [INODE_UNINIT]
|
||||||
|
Backup superblock at 8193, Group descriptors at 8194-8197
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
|
@ -0,0 +1 @@
|
||||||
|
enable metadata_csum
|
|
@ -0,0 +1,70 @@
|
||||||
|
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 = 0
|
||||||
|
hugefiles_name = aaaaa
|
||||||
|
hugefiles_digits = 4
|
||||||
|
hugefiles_size = 1M
|
||||||
|
zero_hugefiles = false
|
||||||
|
}
|
||||||
|
ENDL
|
||||||
|
|
||||||
|
echo "tune2fs metadata_csum test" > $OUT
|
||||||
|
|
||||||
|
MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h $TMPFILE 524288 >> $OUT 2>&1
|
||||||
|
rm -rf $CONF
|
||||||
|
|
||||||
|
# dump and check
|
||||||
|
$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before
|
||||||
|
$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1
|
||||||
|
status=$?
|
||||||
|
echo Exit status is $status >> $OUT
|
||||||
|
|
||||||
|
# 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
|
||||||
|
$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
|
||||||
|
|
||||||
|
rm $TMPFILE $OUT.before $OUT.after
|
||||||
|
|
||||||
|
#
|
||||||
|
# Do the verification
|
||||||
|
#
|
||||||
|
|
||||||
|
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" -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
|
|
@ -0,0 +1,73 @@
|
||||||
|
tune2fs metadata_csum test
|
||||||
|
Creating filesystem with 524288 1k blocks and 65536 inodes
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
|
||||||
|
|
||||||
|
Allocating group tables: done
|
||||||
|
Writing inode tables: done
|
||||||
|
Creating journal (16384 blocks): done
|
||||||
|
mke2fs: Operation not supported for inodes containing extents while creating huge files
|
||||||
|
Writing superblocks and filesystem accounting information: done
|
||||||
|
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
||||||
|
tune2fs -O metadata_csum test.img
|
||||||
|
Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.
|
||||||
|
Exit status is 0
|
||||||
|
|
||||||
|
Change in FS metadata:
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
Last mounted on: <not available>
|
||||||
|
Filesystem magic number: 0xEF53
|
||||||
|
Filesystem revision #: 1 (dynamic)
|
||||||
|
-Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
|
||||||
|
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file metadata_csum
|
||||||
|
Default mount options: user_xattr acl
|
||||||
|
Filesystem state: clean
|
||||||
|
Errors behavior: Continue
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
Journal inode: 8
|
||||||
|
Default directory hash: half_md4
|
||||||
|
Journal backup: inode blocks
|
||||||
|
+Checksum type: crc32c
|
||||||
|
Journal features: (none)
|
||||||
|
Journal size: 16M
|
||||||
|
Journal length: 16384
|
||||||
|
@@ -36,7 +37,7 @@
|
||||||
|
Journal start: 0
|
||||||
|
|
||||||
|
|
||||||
|
-Group 0: (Blocks 1-8192)
|
||||||
|
+Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
|
||||||
|
Primary superblock at 1, Group descriptors at 2-3
|
||||||
|
Reserved GDT blocks at 4-259
|
||||||
|
Block bitmap at 260 (+259)
|
||||||
|
@@ -45,7 +46,7 @@
|
||||||
|
7789 free blocks, 1013 free inodes, 2 directories
|
||||||
|
Free blocks: 404-8192
|
||||||
|
Free inodes: 12-1024
|
||||||
|
-Group 1: (Blocks 8193-16384)
|
||||||
|
+Group 1: (Blocks 8193-16384) [ITABLE_ZEROED]
|
||||||
|
Backup superblock at 8193, Group descriptors at 8194-8195
|
||||||
|
Reserved GDT blocks at 8196-8451
|
||||||
|
Block bitmap at 8452 (+259)
|
||||||
|
@@ -54,6 +55,6 @@
|
||||||
|
7803 free blocks, 1024 free inodes, 0 directories
|
||||||
|
Free blocks: 8582-16384
|
||||||
|
Free inodes: 1025-2048
|
||||||
|
-Group 2: (Blocks 16385-24576)
|
||||||
|
+Group 2: (Blocks 16385-24576) [ITABLE_ZEROED]
|
||||||
|
Block bitmap at 16385 (+0)
|
||||||
|
Inode bitmap at 16386 (+1)
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
|
@ -0,0 +1 @@
|
||||||
|
enable metadata_csum on ext3 fs
|
|
@ -0,0 +1,70 @@
|
||||||
|
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 = 128
|
||||||
|
make_hugefiles = true
|
||||||
|
hugefiles_dir = /
|
||||||
|
num_hugefiles = 10
|
||||||
|
hugefiles_name = aaaaa
|
||||||
|
hugefiles_digits = 4
|
||||||
|
hugefiles_size = 1M
|
||||||
|
zero_hugefiles = false
|
||||||
|
}
|
||||||
|
ENDL
|
||||||
|
|
||||||
|
echo "tune2fs metadata_csum test" > $OUT
|
||||||
|
|
||||||
|
MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h $TMPFILE 524288 >> $OUT 2>&1
|
||||||
|
rm -rf $CONF
|
||||||
|
|
||||||
|
# dump and check
|
||||||
|
$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before
|
||||||
|
$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1
|
||||||
|
status=$?
|
||||||
|
echo Exit status is $status >> $OUT
|
||||||
|
|
||||||
|
# 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
|
||||||
|
$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
|
||||||
|
|
||||||
|
rm $TMPFILE $OUT.before $OUT.after
|
||||||
|
|
||||||
|
#
|
||||||
|
# Do the verification
|
||||||
|
#
|
||||||
|
|
||||||
|
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" -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
|
|
@ -0,0 +1,98 @@
|
||||||
|
tune2fs metadata_csum test
|
||||||
|
Creating filesystem with 524288 1k blocks and 65536 inodes
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
|
||||||
|
|
||||||
|
Allocating group tables: done
|
||||||
|
Writing inode tables: done
|
||||||
|
Creating journal (16384 blocks): done
|
||||||
|
Creating 477 huge file(s) with 1024 blocks each: done
|
||||||
|
Writing superblocks and filesystem accounting information: done
|
||||||
|
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
||||||
|
tune2fs -O metadata_csum test.img
|
||||||
|
|
||||||
|
Please run e2fsck -D on the filesystem.
|
||||||
|
|
||||||
|
Exit status is 0
|
||||||
|
test_filesys was not cleanly unmounted, check forced.
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 3A: Optimizing directories
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Change in FS metadata:
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
Last mounted on: <not available>
|
||||||
|
Filesystem magic number: 0xEF53
|
||||||
|
Filesystem revision #: 1 (dynamic)
|
||||||
|
-Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize
|
||||||
|
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
|
||||||
|
Default mount options: user_xattr acl
|
||||||
|
Filesystem state: clean
|
||||||
|
Errors behavior: Continue
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
Inode count: 65536
|
||||||
|
Block count: 524288
|
||||||
|
Reserved block count: 26214
|
||||||
|
-Free blocks: 571
|
||||||
|
+Free blocks: 568
|
||||||
|
Free inodes: 65048
|
||||||
|
First block: 1
|
||||||
|
Block size: 1024
|
||||||
|
@@ -33,6 +33,7 @@
|
||||||
|
Journal inode: 8
|
||||||
|
Default directory hash: half_md4
|
||||||
|
Journal backup: inode blocks
|
||||||
|
+Checksum type: crc32c
|
||||||
|
Journal features: (none)
|
||||||
|
Journal size: 16M
|
||||||
|
Journal length: 16384
|
||||||
|
@@ -40,24 +41,24 @@
|
||||||
|
Journal start: 0
|
||||||
|
|
||||||
|
|
||||||
|
-Group 0: (Blocks 1-8192)
|
||||||
|
+Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
|
||||||
|
Primary superblock at 1, Group descriptors at 2-5
|
||||||
|
Reserved GDT blocks at 6-261
|
||||||
|
Block bitmap at 262 (+261)
|
||||||
|
Inode bitmap at 278 (+277)
|
||||||
|
Inode table at 294-549 (+293)
|
||||||
|
- 21 free blocks, 536 free inodes, 2 directories
|
||||||
|
- Free blocks: 4413-4433
|
||||||
|
+ 18 free blocks, 536 free inodes, 2 directories, 536 unused inodes
|
||||||
|
+ Free blocks: 4413, 4417-4433
|
||||||
|
Free inodes: 489-1024
|
||||||
|
-Group 1: (Blocks 8193-16384)
|
||||||
|
+Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]
|
||||||
|
Backup superblock at 8193, Group descriptors at 8194-8197
|
||||||
|
Reserved GDT blocks at 8198-8453
|
||||||
|
Block bitmap at 263 (bg #0 + 262)
|
||||||
|
Inode bitmap at 279 (bg #0 + 278)
|
||||||
|
Inode table at 550-805 (bg #0 + 549)
|
||||||
|
- 0 free blocks, 1024 free inodes, 0 directories
|
||||||
|
+ 0 free blocks, 1024 free inodes, 0 directories, 1024 unused inodes
|
||||||
|
Free blocks:
|
||||||
|
Free inodes: 1025-2048
|
||||||
|
-Group 2: (Blocks 16385-24576)
|
||||||
|
+Group 2: (Blocks 16385-24576) [INODE_UNINIT, ITABLE_ZEROED]
|
||||||
|
Block bitmap at 264 (bg #0 + 263)
|
||||||
|
Inode bitmap at 280 (bg #0 + 279)
|
||||||
|
Pass 1: Checking inodes, blocks, and sizes
|
||||||
|
Pass 2: Checking directory structure
|
||||||
|
Pass 3: Checking directory connectivity
|
||||||
|
Pass 4: Checking reference counts
|
||||||
|
Pass 5: Checking group summary information
|
||||||
|
|
||||||
|
Exit status is 0
|
|
@ -0,0 +1 @@
|
||||||
|
enable metadata_csum when ^uninit_bg
|
|
@ -0,0 +1,70 @@
|
||||||
|
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 = 0
|
||||||
|
hugefiles_name = aaaaa
|
||||||
|
hugefiles_digits = 4
|
||||||
|
hugefiles_size = 1M
|
||||||
|
zero_hugefiles = false
|
||||||
|
}
|
||||||
|
ENDL
|
||||||
|
|
||||||
|
echo "tune2fs metadata_csum test" > $OUT
|
||||||
|
|
||||||
|
MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h $TMPFILE 524288 >> $OUT 2>&1
|
||||||
|
rm -rf $CONF
|
||||||
|
|
||||||
|
# dump and check
|
||||||
|
$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before
|
||||||
|
$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1
|
||||||
|
status=$?
|
||||||
|
echo Exit status is $status >> $OUT
|
||||||
|
|
||||||
|
# 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
|
||||||
|
$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
|
||||||
|
|
||||||
|
rm $TMPFILE $OUT.before $OUT.after
|
||||||
|
|
||||||
|
#
|
||||||
|
# Do the verification
|
||||||
|
#
|
||||||
|
|
||||||
|
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" -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
|
Loading…
Reference in New Issue