tests: test writing and recovering 32bit csum_v3 journals

Simple tests for the 32bit journal transaction creation code when
journal and metadata_csum are enabled.  We test the following:

(a) writing and replaying transactions with multiple
    descriptor blocks
(b) same, but with multiple revoke blocks.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
crypto
Darrick J. Wong 2014-09-08 16:13:14 -07:00 committed by Theodore Ts'o
parent 20466c8045
commit c452914469
6 changed files with 395 additions and 0 deletions

View File

@ -0,0 +1,117 @@
64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.
Creating filesystem with 524288 1k blocks and 32768 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
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
test_filesys: 11/32768 files (0.0% non-contiguous), 27050/524288 blocks
Exit status is 0
Journal features: (none)
debugfs write journal
Journal features: journal_incompat_revoke journal_checksum_v3
debugfs: logdump -c
Journal starts at block 1, transaction 1
Found expected sequence 1, type 1 (descriptor block) at block 1
Found expected sequence 1, type 1 (descriptor block) at block 64
Found expected sequence 1, type 1 (descriptor block) at block 127
Found expected sequence 1, type 1 (descriptor block) at block 190
Found expected sequence 1, type 1 (descriptor block) at block 253
Found expected sequence 1, type 1 (descriptor block) at block 316
Found expected sequence 1, type 1 (descriptor block) at block 379
Found expected sequence 1, type 1 (descriptor block) at block 442
Found expected sequence 1, type 1 (descriptor block) at block 505
Found expected sequence 1, type 1 (descriptor block) at block 568
Found expected sequence 1, type 1 (descriptor block) at block 631
Found expected sequence 1, type 1 (descriptor block) at block 694
Found expected sequence 1, type 1 (descriptor block) at block 757
Found expected sequence 1, type 1 (descriptor block) at block 820
Found expected sequence 1, type 1 (descriptor block) at block 883
Found expected sequence 1, type 1 (descriptor block) at block 946
Found expected sequence 1, type 1 (descriptor block) at block 1009
Found expected sequence 1, type 1 (descriptor block) at block 1072
Found expected sequence 1, type 1 (descriptor block) at block 1135
Found expected sequence 1, type 1 (descriptor block) at block 1198
Found expected sequence 1, type 1 (descriptor block) at block 1261
Found expected sequence 1, type 1 (descriptor block) at block 1324
Found expected sequence 1, type 1 (descriptor block) at block 1387
Found expected sequence 1, type 1 (descriptor block) at block 1450
Found expected sequence 1, type 1 (descriptor block) at block 1513
Found expected sequence 1, type 1 (descriptor block) at block 1576
Found expected sequence 1, type 1 (descriptor block) at block 1639
Found expected sequence 1, type 1 (descriptor block) at block 1702
Found expected sequence 1, type 1 (descriptor block) at block 1765
Found expected sequence 1, type 1 (descriptor block) at block 1828
Found expected sequence 1, type 1 (descriptor block) at block 1891
Found expected sequence 1, type 1 (descriptor block) at block 1954
Found expected sequence 1, type 1 (descriptor block) at block 2017
Found expected sequence 1, type 1 (descriptor block) at block 2080
Found expected sequence 1, type 1 (descriptor block) at block 2143
Found expected sequence 1, type 1 (descriptor block) at block 2206
Found expected sequence 1, type 1 (descriptor block) at block 2269
Found expected sequence 1, type 1 (descriptor block) at block 2332
Found expected sequence 1, type 1 (descriptor block) at block 2395
Found expected sequence 1, type 1 (descriptor block) at block 2458
Found expected sequence 1, type 1 (descriptor block) at block 2521
Found expected sequence 1, type 1 (descriptor block) at block 2584
Found expected sequence 1, type 1 (descriptor block) at block 2647
Found expected sequence 1, type 1 (descriptor block) at block 2710
Found expected sequence 1, type 1 (descriptor block) at block 2773
Found expected sequence 1, type 1 (descriptor block) at block 2836
Found expected sequence 1, type 1 (descriptor block) at block 2899
Found expected sequence 1, type 1 (descriptor block) at block 2962
Found expected sequence 1, type 1 (descriptor block) at block 3025
Found expected sequence 1, type 1 (descriptor block) at block 3088
Found expected sequence 1, type 1 (descriptor block) at block 3151
Found expected sequence 1, type 1 (descriptor block) at block 3214
Found expected sequence 1, type 1 (descriptor block) at block 3277
Found expected sequence 1, type 1 (descriptor block) at block 3340
Found expected sequence 1, type 1 (descriptor block) at block 3403
Found expected sequence 1, type 1 (descriptor block) at block 3466
Found expected sequence 1, type 1 (descriptor block) at block 3529
Found expected sequence 1, type 1 (descriptor block) at block 3592
Found expected sequence 1, type 1 (descriptor block) at block 3655
Found expected sequence 1, type 1 (descriptor block) at block 3718
Found expected sequence 1, type 1 (descriptor block) at block 3781
Found expected sequence 1, type 1 (descriptor block) at block 3844
Found expected sequence 1, type 1 (descriptor block) at block 3907
Found expected sequence 1, type 1 (descriptor block) at block 3970
Found expected sequence 1, type 1 (descriptor block) at block 4033
Found expected sequence 1, type 1 (descriptor block) at block 4096
Found expected sequence 1, type 1 (descriptor block) at block 4159
Found expected sequence 1, type 2 (commit block) at block 4165
Found expected sequence 2, type 5 (revoke table) at block 4166
Found expected sequence 2, type 5 (revoke table) at block 4167
Found expected sequence 2, type 5 (revoke table) at block 4168
Found expected sequence 2, type 5 (revoke table) at block 4169
Found expected sequence 2, type 5 (revoke table) at block 4170
Found expected sequence 2, type 5 (revoke table) at block 4171
Found expected sequence 2, type 5 (revoke table) at block 4172
Found expected sequence 2, type 5 (revoke table) at block 4173
Found expected sequence 2, type 5 (revoke table) at block 4174
Found expected sequence 2, type 5 (revoke table) at block 4175
Found expected sequence 2, type 5 (revoke table) at block 4176
Found expected sequence 2, type 5 (revoke table) at block 4177
Found expected sequence 2, type 5 (revoke table) at block 4178
Found expected sequence 2, type 5 (revoke table) at block 4179
Found expected sequence 2, type 5 (revoke table) at block 4180
Found expected sequence 2, type 5 (revoke table) at block 4181
Found expected sequence 2, type 5 (revoke table) at block 4182
Found expected sequence 2, type 2 (commit block) at block 4183
No magic number at block 4184: end of journal.
test_filesys: recovering journal
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
test_filesys: 11/32768 files (0.0% non-contiguous), 27050/524288 blocks
Exit status is 0

