From 1a27630fcffd3cddbbee7b38e0e5eff710dce85a Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Sat, 2 Aug 2014 23:51:31 -0400 Subject: [PATCH] tests: add regression tests for inodes with bad checksums Add regression tests to e2fsck to examine how it deals with inode table blocks which (a) have been zero'd; (b) have been one'd; (c) have corrupt inodes with obvious problems; and (d) have inodes with non-obvious problems. Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- tests/f_bad_inode_csum/expect.1 | 126 ++++++++++++++++++++++++++++++++ tests/f_bad_inode_csum/expect.2 | 7 ++ tests/f_bad_inode_csum/image.gz | Bin 0 -> 4613 bytes tests/f_bad_inode_csum/name | 1 + 4 files changed, 134 insertions(+) create mode 100644 tests/f_bad_inode_csum/expect.1 create mode 100644 tests/f_bad_inode_csum/expect.2 create mode 100644 tests/f_bad_inode_csum/image.gz create mode 100644 tests/f_bad_inode_csum/name diff --git a/tests/f_bad_inode_csum/expect.1 b/tests/f_bad_inode_csum/expect.1 new file mode 100644 index 00000000..b3c628d1 --- /dev/null +++ b/tests/f_bad_inode_csum/expect.1 @@ -0,0 +1,126 @@ +Pass 1: Checking inodes, blocks, and sizes +Inode 33 has a extra size (65535) which is invalid +Fix? yes + +Inode 49 passes checks, but checksum does not match inode. Fix? yes + +Inode 65 passes checks, but checksum does not match inode. Fix? yes + +Inode 81 passes checks, but checksum does not match inode. Fix? yes + +Inode 97 seems to contain garbage. Clear? yes + +Inode 98 seems to contain garbage. Clear? yes + +Inode 99 seems to contain garbage. Clear? yes + +Inode 100 seems to contain garbage. Clear? yes + +Inode 101 seems to contain garbage. Clear? yes + +Inode 102 seems to contain garbage. Clear? yes + +Inode 103 seems to contain garbage. Clear? yes + +Inode 104 seems to contain garbage. Clear? yes + +Inode 105 seems to contain garbage. Clear? yes + +Inode 106 seems to contain garbage. Clear? yes + +Inode 107 seems to contain garbage. Clear? yes + +Inode 108 seems to contain garbage. Clear? yes + +Inode 109 seems to contain garbage. Clear? yes + +Inode 110 seems to contain garbage. Clear? yes + +Inode 111 seems to contain garbage. Clear? yes + +Inode 112 seems to contain garbage. Clear? yes + +Pass 2: Checking directory structure +Extended attribute block for inode 49 (/38) is invalid (4294967295). +Clear? yes + +Entry '86' in / (2) has deleted/unused inode 97. Clear? yes + +Entry '87' in / (2) has deleted/unused inode 98. Clear? yes + +Entry '88' in / (2) has deleted/unused inode 99. Clear? yes + +Entry '89' in / (2) has deleted/unused inode 100. Clear? yes + +Entry '90' in / (2) has deleted/unused inode 101. Clear? yes + +Entry '91' in / (2) has deleted/unused inode 102. Clear? yes + +Entry '92' in / (2) has deleted/unused inode 103. Clear? yes + +Entry '93' in / (2) has deleted/unused inode 104. Clear? yes + +Entry '94' in / (2) has deleted/unused inode 105. Clear? yes + +Entry '95' in / (2) has deleted/unused inode 106. Clear? yes + +Entry '96' in / (2) has deleted/unused inode 107. Clear? yes + +Entry '97' in / (2) has deleted/unused inode 108. Clear? yes + +Entry '98' in / (2) has deleted/unused inode 109. Clear? yes + +Entry '99' in / (2) has deleted/unused inode 110. Clear? yes + +Entry '100' in / (2) has deleted/unused inode 111. Clear? yes + +Entry '101' in / (2) has deleted/unused inode 112. Clear? yes + +Entry '102' in / (2) has deleted/unused inode 113. Clear? yes + +Entry '103' in / (2) has deleted/unused inode 114. Clear? yes + +Entry '104' in / (2) has deleted/unused inode 115. Clear? yes + +Entry '105' in / (2) has deleted/unused inode 116. Clear? yes + +Entry '106' in / (2) has deleted/unused inode 117. Clear? yes + +Entry '107' in / (2) has deleted/unused inode 118. Clear? yes + +Entry '108' in / (2) has deleted/unused inode 119. Clear? yes + +Entry '109' in / (2) has deleted/unused inode 120. Clear? yes + +Entry '110' in / (2) has deleted/unused inode 121. Clear? yes + +Entry '111' in / (2) has deleted/unused inode 122. Clear? yes + +Entry '112' in / (2) has deleted/unused inode 123. Clear? yes + +Entry '113' in / (2) has deleted/unused inode 124. Clear? yes + +Entry '114' in / (2) has deleted/unused inode 125. Clear? yes + +Entry '115' in / (2) has deleted/unused inode 126. Clear? yes + +Entry '116' in / (2) has deleted/unused inode 127. Clear? yes + +Entry '117' in / (2) has deleted/unused inode 128. Clear? yes + +Pass 3: Checking directory connectivity +Pass 4: Checking reference counts +Pass 5: Checking group summary information +Inode bitmap differences: -(97--128) +Fix? yes + +Free inodes count wrong for group #0 (0, counted=32). +Fix? yes + +Free inodes count wrong (0, counted=32). +Fix? yes + + +test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** +test_filesys: 96/128 files (0.0% non-contiguous), 18/512 blocks +Exit status is 1 diff --git a/tests/f_bad_inode_csum/expect.2 b/tests/f_bad_inode_csum/expect.2 new file mode 100644 index 00000000..b97a9021 --- /dev/null +++ b/tests/f_bad_inode_csum/expect.2 @@ -0,0 +1,7 @@ +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: 96/128 files (0.0% non-contiguous), 18/512 blocks +Exit status is 0 diff --git a/tests/f_bad_inode_csum/image.gz b/tests/f_bad_inode_csum/image.gz new file mode 100644 index 0000000000000000000000000000000000000000..221920b04ad0b18949bd75680159390e7b05586a GIT binary patch literal 4613 zcmeHI`%_bQ7N=!ex?>B|c3ijRk-Ah_RuLpsKpuDP?n*6>v{0m!M-~)WMMxoHlmNFK zJEBsImPdFLsDnl!0;YgKfZQt8j0DU`44^<#K@t-}0_27Fa_@J)4F1~b{sCm>COPMP z?m3_HIp=#Xt>g`d(S@8I=gvo33-*5zmjee*Hq22l2IQh2mY$Cso%H!CWWMf!)1 zrlN)Eh%OY_=acZnsx{&zvIn6{4_z7-syS^Q)aln~Pgc@ml__s!8&6G{?8{&YUtlVn zQ&dRb*Ui46CqzDq-L&~e2ZusNAJH5BrPFRB2#6==_zlFuPPMT4vN@M!e;n#mXKHkE zaBx7~#ZH#C6hqg$EEj0@8SYAfQ+(90r?5WrmDl5khdsk>Ndvv{yKbIZ{JA38^UvE8 zJ3Hu-*05VgBFBN?QsNy-zt6+fwz+ijecP1lsig7Z-MNWMcK_a?nE^?LC*!)-`s`dP z8YL%2K016nZoV$}FMW)`)P>Agj|n!JTQ~3<78UenQSxBcV*cbl=hOCxpf^>>tl#om zrIYVyBs*vQ?BA3p=C@W{XIF7Q8%#CU#yGQ!uexa@K``XwUEG86bE}9^NJ8Vx2pV#~ zlv~C98sa7(E?nTIx$r4;*5y_OZ=Ln)+A{0MIp*1Q=5%7LvlA~O$ZfJRH}GV^U`yy2 zXDrAqWasSH3s=eqZWmv1a}N6m8mXlrJBC6-V5zg^1Cus*dB!@kc`#?_9+)c^7Al9% zgRmGc>)9$w>x!Eu8ZxU}WtIk=`&XR-OUr)t)my8fbq(^A zgu)^n(2)Qg?XU=A^`0_Fyz7$JcRi+0panbS?t>XtAnXFX=ny7f~_N<(%I zC0~TFXb8IlA?#I1M9@%jd2Us2Af&t>21Z~YJ2 zbn5lPGtF`RJuP2N)k@}WwOL8n!OWsfaN;ErdAiMJcmMzaoeT`5|kVMSr7s} zKRq%7smp&oG%GY{{RkZ4clz27{P#znUzokw5cAW?BF9(%2>bi-UuXx7?THxzE5D{k zH=e8}syzqFrnorgqXY6xJkC*H_>a!Nhqx~n#43SZ)!G!6rj6WlqdA3HDtX#1)D{G{ zT24LR#$>z9PjzA1GliE~cBVxonF6gW18z?x)1Th&pAYUPSw|-+Qulh6y+Cn7j@|q~ zMI{rh^Qg16LJocq61Fk0mt&i!05Q^v(u}2c^a zamU^z0tjUJwhKr%;AgkI{^-bWW;9>@6qC$cckeH-)QdokP58u4eezXK(PV@k`Kto( z&1rzF*QlG0ZdX(83@O!EzoQ>a_>&kCY6G+H&c{nE4?Ct;y7`aLLjrKC zNd#g8Dplwg0+7(21~Ru!ab;}Rk@M!6lo;@^nsVBHo@_gL-9jDoC($IZ0*uycVaty? z*NUJK0+6geN2)no9VtDGgJ*0JnD>(CdQ9l{mO#X~#mXACFnhuc=)m_Q1W#rGgQMf% z`%`81qUYi@8kmm)%tVQRVB%8~62>9yHRB*Iv$e)zol`W+(L0dGpQqV_QG? zH4>B+-=$=?rcT|f5^fF|_&ALZ1R{AVdaXOBKdfL=kA49m@f~B4`fUEl(Ci`^nz7+569y7*>kK@=M`XTQsAVFj_Yla8<0S<4Gr(y<7vhB>mL1s^92i5zv@!kh+T6m-;o*NmfCi4Z)Z? z(klZ8=5NMPeebAIWGp+PBnMz;-mo+AcAGk|#X?CB;SAj-LQRT0vt+DDp^;{TylZuc zO+Sv__q=LHb|^pv_b!Dcv}Z?aue~hNR87f{w+RXoPNBeA!^$L9(O;fuGaxGQ;C4x0YvzsoPDc8g+>d& zMxK-+iaO^yE(ctTv%A3DTDX~VZ>t>)ju4oq0(^_xz}jBA=bu;m*aa72{Ht~Qc3}& zM(2=<77-|Q^7UALu2rnHy1}2kHa3QxSoz69X%FGFrH>6*x_pH2h4rvJ5#Tu|ge_4M zie?sA-6%GlY9msBM{g0M;}Lr7L;JE;Cjy=sa7&H|z>m0z8FCZVk^FR=78qzV8B