From cdac96a8e1b134ac104d216a8a3fb0a948ce1d76 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Mon, 8 Sep 2014 16:13:48 -0700 Subject: [PATCH] tests: test e2fsck recovery with broken commit blocks Test e2fsck' recovery of commit blocks with (a) only a corrupt checksum and (b) an obviously incorrect tid. Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- tests/j_corrupt_commit_csum/expect | 18 ++++++++++ tests/j_corrupt_commit_csum/image.gz | Bin 0 -> 2949 bytes tests/j_corrupt_commit_csum/name | 1 + tests/j_corrupt_commit_csum/script | 51 +++++++++++++++++++++++++++ tests/j_corrupt_commit_tid/expect | 17 +++++++++ tests/j_corrupt_commit_tid/image.gz | Bin 0 -> 2953 bytes tests/j_corrupt_commit_tid/name | 1 + tests/j_corrupt_commit_tid/script | 51 +++++++++++++++++++++++++++ 8 files changed, 139 insertions(+) create mode 100644 tests/j_corrupt_commit_csum/expect create mode 100644 tests/j_corrupt_commit_csum/image.gz create mode 100644 tests/j_corrupt_commit_csum/name create mode 100644 tests/j_corrupt_commit_csum/script create mode 100644 tests/j_corrupt_commit_tid/expect create mode 100644 tests/j_corrupt_commit_tid/image.gz create mode 100644 tests/j_corrupt_commit_tid/name create mode 100644 tests/j_corrupt_commit_tid/script diff --git a/tests/j_corrupt_commit_csum/expect b/tests/j_corrupt_commit_csum/expect new file mode 100644 index 000000000..5fc82b899 --- /dev/null +++ b/tests/j_corrupt_commit_csum/expect @@ -0,0 +1,18 @@ +test_filesys: recovering journal +Journal transaction 3 was corrupt, replay was aborted. +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: 12/128 files (8.3% non-contiguous), 1092/2048 blocks +Exit status is 0 +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: 12/128 files (8.3% non-contiguous), 1092/2048 blocks +Exit status is 0 +debugfs: cat /a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file diff --git a/tests/j_corrupt_commit_csum/image.gz b/tests/j_corrupt_commit_csum/image.gz new file mode 100644 index 0000000000000000000000000000000000000000..334fcd000d57f589e45987e6dc447c5f3e39c4bb GIT binary patch literal 2949 zc-rmK{ZkTl0LO8hC5fhG&NCmvRxJlQtX3UPkIrS=>hK}iQkN%MyEJ9$%101vEwx0= zSrQtWYd$MJ<5NO&kC&)$z{8+-il4<2{o2qh`vkPc-xKMOcJ~(xUL%8>Vk@TvTi)#`hpKUzKlLE3a6(8*;Ri zU%GpXyKsrS=KwORiQKQ$Hlmx8RBwrX-)yJje^J)Rgq01Zw{M`Z;($(~hqV4+rz?kHJ9f0i? zA^HnUzZM)AO=Qc}EaVk1XOFDaVC*{-bD3RAF|W}wQxQJ4H811zH1ZvGK>i^Eyi_0g zu^r7_L|dVYq=c!xFm7o;&p7r|S36?bb=5|Q1A=>$_s*!Hb*_5BqR*i?T4<#W^_{TBLwD051IIl0JCOm5;KMp_p3E68GWZ6%t;XGo< z>RtiV7QLL366>lUZd)x%_Sw2+%PH=&HQKrsIVq-ofAEZ@1g8E>ZvVbw{tPo?b~Uo z)bmtjK#WXr&pyYep;yTKbK66VjEw&8p3I&yfpk4J+hI&$Wb~i%9IVDUu0=e8KwKby E0EFfkcmMzZ literal 0 Hc-jL100001 diff --git a/tests/j_corrupt_commit_csum/name b/tests/j_corrupt_commit_csum/name new file mode 100644 index 000000000..05a99ea9d --- /dev/null +++ b/tests/j_corrupt_commit_csum/name @@ -0,0 +1 @@ +corrupt commit csum (csum v3) diff --git a/tests/j_corrupt_commit_csum/script b/tests/j_corrupt_commit_csum/script new file mode 100644 index 000000000..102febaaa --- /dev/null +++ b/tests/j_corrupt_commit_csum/script @@ -0,0 +1,51 @@ +if test -x $DEBUGFS_EXE; then + +IMAGE=$test_dir/image.gz +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 + +gzip -d < $IMAGE > $TMPFILE + +$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 + +$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 + +echo "cat /a" > $TMPFILE.cmd +$DEBUGFS_EXE -f $TMPFILE.cmd $TMPFILE 2>&1 | sed -f $cmd_dir/filter.sed >> $OUT +rm -f $TMPFILE.cmd + +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 diff --git a/tests/j_corrupt_commit_tid/expect b/tests/j_corrupt_commit_tid/expect new file mode 100644 index 000000000..dfbb3f5e2 --- /dev/null +++ b/tests/j_corrupt_commit_tid/expect @@ -0,0 +1,17 @@ +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: 12/128 files (8.3% non-contiguous), 1092/2048 blocks +Exit status is 0 +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: 12/128 files (8.3% non-contiguous), 1092/2048 blocks +Exit status is 0 +debugfs: cat /a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file diff --git a/tests/j_corrupt_commit_tid/image.gz b/tests/j_corrupt_commit_tid/image.gz new file mode 100644 index 0000000000000000000000000000000000000000..988e5c6763b541de0d5c70f336619ae94cb891f4 GIT binary patch literal 2953 zc-rmKZBW_;0LO8rn=>yDmri9e!Q5uG$t>5FlA@S)>Pn}kZieLZLvxnhMhqX;EpjJ1 zxs~F>8F^ihn@TtzKxdwsF$Fj011casAR|#8M0pDM|LeNm^rrW9d|v-veeZ{$I75E3 zDw7=?RV%nVDIdTg+F(Shn8R%e-~Va;9`w>^|58*OYSYQ-5Vi|>#L3X^$@MHD$KNsd z!A?eonNEbAh>(~U2$5`Ty*QqBnILf(I?b6m49^|0#@Svn0pU}SAeki10 z!1$!YNcf{spLfE?L@Kc_M{QE#SekJ5x^eWn7*&oKxC(=}5Q{Wb)EQ?-nODc7v6 z_|w&y#I;>$W7}&UYUkqoFTQj};DD$*xhjUDix) zcNsh+y<^}2gv{z|QjWfP^xfHBx1Ui*U3_-V zXQfiOR@o$72ydy11i+;Ga!k;`-pC_R$efjZc5>TM*9eZ6w%xo8+_oOx#2~=~X6WOp z2*6Q?pn|uohx73Of?F{meXFT22G@PpJb#D=um9;-P(b=IC>qyeLS7I+qSoI#5(4 zh--D>pEWdRt?e&;qBM5C-75)rrO90Zih7cbi@6H(?_IDaF)(N}SLkI`wg*EOEbo8Y zB;5tAVj)t{tod^%t0Wy;1r)al)BQar0Lsv`E*d1-AZmuY65N7Er0-tasw-LmE$Wbu zpe}zmrP0>ebB=mW3cvh%+BV;|eLrznM=UePFHl~dl~cDi9#0jvuS;W!BpWakY2~@w z;20xdeEE*Okkd6>Py@hl%sMH~>MgV&z~V=`?>e zu3%)E01)s_ghcc`C1!Y9iJ92peWzEAuz|TFIg>BaY?F_AZL1t+gBV1kKaRfI2+Aq* zV3O3Bu$NEsuOQ)z&jaM|JFN9LfMk$z30IlwbrA9|uCP4(-^>$v%4)p#uw4s_r*l%W z1<*c2CaZ>xoEM=py^B@H9U*phcK>(1A}0uvFn`Nl!p`o$#e}iBx*c#zf $EXP1 +else + EXP=$test_dir/expect +fi + +cp /dev/null $OUT + +gzip -d < $IMAGE > $TMPFILE + +$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 + +$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 + +echo "cat /a" > $TMPFILE.cmd +$DEBUGFS_EXE -f $TMPFILE.cmd $TMPFILE 2>&1 | sed -f $cmd_dir/filter.sed >> $OUT +rm -f $TMPFILE.cmd + +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 -- 2.47.2