View File

@ -0,0 +1 @@
revoked transaction nuking free space on 32bit,metadata_csum

View File

@ -0,0 +1,67 @@
if test -x $DEBUGFS_EXE; then
FSCK_OPT=-fy
OUT=$test_name.log
if [ -f $test_dir/expect.gz ]; then
EXP=$test_name.tmp
gunzip < $test_dir/expect.gz > $EXP1
else
EXP=$test_dir/expect
fi
cp /dev/null $OUT
$MKE2FS -F -o Linux -b 1024 -O ^64bit,has_journal,metadata_csum -T ext4 $TMPFILE 524288 2>&1 | sed -f $cmd_dir/filter.sed >> $OUT 2>&1
$FSCK -fy -N test_filesys $TMPFILE > $OUT.new 2>&1
status=$?
echo Exit status is $status >> $OUT.new
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" $OUT.new >> $OUT
rm -f $OUT.new
$DUMPE2FS $TMPFILE 2>&1 | grep '^Journal features:' >> $OUT
echo "debugfs write journal" >> $OUT
echo "jo -c" > $TMPFILE.cmd
echo "jw -b 260-4356 /dev/zero" >> $TMPFILE.cmd
echo "jc" >> $TMPFILE.cmd
echo "jo" >> $TMPFILE.cmd
echo "jw -r 260-4356" >> $TMPFILE.cmd
echo "jc" >> $TMPFILE.cmd
#$DEBUGFS_EXE -w $TMPFILE -f $TMPFILE.cmd >> $OUT 2>&1
$DEBUGFS_EXE -w $TMPFILE -f $TMPFILE.cmd 2>> $OUT.new > /dev/null
sed -f $cmd_dir/filter.sed < $OUT.new >> $OUT
rm -rf $OUT.new
$DUMPE2FS $TMPFILE 2>&1 | grep '^Journal features:' >> $OUT
test -d "$JOURNAL_DUMP_DIR" -a -w "$JOURNAL_DUMP_DIR" && cp "$TMPFILE" "$JOURNAL_DUMP_DIR/$test_name.img"
echo "logdump -c" > $TMPFILE.cmd
$DEBUGFS_EXE $TMPFILE -f $TMPFILE.cmd 2>&1 | sed -f $cmd_dir/filter.sed >> $OUT
rm -rf $TMPFILE.cmd
$FSCK -fy -N test_filesys $TMPFILE > $OUT.new 2>&1
status=$?
echo Exit status is $status >> $OUT.new
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" $OUT.new >> $OUT
rm -f $OUT.new
rm -f $TMPFILE
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
rm -f $test_name.tmp
fi
unset IMAGE FSCK_OPT OUT EXP
else #if test -x $DEBUGFS_EXE; then
echo "$test_name: $test_description: skipped"
fi

