From: Darrick J. Wong Date: Sun, 3 Aug 2014 03:48:58 +0000 (-0400) Subject: tests: add tests for directory entry blocks with checksum errors X-Git-Tag: v1.43-WIP-2015-05-18~252 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8e203507b36b3feacbda2c203401e161e4c2e1f2;p=thirdparty%2Fe2fsprogs.git tests: add tests for directory entry blocks with checksum errors Add some regression tests to examine how e2fsck handles directory entry blocks and htree blocks with (a) malformed directory entries; (b) incorrect checksums; or (c) obviously garbage entries. Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- diff --git a/tests/f_dir_bad_csum/expect.1 b/tests/f_dir_bad_csum/expect.1 new file mode 100644 index 000000000..bbcbfcb31 --- /dev/null +++ b/tests/f_dir_bad_csum/expect.1 @@ -0,0 +1,62 @@ +Pass 1: Checking inodes, blocks, and sizes +Pass 2: Checking directory structure +Directory inode 12, block #0, offset 12: directory passes checks but fails checksum. +Fix? yes + +Directory inode 13, block #0, offset 0: directory has no checksum. +Fix? yes + +Directory inode 13, block #0, offset 1012: directory passes checks but fails checksum. +Fix? yes + +Directory inode 14, block #0, offset 0: directory has no checksum. +Fix? yes + +Directory inode 14, block #0, offset 12: directory passes checks but fails checksum. +Fix? yes + +Directory inode 15, block #0, offset 0: directory has no checksum. +Fix? yes + +Directory inode 15, block #0, offset 1000: directory corrupted +Salvage? yes + +Directory inode 16, block #0, offset 0: directory has no checksum. +Fix? yes + +Directory inode 16, block #0, offset 12: directory corrupted +Salvage? yes + +Directory inode 17, block #0, offset 0: directory has no checksum. +Fix? yes + +Directory inode 17, block #0, offset 0: directory corrupted +Salvage? yes + +Missing '.' in directory inode 17. +Fix? yes + +Setting filetype for entry '.' in ??? (17) to 2. +Missing '..' in directory inode 17. +Fix? yes + +Setting filetype for entry '..' in ??? (17) to 2. +Entry 'file' in ??? (18) has invalid inode #: 4294967295. +Clear? yes + +Pass 3: Checking directory connectivity +'..' in /6 (17) is (0), should be / (2). +Fix? yes + +Pass 3A: Optimizing directories +Pass 4: Checking reference counts +Unattached inode 19 +Connect to /lost+found? yes + +Inode 19 ref count is 2, should be 1. Fix? yes + +Pass 5: Checking group summary information + +test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** +test_filesys: 19/128 files (5.3% non-contiguous), 1098/2048 blocks +Exit status is 1 diff --git a/tests/f_dir_bad_csum/expect.2 b/tests/f_dir_bad_csum/expect.2 new file mode 100644 index 000000000..f5a3e5fa6 --- /dev/null +++ b/tests/f_dir_bad_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: 19/128 files (5.3% non-contiguous), 1098/2048 blocks +Exit status is 0 diff --git a/tests/f_dir_bad_csum/image.gz b/tests/f_dir_bad_csum/image.gz new file mode 100644 index 000000000..4b581876f Binary files /dev/null and b/tests/f_dir_bad_csum/image.gz differ diff --git a/tests/f_dir_bad_csum/name b/tests/f_dir_bad_csum/name new file mode 100644 index 000000000..140ae45bd --- /dev/null +++ b/tests/f_dir_bad_csum/name @@ -0,0 +1 @@ +dir block w/ missing/bad csum, no tail, or dir block corruption (metadata_csum) diff --git a/tests/f_htree_bad_csum/expect.1 b/tests/f_htree_bad_csum/expect.1 new file mode 100644 index 000000000..258362b34 --- /dev/null +++ b/tests/f_htree_bad_csum/expect.1 @@ -0,0 +1,28 @@ +Pass 1: Checking inodes, blocks, and sizes +Pass 2: Checking directory structure +Problem in HTREE directory inode 12: root node fails checksum. +Clear HTree index? yes + +Problem in HTREE directory inode 18: root node fails checksum. +Clear HTree index? yes + +Directory inode 24, block #0, offset 1020: directory corrupted +Salvage? yes + +Problem in HTREE directory inode 24: root node fails checksum. +Clear HTree index? yes + +Problem in HTREE directory inode 30: root node fails checksum. +Clear HTree index? yes + +Problem in HTREE directory inode 36: root node fails checksum. +Clear HTree index? yes + +Pass 3: Checking directory connectivity +Pass 3A: Optimizing directories +Pass 4: Checking reference counts +Pass 5: Checking group summary information + +test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** +test_filesys: 47/128 files (2.1% non-contiguous), 1108/2048 blocks +Exit status is 1 diff --git a/tests/f_htree_bad_csum/expect.2 b/tests/f_htree_bad_csum/expect.2 new file mode 100644 index 000000000..7e3523bb4 --- /dev/null +++ b/tests/f_htree_bad_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: 47/128 files (2.1% non-contiguous), 1108/2048 blocks +Exit status is 0 diff --git a/tests/f_htree_bad_csum/image.gz b/tests/f_htree_bad_csum/image.gz new file mode 100644 index 000000000..def571c79 Binary files /dev/null and b/tests/f_htree_bad_csum/image.gz differ diff --git a/tests/f_htree_bad_csum/name b/tests/f_htree_bad_csum/name new file mode 100644 index 000000000..ebfc3eaab --- /dev/null +++ b/tests/f_htree_bad_csum/name @@ -0,0 +1 @@ +htree block w/ missing/bad csum, bad protective dirent, or htree index corruption (metadata_csum)