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 000000000..b3c628d19 --- /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 000000000..b97a90214 --- /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 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 rU5c+$y>0&s%s%mk!@8~8x~