View File

@ -0,0 +1,146 @@
64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.
Creating filesystem with 524288 1k blocks and 32768 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
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
test_filesys: 11/32768 files (0.0% non-contiguous), 27050/524288 blocks
Exit status is 0
Journal features: (none)
debugfs write journal
Journal features: journal_checksum_v3
debugfs: logdump -c
Journal starts at block 1, transaction 1
Found expected sequence 1, type 1 (descriptor block) at block 1
Found expected sequence 1, type 1 (descriptor block) at block 64
Found expected sequence 1, type 1 (descriptor block) at block 127
Found expected sequence 1, type 1 (descriptor block) at block 190
Found expected sequence 1, type 1 (descriptor block) at block 253
Found expected sequence 1, type 1 (descriptor block) at block 316
Found expected sequence 1, type 1 (descriptor block) at block 379
Found expected sequence 1, type 1 (descriptor block) at block 442
Found expected sequence 1, type 1 (descriptor block) at block 505
Found expected sequence 1, type 1 (descriptor block) at block 568
Found expected sequence 1, type 1 (descriptor block) at block 631
Found expected sequence 1, type 1 (descriptor block) at block 694
Found expected sequence 1, type 1 (descriptor block) at block 757
Found expected sequence 1, type 1 (descriptor block) at block 820
Found expected sequence 1, type 1 (descriptor block) at block 883
Found expected sequence 1, type 1 (descriptor block) at block 946
Found expected sequence 1, type 1 (descriptor block) at block 1009
Found expected sequence 1, type 1 (descriptor block) at block 1072
Found expected sequence 1, type 1 (descriptor block) at block 1135
Found expected sequence 1, type 1 (descriptor block) at block 1198
Found expected sequence 1, type 1 (descriptor block) at block 1261
Found expected sequence 1, type 1 (descriptor block) at block 1324
Found expected sequence 1, type 1 (descriptor block) at block 1387
Found expected sequence 1, type 1 (descriptor block) at block 1450
Found expected sequence 1, type 1 (descriptor block) at block 1513
Found expected sequence 1, type 1 (descriptor block) at block 1576
Found expected sequence 1, type 1 (descriptor block) at block 1639
Found expected sequence 1, type 1 (descriptor block) at block 1702
Found expected sequence 1, type 1 (descriptor block) at block 1765
Found expected sequence 1, type 1 (descriptor block) at block 1828
Found expected sequence 1, type 1 (descriptor block) at block 1891
Found expected sequence 1, type 1 (descriptor block) at block 1954
Found expected sequence 1, type 1 (descriptor block) at block 2017
Found expected sequence 1, type 1 (descriptor block) at block 2080
Found expected sequence 1, type 1 (descriptor block) at block 2143
Found expected sequence 1, type 1 (descriptor block) at block 2206
Found expected sequence 1, type 1 (descriptor block) at block 2269
Found expected sequence 1, type 1 (descriptor block) at block 2332
Found expected sequence 1, type 1 (descriptor block) at block 2395
Found expected sequence 1, type 1 (descriptor block) at block 2458
Found expected sequence 1, type 1 (descriptor block) at block 2521
Found expected sequence 1, type 1 (descriptor block) at block 2584
Found expected sequence 1, type 1 (descriptor block) at block 2647
Found expected sequence 1, type 1 (descriptor block) at block 2710
Found expected sequence 1, type 1 (descriptor block) at block 2773
Found expected sequence 1, type 1 (descriptor block) at block 2836
Found expected sequence 1, type 1 (descriptor block) at block 2899
Found expected sequence 1, type 1 (descriptor block) at block 2962
Found expected sequence 1, type 1 (descriptor block) at block 3025
Found expected sequence 1, type 1 (descriptor block) at block 3088
Found expected sequence 1, type 1 (descriptor block) at block 3151
Found expected sequence 1, type 1 (descriptor block) at block 3214
Found expected sequence 1, type 1 (descriptor block) at block 3277
Found expected sequence 1, type 1 (descriptor block) at block 3340
Found expected sequence 1, type 1 (descriptor block) at block 3403
Found expected sequence 1, type 1 (descriptor block) at block 3466
Found expected sequence 1, type 1 (descriptor block) at block 3529
Found expected sequence 1, type 1 (descriptor block) at block 3592
Found expected sequence 1, type 1 (descriptor block) at block 3655
Found expected sequence 1, type 1 (descriptor block) at block 3718
Found expected sequence 1, type 1 (descriptor block) at block 3781
Found expected sequence 1, type 1 (descriptor block) at block 3844
Found expected sequence 1, type 1 (descriptor block) at block 3907
Found expected sequence 1, type 1 (descriptor block) at block 3970
Found expected sequence 1, type 1 (descriptor block) at block 4033
Found expected sequence 1, type 1 (descriptor block) at block 4096
Found expected sequence 1, type 1 (descriptor block) at block 4159
Found expected sequence 1, type 2 (commit block) at block 4165
No magic number at block 4166: end of journal.
test_filesys: recovering journal
Superblock has an invalid journal (inode 8).
Clear? yes
*** ext3 journal has been deleted - filesystem is now ext2 only ***
Resize inode not valid. Recreate? yes
Pass 1: Checking inodes, blocks, and sizes
Root inode is not a directory. Clear? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Root inode not allocated. Allocate? yes
/lost+found not found. Create? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: +(1--260) +276 +(292--419) +2342 -(139265--155648)
Fix? yes
Free blocks count wrong for group #0 (5837, counted=5850).
Fix? yes
Free blocks count wrong for group #17 (0, counted=8192).
Fix? yes
Free blocks count wrong for group #18 (0, counted=8192).
Fix? yes
Free blocks count wrong (497236, counted=513633).
Fix? yes
Inode bitmap differences: +1 +(3--10)
Fix? yes
Free inodes count wrong for group #0 (500, counted=501).
Fix? yes
Directories count wrong for group #0 (3, counted=2).
Fix? yes
Free inodes count wrong (32756, counted=32757).
Fix? yes
Recreate journal? yes
Creating journal (16384 blocks): Done.
*** journal has been re-created - filesystem is now ext3 again ***
test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
test_filesys: 11/32768 files (0.0% non-contiguous), 27039/524288 blocks
Exit status is 1

