Skip to contentSkip to conversation

Add regression test for clearing an xattr block

PATCH In review Eric Sandeen 2 participants 3 messages Apr 11, 2008 – Apr 14, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Add regression test for clearing an xattr block

I got burned by the bug at:
http://git.kernel.org/?p=fs/ext2/e2fsprogs.git;a=commitdiff;h=86bc90f4f11df090f86dc764a4ea2d6dd5c13ffe

so figured maybe a testcase was in order...
20/20 hindsight I guess!

---
 tests/f_clear_xattr_block/expect.1 |   22 ++++++++++++++++++++++
 tests/f_clear_xattr_block/expect.2 |    7 +++++++
 tests/f_clear_xattr_block/name     |    1 +
 3 files changed, 30 insertions(+), 0 deletions(-)
 create mode 100644 tests/f_clear_xattr_block/expect.1
 create mode 100644 tests/f_clear_xattr_block/expect.2
 create mode 100644 tests/f_clear_xattr_block/name
tests/f_clear_xattr_block/expect.1 new file +22 -0
new file mode 100644
index 0000000..f9db73d
@@ -0,0 +1,22 @@
+Pass 1: Checking inodes, blocks, and sizes
+Inode 12 has a bad extended attribute block 1112.  Clear? yes
+
+Inode 12, i_blocks is 2, should be 0.  Fix? yes
+
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+Block bitmap differences:  -1112
+Fix? yes
+
+Free blocks count wrong for group #0 (7079, counted=7080).
+Fix? yes
+
+Free blocks count wrong (7079, counted=7080).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 12/256 files (8.3% non-contiguous), 1112/8192 blocks
+Exit status is 1
tests/f_clear_xattr_block/expect.2 new file +7 -0
new file mode 100644
index 0000000..3312a76
@@ -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: 12/256 files (8.3% non-contiguous), 1112/8192 blocks
+Exit status is 0
tests/f_clear_xattr_block/name new file +1 -0
new file mode 100644
index 0000000..9848acc
@@ -0,0 +1 @@
+clearing xattr block with bad header magic

-- 1.5.4.1

#1 lore raw
Quoted 5 lines · Eric Sandeen

I got burned by the bug at:
http://git.kernel.org/?p=fs/ext2/e2fsprogs.git;a=commitdiff;h=86bc90f4f11df090f86dc764a4ea2d6dd5c13ffe

so figured maybe a testcase was in order...
20/20 hindsight I guess!

Is the "ea_checks" patch and respective test in the upstream e2fsprogs? We had added additional checks to e2fsck for xattr blocks/large inodes.

The test output looks like below - there are a number of different types of EA corruption, though the error message is always the same. The patch was in the series I previously sent "e2fsprogs-ea_check.patch", and the patch + test image are in the tarball at
http://downloads.lustre.org/people/adilger/e2fsprogs-1.40.5-patches.tar.gz
though I could re-send one or both to the list if desired.

=================================
+Pass 1: Checking inodes, blocks, and sizes
+Inode 13 has a bad extended attribute block 26. Clear? yes +
+Inode 13, i_blocks is 4, should be 2. Fix? yes
+
+Extended attribute in inode 14 has a hash (1649340189) which is invalid +Clear? yes
+
+Inode 14, i_blocks is 2, should be 0. Fix? yes
+
+Inode 17 has a bad extended attribute block 28. Clear? yes +
+Inode 17, i_blocks is 4, should be 2. Fix? yes
+
+Inode 16 has a bad extended attribute block 29. Clear? yes +
+Inode 16, i_blocks is 2, should be 0. Fix? yes
+
+Inode 19 has a bad extended attribute block 33. Clear? yes +
+Inode 19, i_blocks is 2, should be 0. Fix? yes
+
+Inode 12 has a bad extended attribute block 55. Clear? yes +
+Inode 12, i_blocks is 2, should be 0. Fix? yes
+
+Inode 15, i_blocks is 2, should be 0. Fix? yes
+
+Pass 2: Checking directory structure
+Extended attribute block for inode 15 (/far) is invalid (999). +Clear? yes

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.

#2 lore raw
Quoted 9 lines · Andreas Dilger
Quoted 5 lines · Eric Sandeen

I got burned by the bug at:
http://git.kernel.org/?p=fs/ext2/e2fsprogs.git;a=commitdiff;h=86bc90f4f11df090f86dc764a4ea2d6dd5c13ffe

so figured maybe a testcase was in order...
20/20 hindsight I guess!

Is the "ea_checks" patch and respective test in the upstream e2fsprogs? We had added additional checks to e2fsck for xattr blocks/large inodes.

Ah, it is in git, I had missed that. Looks like it does cover the case I sent and much more, so... never mind.

Thanks,
-Eric