View File

@ -0,0 +1 @@
transaction nuking free space on 32bit,metadata_csum

View File

@ -0,0 +1,63 @@
if test -x $DEBUGFS_EXE; then
FSCK_OPT=-fy
OUT=$test_name.log
if [ -f $test_dir/expect.gz ]; then
EXP=$test_name.tmp
gunzip < $test_dir/expect.gz > $EXP1
else
EXP=$test_dir/expect
fi
cp /dev/null $OUT
$MKE2FS -F -o Linux -b 1024 -O ^64bit,has_journal,metadata_csum -T ext4 $TMPFILE 524288 2>&1 | sed -f $cmd_dir/filter.sed >> $OUT 2>&1
$FSCK -fy -N test_filesys $TMPFILE > $OUT.new 2>&1
status=$?
echo Exit status is $status >> $OUT.new
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" $OUT.new >> $OUT
rm -f $OUT.new
$DUMPE2FS $TMPFILE 2>&1 | grep '^Journal features:' >> $OUT
echo "debugfs write journal" >> $OUT
echo "jo -c" > $TMPFILE.cmd
echo "jw -b 260-4356 /dev/zero" >> $TMPFILE.cmd
echo "jc" >> $TMPFILE.cmd
$DEBUGFS_EXE -w $TMPFILE -f $TMPFILE.cmd 2>> $OUT.new > /dev/null
sed -f $cmd_dir/filter.sed < $OUT.new >> $OUT
rm -rf $OUT.new
$DUMPE2FS $TMPFILE 2>&1 | grep '^Journal features:' >> $OUT
test -d "$JOURNAL_DUMP_DIR" -a -w "$JOURNAL_DUMP_DIR" && cp "$TMPFILE" "$JOURNAL_DUMP_DIR/$test_name.img"
echo "logdump -c" > $TMPFILE.cmd
$DEBUGFS_EXE $TMPFILE -f $TMPFILE.cmd 2>&1 | sed -f $cmd_dir/filter.sed >> $OUT
rm -rf $TMPFILE.cmd
$FSCK -fy -N test_filesys $TMPFILE > $OUT.new 2>&1
status=$?
echo Exit status is $status >> $OUT.new
sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" $OUT.new >> $OUT
rm -f $OUT.new
rm -f $TMPFILE
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
rm -f $test_name.tmp
fi
unset IMAGE FSCK_OPT OUT EXP
else #if test -x $DEBUGFS_EXE; then
echo "$test_name: $test_description: skipped"
fi