libext2fs: use ext2fs_blocks_count() in ext2fs_open2()
PATCH 1/1 libext2fs: use ext2fs_blocks_count() in ext2fs_open2()
ext2fs_open2() was only looking at s_blocks_count, and when it wrapped to a low number, it was failing the test of:
fs->super->s_first_data_block >= fs->super->s_blocks_count
which made the superblock look corrupt.
---
Patch is against the pu branch
lib/ext2fs/openfs.c +1 -1
@@ -288,7 +288,7 @@ errcode_t ext2fs_open2(const char *name, blocks_per_group > EXT2_MAX_BLOCKS_PER_GROUP(fs->super) || fs->inode_blocks_per_group > EXT2_MAX_INODES_PER_GROUP(fs->super) || EXT2_DESC_PER_BLOCK(fs->super) == 0 || - fs->super->s_first_data_block >= fs->super->s_blocks_count) { + fs->super->s_first_data_block >= ext2fs_blocks_count(fs->super)) { retval =EXT2_ET_CORRUPT_SUPERBLOCK ; goto cleanup; }
Quoted 6 lines · Eric Sandeen
ext2fs_open2()was only looking ats_blocks_count, and when it wrapped to a low number, it was failing the test of:
fs->super->s_first_data_block>=fs->super->s_blocks_countwhich made the superblock look corrupt.
Is this the source of the "e2fsck is finding bad checksums" problem?
lib/ext2fs/openfs.c errcode_t ext2fs_open2(const char *name, · line 291
Quoted 12 lines
Patch is against the pu branch
Index:
e2fsprogs/lib/ext2fs/openfs.c
===================================================================lib/ext2fs/openfs.c +1
-1@@ -288,7 +288,7 @@ errcode_t ext2fs_open2(const char *name, blocks_per_group >EXT2_MAX_BLOCKS_PER_GROUP (fs->super) || fs->inode_blocks_per_group >EXT2_MAX_INODES_PER_GROUP (fs->super) ||EXT2_DESC_PER_BLOCK (fs->super) ==0 || - fs->super->s_first_data_block >= fs->super->s_blocks_count) { + fs->super->s_first_data_block >= ext2fs_blocks_count(fs->super)) {
I would strongly suggest to replace the declaration of "s_blocks_count" with "s_blocks_count_lo" (and similar for every other split value), so that we catch all instances of this type of bug.
Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.
Quoted 9 lines · Andreas Dilger
Quoted 6 lines · Eric Sandeen
ext2fs_open2()was only looking ats_blocks_count, and when it wrapped to a low number, it was failing the test of:
fs->super->s_first_data_block>=fs->super->s_blocks_countwhich made the superblock look corrupt.
Is this the source of the "e2fsck is finding bad checksums" problem?
I applied this earlier today, and it didn't appear to help in my test case.
-Justin
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 5 lines · Justin Maggard
Quoted 4 lines · Andreas Dilger
Quoted 3 lines · Eric Sandeen
ext2fs_open2()was only looking ats_blocks_count, and when it wrapped to a low number, it was failing the test of:
Quoted 8 lines
Quoted 4 lines
Quoted 3 lines
fs->super->s_first_data_block>=fs->super->s_blocks_countwhich made the superblock look corrupt.
Is this the source of the "e2fsck is finding bad checksums" problem?
I applied this earlier today, and it didn't appear to help in my test case.
-Justin
Nah, didn't expect it to, but I'm working towards that. Just have to whack down the bugs between where I am, and your bug ;)
-Eric
Quoted 11 lines
Quoted 10 lines · Justin Maggard
Quoted 8 lines · Andreas Dilger
Quoted 6 lines · Eric Sandeen
ext2fs_open2()was only looking ats_blocks_count, and when it wrapped to a low number, it was failing the test of:
fs->super->s_first_data_block>=fs->super->s_blocks_countwhich made the superblock look corrupt.
Is this the source of the "e2fsck is finding bad checksums" problem?
Quoted 8 lines
Quoted 3 lines
I applied this earlier today, and it didn't appear to help in my test case.
-Justin
Nah, didn't expect it to, but I'm working towards that. Just have to whack down the bugs between where I am, and your bug ;)
-Eric
The following patch fixes a problem I think, but I'm not sure whether it resolves Justin's problem. I'm running a test, but I thought I'd send it out for people to try and/or comment on. Let me know of any problems.
Thanks,
Nick
Quoted 1 line
From
e8c790ab8a0f06b4c89a5b6ddba2a36f033c742cMon Sep 17 00:00:00 2001
From: Nick Dokos <[email protected]>
Date: Wed, 2 Sep 2009 16:52:09 -0400
Subject: [PATCH] Fix counting routines in blknum.c to take/return __u32 counts.
Several routines in lib/ext2fs/blknum.c:
ext2fs_bg_free_blocks_count()
ext2fs_bg_free_inodes_count()
ext2fs_bg_used_dirs_count()
ext2fs_bg_itable_unused()and their _set() counterparts, operate as if they are dealing with blk64_t quantities, but they should be dealing with __u32 counts instead.
--- lib/ext2fs/blknum.c | 48 ++++++++++++++++++++++++------------------------ lib/ext2fs/ext2fs.h | 16 ++++++++-------- 2 files changed, 32 insertions(+), 32 deletions(-)
lib/ext2fs/blknum.c +24 -24
@@ -274,7 +274,7 @@ void ext2fs_inode_table_loc_set(ext2_filsys fs, dgrp_t group, blk64_t blk)/* * Return the free blocks count of a group */ -blk64_t ext2fs_bg_free_blocks_count (ext2_filsys fs,dgrp_t group) +__u32 ext2fs_bg_free_blocks_count (ext2_filsys fs,dgrp_t group) {if (fs->super->s_desc_size >=EXT2_MIN_DESC_SIZE_64BIT ) {struct ext4_group_desc *gdp;
@@ -283,7 +283,7 @@ blk64_t ext2fs_bg_free_blocks_count(ext2_filsys fs, dgrp_t group)return gdp->bg_free_blocks_count | (fs->super->s_feature_incompat &EXT4_FEATURE_INCOMPAT_64BIT ? - (__u64 ) gdp->bg_free_blocks_count_hi <<32 :0 ); + (__u32 ) gdp->bg_free_blocks_count_hi <<16 :0 ); }return fs->group_desc[group].bg_free_blocks_count;
@@ -292,22 +292,22 @@ blk64_t ext2fs_bg_free_blocks_count(ext2_filsys fs, dgrp_t group)/* * Set the free blocks count of a group */ -void ext2fs_bg_free_blocks_count_set (ext2_filsys fs,dgrp_t group,blk64_t blk) +void ext2fs_bg_free_blocks_count_set (ext2_filsys fs,dgrp_t group,__u32 n) {if (fs->super->s_desc_size >=EXT2_MIN_DESC_SIZE_64BIT ) {struct ext4_group_desc *gdp; gdp = (struct ext4_group_desc *) (fs->group_desc) + group; - gdp->bg_free_blocks_count = blk; + gdp->bg_free_blocks_count = n;if (fs->super->s_feature_incompat &EXT4_FEATURE_INCOMPAT_64BIT ) - gdp->bg_free_blocks_count_hi = (__u64 ) blk >>32 ; + gdp->bg_free_blocks_count_hi = (__u32 ) n >>16 ; }else - fs->group_desc[group].bg_free_blocks_count = blk; + fs->group_desc[group].bg_free_blocks_count = n; }/* * Return the free inodes count of a group */ -blk64_t ext2fs_bg_free_inodes_count (ext2_filsys fs,dgrp_t group) +__u32 ext2fs_bg_free_inodes_count (ext2_filsys fs,dgrp_t group) {if (fs->super->s_desc_size >=EXT2_MIN_DESC_SIZE_64BIT ) {struct ext4_group_desc *gdp;
@@ -316,7 +316,7 @@ blk64_t ext2fs_bg_free_inodes_count(ext2_filsys fs, dgrp_t group)return gdp->bg_free_inodes_count | (fs->super->s_feature_incompat &EXT4_FEATURE_INCOMPAT_64BIT ? - (__u64 ) gdp->bg_free_inodes_count_hi <<32 :0 ); + (__u32 ) gdp->bg_free_inodes_count_hi <<16 :0 ); }return fs->group_desc[group].bg_free_inodes_count;
@@ -325,22 +325,22 @@ blk64_t ext2fs_bg_free_inodes_count(ext2_filsys fs, dgrp_t group)/* * Set the free inodes count of a group */ -void ext2fs_bg_free_inodes_count_set (ext2_filsys fs,dgrp_t group,blk64_t blk) +void ext2fs_bg_free_inodes_count_set (ext2_filsys fs,dgrp_t group,__u32 n) {if (fs->super->s_desc_size >=EXT2_MIN_DESC_SIZE_64BIT ) {struct ext4_group_desc *gdp; gdp = (struct ext4_group_desc *) (fs->group_desc) + group; - gdp->bg_free_inodes_count = blk; + gdp->bg_free_inodes_count = n;if (fs->super->s_feature_incompat &EXT4_FEATURE_INCOMPAT_64BIT ) - gdp->bg_free_inodes_count_hi = (__u64 ) blk >>32 ; + gdp->bg_free_inodes_count_hi = (__u32 ) n >>16 ; }else - fs->group_desc[group].bg_free_inodes_count = blk; + fs->group_desc[group].bg_free_inodes_count = n; }/* * Return the used dirs count of a group */ -blk64_t ext2fs_bg_used_dirs_count (ext2_filsys fs,dgrp_t group) +__u32 ext2fs_bg_used_dirs_count (ext2_filsys fs,dgrp_t group) {if (fs->super->s_desc_size >=EXT2_MIN_DESC_SIZE_64BIT ) {struct ext4_group_desc *gdp;
@@ -349,7 +349,7 @@ blk64_t ext2fs_bg_used_dirs_count(ext2_filsys fs, dgrp_t group)return gdp->bg_used_dirs_count | (fs->super->s_feature_incompat &EXT4_FEATURE_INCOMPAT_64BIT ? - (__u64 ) gdp->bg_used_dirs_count_hi <<32 :0 ); + (__u32 ) gdp->bg_used_dirs_count_hi <<16 :0 ); }return fs->group_desc[group].bg_used_dirs_count;
@@ -358,22 +358,22 @@ blk64_t ext2fs_bg_used_dirs_count(ext2_filsys fs, dgrp_t group)/* * Set the used dirs count of a group */ -void ext2fs_bg_used_dirs_count_set (ext2_filsys fs,dgrp_t group,blk64_t blk) +void ext2fs_bg_used_dirs_count_set (ext2_filsys fs,dgrp_t group,__u32 n) {if (fs->super->s_desc_size >=EXT2_MIN_DESC_SIZE_64BIT ) {struct ext4_group_desc *gdp; gdp = (struct ext4_group_desc *) (fs->group_desc) + group; - gdp->bg_used_dirs_count = blk; + gdp->bg_used_dirs_count = n;if (fs->super->s_feature_incompat &EXT4_FEATURE_INCOMPAT_64BIT ) - gdp->bg_used_dirs_count_hi = (__u64 ) blk >>32 ; + gdp->bg_used_dirs_count_hi = (__u32 ) n >>16 ; }else - fs->group_desc[group].bg_used_dirs_count = blk; + fs->group_desc[group].bg_used_dirs_count = n; }/* * Return the unused inodes count of a group */ -blk64_t ext2fs_bg_itable_unused (ext2_filsys fs,dgrp_t group) +__u32 ext2fs_bg_itable_unused (ext2_filsys fs,dgrp_t group) {if (fs->super->s_desc_size >=EXT2_MIN_DESC_SIZE_64BIT ) {struct ext4_group_desc *gdp;
@@ -382,7 +382,7 @@ blk64_t ext2fs_bg_itable_unused(ext2_filsys fs, dgrp_t group)return gdp->bg_itable_unused | (fs->super->s_feature_incompat &EXT4_FEATURE_INCOMPAT_64BIT ? - (__u64 ) gdp->bg_itable_unused_hi <<32 :0 ); + (__u32 ) gdp->bg_itable_unused_hi <<16 :0 ); }return fs->group_desc[group].bg_itable_unused;
@@ -391,16 +391,16 @@ blk64_t ext2fs_bg_itable_unused(ext2_filsys fs, dgrp_t group)/* * Set the unused inodes count of a group */ -void ext2fs_bg_itable_unused_set (ext2_filsys fs,dgrp_t group,blk64_t blk) +void ext2fs_bg_itable_unused_set (ext2_filsys fs,dgrp_t group,__u32 n) {if (fs->super->s_desc_size >=EXT2_MIN_DESC_SIZE_64BIT ) {struct ext4_group_desc *gdp; gdp = (struct ext4_group_desc *) (fs->group_desc) + group; - gdp->bg_itable_unused = blk; + gdp->bg_itable_unused = n;if (fs->super->s_feature_incompat &EXT4_FEATURE_INCOMPAT_64BIT ) - gdp->bg_itable_unused_hi = (__u64 ) blk >>32 ; + gdp->bg_itable_unused_hi = (__u32 ) n >>16 ; }else - fs->group_desc[group].bg_itable_unused = blk; + fs->group_desc[group].bg_itable_unused = n; }/*
lib/ext2fs/ext2fs.h +8 -8
@@ -763,18 +763,18 @@ extern void ext2fs_inode_bitmap_loc_set(ext2_filsys fs, dgrp_t group,extern blk64_t ext2fs_inode_table_loc (ext2_filsys fs,dgrp_t group);extern void ext2fs_inode_table_loc_set (ext2_filsys fs,dgrp_t group,blk64_t blk); -extern blk64_t ext2fs_bg_free_blocks_count (ext2_filsys fs,dgrp_t group); +extern __u32 ext2fs_bg_free_blocks_count (ext2_filsys fs,dgrp_t group);extern void ext2fs_bg_free_blocks_count_set (ext2_filsys fs,dgrp_t group, -blk64_t blk); -extern blk64_t ext2fs_bg_free_inodes_count (ext2_filsys fs,dgrp_t group); +__u32 n); +extern __u32 ext2fs_bg_free_inodes_count (ext2_filsys fs,dgrp_t group);extern void ext2fs_bg_free_inodes_count_set (ext2_filsys fs,dgrp_t group, -blk64_t blk); -extern blk64_t ext2fs_bg_used_dirs_count (ext2_filsys fs,dgrp_t group); +__u32 n); +extern __u32 ext2fs_bg_used_dirs_count (ext2_filsys fs,dgrp_t group);extern void ext2fs_bg_used_dirs_count_set (ext2_filsys fs,dgrp_t group, -blk64_t blk); -extern blk64_t ext2fs_bg_itable_unused (ext2_filsys fs,dgrp_t group); +__u32 n); +extern __u32 ext2fs_bg_itable_unused (ext2_filsys fs,dgrp_t group);extern void ext2fs_bg_itable_unused_set (ext2_filsys fs,dgrp_t group, -blk64_t blk); +__u32 n);extern __u16 ext2fs_bg_flags (ext2_filsys fs,dgrp_t group);extern void ext2fs_bg_flags_set (ext2_filsys fs,dgrp_t group,__u16 bg_flags); extern void ext2fs_bg_flags_clear(ext2_filsys fs, dgrp_t group,
Signature · 1 line
1.6.0.6
Quoted 3 lines · Nick Dokos
The following patch fixes a problem I think, but I'm not sure whether it resolves Justin's problem. I'm running a test, but I thought I'd send it out for people to try and/or comment on. Let me know of any problems.
Just finished trying with that patch, but it looks like it doesn't resolve my issue either.
-Justin
Quoted 9 lines · Justin Maggard
Quoted 3 lines · Nick Dokos
The following patch fixes a problem I think, but I'm not sure whether it resolves Justin's problem. I'm running a test, but I thought I'd send it out for people to try and/or comment on. Let me know of any problems.
Just finished trying with that patch, but it looks like it doesn't resolve my issue either.
-Justin
Ok, I had a thinko in there, steered astray by a weird function arguments; V2 coming in a moment :)
-Eric
Quoted 8 lines · Justin Maggard
Quoted 3 lines · Nick Dokos
The following patch fixes a problem I think, but I'm not sure whether it resolves Justin's problem. I'm running a test, but I thought I'd send it out for people to try and/or comment on. Let me know of any problems.
Just finished trying with that patch, but it looks like it doesn't resolve my issue either.
Yup, it didn't pass my test either.
Thanks,
Nick
Quoted 11 lines · Nick Dokos
Quoted 7 lines · Justin Maggard
Quoted 3 lines · Nick Dokos
The following patch fixes a problem I think, but I'm not sure whether it resolves Justin's problem. I'm running a test, but I thought I'd send it out for people to try and/or comment on. Let me know of any problems.
Just finished trying with that patch, but it looks like it doesn't resolve my issue either.
Yup, it didn't pass my test either.
You guys are still getting bad checksums?
-Eric
Quoted 7 lines · Eric Sandeen
Quoted 6 lines · Nick Dokos
Quoted 4 lines · Justin Maggard
Quoted 3 lines · Nick Dokos
The following patch fixes a problem I think, but I'm not sure whether it resolves Justin's problem. I'm running a test, but I thought I'd send it out for people to try and/or comment on. Let me know of any problems.
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
Just finished trying with that patch, but it looks like it doesn't resolve my issue either.
Yup, it didn't pass my test either.
You guys are still getting bad checksums?
Yeah, I am.
Quoted 8 lines · Justin Maggard
Quoted 7 lines · Eric Sandeen
Quoted 6 lines · Nick Dokos
Quoted 4 lines · Justin Maggard
Quoted 3 lines · Nick Dokos
The following patch fixes a problem I think, but I'm not sure whether it resolves Justin's problem. I'm running a test, but I thought I'd send it out for people to try and/or comment on. Let me know of any problems.
Quoted 7 lines
Quoted 5 lines
Quoted 4 lines
Quoted 3 lines
Just finished trying with that patch, but it looks like it doesn't resolve my issue either.
Yup, it didn't pass my test either.
You guys are still getting bad checksums?
Yeah, I am.
Oh, sorry, all the other bugs gave me a head-fake, and I forgot the original problem of -fsck- corrupting the checksums. :) I had a simple mkdir giving me the corruptions. Ok, on to that.
-Eric
Quoted 9 lines · Eric Sandeen
Quoted 4 lines · Justin Maggard
Quoted 1 line · Eric Sandeen
You guys are still getting bad checksums?
Yeah, I am.
Oh, sorry, all the other bugs gave me a head-fake, and I forgot the original problem of -fsck- corrupting the checksums. :) I had a simple mkdir giving me the corruptions. Ok, on to that.
I found the source of the checksum error last night - the reserved bytes in the 64-bit group descriptor are not zero after the e2fsck is run. It should be pretty easy to run e2fsck under gdb and put a hardware watch on those bytes to see who twiddles them.
Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.
Quoted 5 lines · Andreas Dilger
Quoted 4 lines · Eric Sandeen
Quoted 3 lines · Justin Maggard
Quoted 1 line · Eric Sandeen
You guys are still getting bad checksums?
Yeah, I am.
Quoted 8 lines
Quoted 3 lines
Oh, sorry, all the other bugs gave me a head-fake, and I forgot the original problem of -fsck- corrupting the checksums. :) I had a simple mkdir giving me the corruptions. Ok, on to that.
I found the source of the checksum error last night - the reserved bytes in the 64-bit group descriptor are not zero after the e2fsck is run. It should be pretty easy to run e2fsck under gdb and put a hardware watch on those bytes to see who twiddles them.
Thanks, I saw that email a bit late today, will take a look.
-Eric
Quoted 5 lines
Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.
Theodore Tso
Acked-byQuoted 3 lines · Nick Dokos
The following patch fixes a problem I think, but I'm not sure whether it resolves Justin's problem. I'm running a test, but I thought I'd send it out for people to try and/or comment on. Let me know of any problems.
Ouch. Thanks for sending this; I'm surprised people hadn't run into massive problems due to this patch earlier.
- Ted
Quoted 8 lines · Nick Dokos
Quoted 3 lines
The following patch fixes a problem I think, but I'm not sure whether it resolves Justin's problem. I'm running a test, but I thought I'd send it out for people to try and/or comment on. Let me know of any problems.
Ouch. Thanks for sending this; I'm surprised people hadn't run into massive problems due to this patch earlier.
Most of the time those counts fit in 16 bits (they are per block group, is that right?) - at least with default values: you'd have to make a file system with larger block groups to see the problem, I think. So it's not as painful as it first sounds.
Nick
Re: [PATCH] Fix counting routines in blknum.c to take/return __u32 counts.
In reply to Nick DokosQuoted 12 lines · Nick Dokos
From
e8c790ab8a0f06b4c89a5b6ddba2a36f033c742cMon Sep 17 00:00:00 2001
From: Nick Dokos <[email protected]>
Date: Wed, 2 Sep 2009 16:52:09 -0400
Subject: [PATCH] Fix counting routines inblknum.cto take/return__u32counts.Several routines in
lib/ext2fs/blknum.c:ext2fs_bg_free_blocks_count() ext2fs_bg_free_inodes_count() ext2fs_bg_used_dirs_count() ext2fs_bg_itable_unused()
Quoted 5 lines
and their
_set()counterparts, operate as if they are dealing withblk64_tquantities, but they should be dealing with__u32counts instead.Signed-off-by Nick Dokos <[email protected]>
Added to the e2fsprogs pu branch / 64-bit patch set.
BTW, note that this patch by itself caused the regression test suite to explode spectactularly, since there was a number of printf-style format statements that had to be changed so that dumpe2fs, debugfs et. al, would work correctly after changing the above-mentioned routines to return 32-bit values instead of 64-bit values.
I've fixed this before adding it to the e2fsprogs patch set.
Even though we do need to add more 64-bit tests, I do appreciate it if people could test their patches using "make check" before sending patches them to the ext4 list.
- Ted
Re: [PATCH] Fix counting routines in blknum.c to take/return __u32 counts.
Quoted 27 lines · Theodore Tso
Quoted 12 lines · Nick Dokos
From
e8c790ab8a0f06b4c89a5b6ddba2a36f033c742cMon Sep 17 00:00:00 2001
From: Nick Dokos <[email protected]>
Date: Wed, 2 Sep 2009 16:52:09 -0400
Subject: [PATCH] Fix counting routines inblknum.cto take/return__u32counts.Several routines in
lib/ext2fs/blknum.c:ext2fs_bg_free_blocks_count() ext2fs_bg_free_inodes_count() ext2fs_bg_used_dirs_count() ext2fs_bg_itable_unused()Quoted 5 lines
and their
_set()counterparts, operate as if they are dealing withblk64_tquantities, but they should be dealing with__u32counts instead.Signed-off-by Nick Dokos <[email protected]>Added to the e2fsprogs pu branch / 64-bit patch set.
BTW, note that this patch by itself caused the regression test suite to explode spectactularly, since there was a number of printf-style format statements that had to be changed so that dumpe2fs, debugfs et. al, would work correctly after changing the above-mentioned routines to return 32-bit values instead of 64-bit values.
Quoted 6 lines
I've fixed this before adding it to the e2fsprogs patch set.
Even though we do need to add more 64-bit tests, I do appreciate it if people could test their patches using "make check" before sending patches them to the ext4 list.
Apologies for the breakage, but I invariably do "make check" and I got no failures on the "make check" step (log appended). I probably should have ported them to a 32-bit platform and tested there but I did not. Is that where the failures arose?
Thanks,
Nick
make[1]: Entering directory /home/nick/src/e2fsprogs/build' make[1]: lib/ext2fs/ext2_types.h' is up to date.
make[1]: Leaving directory /home/nick/src/e2fsprogs/build' make[1]: Entering directory /home/nick/src/e2fsprogs/build' make[1]: `lib/blkid/blkid_types.h' is up to date.
make[1]: Leaving directory /home/nick/src/e2fsprogs/build' make[1]: Entering directory /home/nick/src/e2fsprogs/build' make[1]: `lib/uuid/uuid_types.h' is up to date.
make[1]: Leaving directory /home/nick/src/e2fsprogs/build' make[1]: Entering directory /home/nick/src/e2fsprogs/build/lib/et' make[1]: `compile_et' is up to date.
make[1]: Leaving directory /home/nick/src/e2fsprogs/build/lib/et' make[1]: Entering directory /home/nick/src/e2fsprogs/build/lib/ext2fs' make[1]: `ext2_err.h' is up to date.
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/lib/ext2fs' making check in util
make[1]: Entering directory /home/nick/src/e2fsprogs/build/util' make[1]: Nothing to be done for check'.
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/util' making check in lib/et
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/lib/et'
for i in ../../../lib/et/test_cases/*.et ; do \ t=`basename $i | sed -e 's/.et//'`; \ ./compile_et --build-tree $i ; \ diff -c ../../../lib/et/test_cases/$t.c $t.c > $t.failed; \ if [ $? -ne 0 ]; then echo Test case $t failed; exit 1 ; fi ; \ diff -c ../../../lib/et/test_cases/$t.h $t.h >> $t.failed; \ if [ $? -ne 0 ]; then echo Test case $t failed; exit 1 ; fi ; \ /bin/rm -f $t.c $t.h $t.failed; \ echo "Test case $t succeeded" ; \ done
Test case continuation succeeded
Test case heimdal2 succeeded
Test case heimdal3 succeeded
Test case heimdal succeeded
Test case imap_err succeeded
Test case simple succeeded
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/lib/et' making check in lib/ss
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/lib/ss'
RUN TEST test_ss
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/lib/ss' making check in lib/e2p
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/lib/e2p' ./tst_ostype
0: Linux (0)
1: Hurd (1)
2: Masix (2)
3: FreeBSD (3)
4: Lites (4)
./tst_feature
Feature list:
Compat = 0, Mask = 1, dir_prealloc
Compat = 0, Mask = 4, has_journal
Compat = 0, Mask = 2, imagic_inodes
Compat = 0, Mask = 8, ext_attr
Compat = 0, Mask = 32, dir_index
Compat = 0, Mask = 16, resize_inode
Compat = 0, Mask = 64, lazy_bg
Compat = 2, Mask = 1, sparse_super
Compat = 2, Mask = 2, large_file
Compat = 2, Mask = 8, huge_file
Compat = 2, Mask = 16, uninit_bg
Compat = 2, Mask = 16, uninit_groups
Compat = 2, Mask = 32, dir_nlink
Compat = 2, Mask = 64, extra_isize
Compat = 1, Mask = 1, compression
Compat = 1, Mask = 2, filetype
Compat = 1, Mask = 4, needs_recovery
Compat = 1, Mask = 8, journal_dev
Compat = 1, Mask = 64, extent
Compat = 1, Mask = 64, extents
Compat = 1, Mask = 16, meta_bg
Compat = 1, Mask = 128, 64bit
Compat = 1, Mask = 512, flex_bg
Journal feature list:
Compat = 0, Mask = 1, journal_checksum
Compat = 1, Mask = 1, journal_incompat_revoke Compat = 1, Mask = 4, journal_async_commit
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/lib/e2p' making check in lib/uuid
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/lib/uuid' LD_LIBRARY_PATH=../../lib DYLD_LIBRARY_PATH=../../lib ./tst_uuid UUID generate = cbbb1eb3-57be-4b3f-8ce3-694c9efa9ade
UUID: cbbb1eb357be4b3f8ce3694c9efa9ade
UUID type = 4, UUID variant = 1
UUID random string = f870ff83-d313-44f9-abb8-8c3027e05546
UUID: f870ff83d31344f9abb88c3027e05546
UUID type = 4, UUID variant = 1
UUID string = e4c3f9be-9b0a-11de-895f-001e0bbaec64 UUID time: e4c3f9be9b0a11de895f001e0bbaec64
UUID type = 1, UUID variant = 1
UUID time is: (1252258195, 772051): Sun Sep 6 13:29:55 2009
UUID parse and compare succeeded.
UUID clear and is null succeeded.
UUID copy and compare succeeded. 84949cc5-4701-4a84-895b-354c584a981b is valid, OK 84949CC5-4701-4A84-895B-354C584A981B is valid, OK 84949cc5-4701-4a84-895b-354c584a981bc is invalid, OK 84949cc5-4701-4a84-895b-354c584a981 is invalid, OK 84949cc5x4701-4a84-895b-354c584a981b is invalid, OK 84949cc504701-4a84-895b-354c584a981b is invalid, OK 84949cc5-470104a84-895b-354c584a981b is invalid, OK 84949cc5-4701-4a840895b-354c584a981b is invalid, OK 84949cc5-4701-4a84-895b0354c584a981b is invalid, OK g4949cc5-4701-4a84-895b-354c584a981b is invalid, OK 84949cc5-4701-4a84-895b-354c584a981g is invalid, OK
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/lib/uuid' making check in lib/ext2fs
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/lib/ext2fs' LD_LIBRARY_PATH=../../lib DYLD_LIBRARY_PATH=../../lib ./tst_bitops ext2fs_test_bit appears to be correctext2fs_set_bit test succeeded.ext2fs_clear_bit test succeed.
big bit number (2147483690) test: 4, expected 4
big bit number (2147483690) test: 0, expected 0 ext2fs_set_bit big_test successfulext2fs_fast_set_bit test succeeded.ext2fs_clear_bit test succeed.
big bit number (2147483690) test: 4, expected 4
big bit number (2147483690) test: 0, expected 0 ext2fs_fast_set_bit big_test successful
64-bit: ext2fs_test_bit appears to be correct
64-bit: ext2fs_set_bit test succeeded.
64-bit: ext2fs_clear_bit test succeed.
64-bit: big bit number (2147483690) test: 4, expected 4 64-bit: big bit number (2147483690) test: 0, expected 0 64-bit: ext2fs_set_bit big_test successful
64-bit: ext2fs_fast_set_bit test succeeded.
64-bit: ext2fs_clear_bit test succeed.
64-bit: big bit number (2147483690) test: 4, expected 4 64-bit: big bit number (2147483690) test: 0, expected 0 64-bit: ext2fs_fast_set_bit big_test successful LD_LIBRARY_PATH=../../lib DYLD_LIBRARY_PATH=../../lib ./tst_badblocks
test1: 1 2 3 4 5 6 7 8 9 10 --- OK
test2: 1 2 3 4 5 6 7 8 9 10 11 --- OK
test3: 1 2 3 4 5 6 7 8 9 10 --- OK
test4: 2 12 13 17 20 23 50 56 66
block 20 is present --- OK
block 50 is present --- OK
block 3 is absent --- OK
block 17 is present --- OK
block 18 is absent --- OK
block 16 is absent --- OK
block 11 is absent --- OK
block 12 is present --- OK
block 13 is present --- OK
block 14 is absent --- OK
block 80 is absent --- OK
block 45 is absent --- OK
block 66 is present --- OK
test5: 1 17 20 23 31 51 56 57
Adding block 50 --- now present
Removing block 51 --- now absent
Removing block 57 --- now absent
Adding block 66 --- now present
Removing block 31 --- now absent
Adding block 12 --- now present
Adding block 2 --- now present
Adding block 13 --- now present
Removing block 1 --- now absent
After test5 sequence: 2 12 13 17 20 23 50 56 66
Comparison tests:
bb1 and bb2 are NOT equal.
bb1 and bb3 are equal.
bb1 and bb4 are NOT equal.
bb4 and bb5 are equal.
Block bitmap matched after reading and writing.
Expected invalid block
Block bitmap matched after reading and writing.
ext2fs library badblocks tests checks out OK!
LD_LIBRARY_PATH=../../lib DYLD_LIBRARY_PATH=../../lib ./tst_iscan
Reading blocks: 5-7, 9-11, 13-20, 21-23, 25-32, 33, 35-42, 45-52, 53-60, 61-68, 69-76, 77-84, 85-92, 93-99, 101-108, 109-116, 117-124, 125-132, 133-140, 141-148, 149-156, 157-164, 165-172, 173-180, 181-188, 189-192, 8197-8204, 8205-8212, 8213-8220, 8221-8228, 8229-8236, 8237-8244, 8245-8252, 8253-8260, 8261-8268, 8269-8276, 8277-8284, 8285-8292, 8293-8300, 8301-8308, 8309-8316, 8317-8324, 8325-8332, 8333-8340, 8341-8348, 8349-8356, 8357-8364, 8365-8372, 8373-8380, 8381-8384 Bad inodes: 25, 26, 27, 28, 29, 30, 31, 32, 57, 58, 59, 60, 61, 62, 63, 64, 153, 154, 155, 156, 157, 158, 159, 160, 233, 234, 235, 236, 237, 238, 239, 240, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 761, 762, 763, 764, 765, 766, 767, 768
Inode scan tested OK!
LD_LIBRARY_PATH=../../lib DYLD_LIBRARY_PATH=../../lib ./tst_types
The ext2_types.h types are correct.
LD_LIBRARY_PATH=../../lib DYLD_LIBRARY_PATH=../../lib ./tst_icount
Standard icount run:icount_store(42, 42) = 42 (OK)icount_store(1, 1) = 1 (OK)icount_store(2, 2) = 2 (OK)icount_store(3, 3) = 3 (OK)icount_store(10, 1) = 1 (OK)icount_store(42, 0) = 0 (OK)icount_increment(5) = 1 (OK)icount_increment(5) = 2 (OK)icount_increment(5) = 3 (OK)icount_increment(5) = 4 (OK)icount_decrement(5) = 3 (OK)icount_decrement(5) = 2 (OK)icount_decrement(5) = 1 (OK)icount_decrement(5) = 0 (OK)icount_fetch(10) = 1 (OK)icount_fetch(1) = 1 (OK)icount_fetch(2) = 2 (OK)icount_fetch(3) = 3 (OK)icount_increment(1) = 2 (OK)icount_decrement(2) = 1 (OK)icount_decrement(2) = 0 (OK)icount_fetch(12) = 0 (OK)
icount size is 60
Multiple bitmap test:icount_store(42, 42) = 42 (OK)icount_store(1, 1) = 1 (OK)icount_store(2, 2) = 2 (OK)icount_store(3, 3) = 3 (OK)icount_store(10, 1) = 1 (OK)icount_store(42, 0) = 0 (OK)icount_increment(5) = 1 (OK)icount_increment(5) = 2 (OK)icount_increment(5) = 3 (OK)icount_increment(5) = 4 (OK)icount_decrement(5) = 3 (OK)icount_decrement(5) = 2 (OK)icount_decrement(5) = 1 (OK)icount_decrement(5) = 0 (OK)icount_fetch(10) = 1 (OK)icount_fetch(1) = 1 (OK)icount_fetch(2) = 2 (OK)icount_fetch(3) = 3 (OK)icount_increment(1) = 2 (OK)icount_decrement(2) = 1 (OK)icount_decrement(2) = 0 (OK)icount_fetch(12) = 0 (OK)
icount size is 60
Resizing icount:icount_store(1, 1) = 1 (OK)icount_store(2, 2) = 2 (OK)icount_store(3, 3) = 3 (OK)icount_store(4, 4) = 4 (OK)icount_store(5, 5) = 5 (OK)icount_store(6, 1) = 1 (OK)icount_store(7, 2) = 2 (OK)icount_store(8, 3) = 3 (OK)icount_store(9, 4) = 4 (OK)icount_store(10, 5) = 5 (OK)icount_store(11, 1) = 1 (OK)icount_store(12, 2) = 2 (OK)icount_store(13, 3) = 3 (OK)icount_store(14, 4) = 4 (OK)icount_store(15, 5) = 5 (OK)icount_store(16, 1) = 1 (OK)icount_store(17, 2) = 2 (OK)icount_store(18, 3) = 3 (OK)icount_store(19, 4) = 4 (OK)icount_store(20, 5) = 5 (OK)icount_store(21, 1) = 1 (OK)icount_store(22, 2) = 2 (OK)icount_store(23, 3) = 3 (OK)icount_store(24, 4) = 4 (OK)icount_store(25, 5) = 5 (OK)icount_store(26, 1) = 1 (OK)icount_store(27, 2) = 2 (OK)icount_store(28, 3) = 3 (OK)icount_store(29, 4) = 4 (OK)icount_store(30, 5) = 5 (OK)
icount size is 2256
Standard icount run with tdb:icount_store(42, 42) = 42 (OK)icount_store(1, 1) = 1 (OK)icount_store(2, 2) = 2 (OK)icount_store(3, 3) = 3 (OK)icount_store(10, 1) = 1 (OK)icount_store(42, 0) = 0 (OK)icount_increment(5) = 1 (OK)icount_increment(5) = 2 (OK)icount_increment(5) = 3 (OK)icount_increment(5) = 4 (OK)icount_decrement(5) = 3 (OK)icount_decrement(5) = 2 (OK)icount_decrement(5) = 1 (OK)icount_decrement(5) = 0 (OK)icount_fetch(10) = 1 (OK)icount_fetch(1) = 1 (OK)icount_fetch(2) = 2 (OK)icount_fetch(3) = 3 (OK)icount_increment(1) = 2 (OK)icount_decrement(2) = 1 (OK)icount_decrement(2) = 0 (OK)icount_fetch(12) = 0 (OK)
icount size is 0
Multiple bitmap test with tdb:icount_store(42, 42) = 42 (OK)icount_store(1, 1) = 1 (OK)icount_store(2, 2) = 2 (OK)icount_store(3, 3) = 3 (OK)icount_store(10, 1) = 1 (OK)icount_store(42, 0) = 0 (OK)icount_increment(5) = 1 (OK)icount_increment(5) = 2 (OK)icount_increment(5) = 3 (OK)icount_increment(5) = 4 (OK)icount_decrement(5) = 3 (OK)icount_decrement(5) = 2 (OK)icount_decrement(5) = 1 (OK)icount_decrement(5) = 0 (OK)icount_fetch(10) = 1 (OK)icount_fetch(1) = 1 (OK)icount_fetch(2) = 2 (OK)icount_fetch(3) = 3 (OK)icount_increment(1) = 2 (OK)icount_decrement(2) = 1 (OK)icount_decrement(2) = 0 (OK)icount_fetch(12) = 0 (OK)
icount size is 0
LD_LIBRARY_PATH=../../lib DYLD_LIBRARY_PATH=../../lib ./tst_super_size Size of struct ext2_super_block is 1024
LD_LIBRARY_PATH=../../lib DYLD_LIBRARY_PATH=../../lib ./tst_csum
csum0000: UUID 234897e7cfe8254fdbecae4b88a7fabe(241f), grp 0(df47): d3a4=d3a4
csum0001: UUID 234897e7cfe8254fdbecae4b88a7fabe(241f), grp 1(2346): 3ea5=3ea5
csumffff: UUID 234897e7cfe8254fdbecae4b88a7fabe(241f), grp 2(6746): 49a5=49a5csum_set: UUID 234897e7cfe8254fdbecae4b88a7fabe(241f), grp 0(df47): d3a4=d3a4new_uuid: UUID 30303030303030303030303030303030(766d), grp 0(76fd): a4ac=a4accsum_new: UUID 30303030303030303030303030303030(766d), grp 0(76fd): a4ac=a4accsum_blk: UUID 30303030303030303030303030303030(766d), grp 0(76fd): 2e14=2e14 make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/lib/ext2fs' making check in lib/blkid
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/lib/blkid' ./test_probe
cramfs: ok
ext2: ok
ext3: okfat32_label_64MB: ok
fat: ok
iso: ok
jbd: ok
jfs: ok
minix: ok
ocfs2: ok
reiser3: ok
reiser4: ok
romfs: ok
small-fat32: ok
swap0: ok
swap1: ok
udf: ok
xfs: ok
zfs: ok
19 tests succeeded 0 tests failed
./tst_types
The blkid_types.h types are correct.
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/lib/blkid' making check in intl
make[1]: Entering directory /home/nick/src/e2fsprogs/build/intl' make[1]: Nothing to be done for check'.
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/intl' making check in e2fsck
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/e2fsck' LD_LIBRARY_PATH=../lib DYLD_LIBRARY_PATH=../lib ./tst_refcount Creating refcount with size 5
Storing blk 3 with value 3
Storing blk 4 with value 4
Storing blk 1 with value 1
Storing blk 8 with value 8
Storing blk 2 with value 2
Storing blk 4 with value 0
Storing blk 2 with value 0Refcount_collapse: size was 5, now 3
Storing blk 6 with value 6
Refcount validation OK.
Storing blk 4 with value 4Refcount_collapse: size was 5, now 5
Storing blk 2 with value 2bcode_fetch(1) returns 1bcode_fetch(2) returns 2bcode_increment(3) returns 4bcode_increment(3) returns 5bcode_decrement(4) returns 3
Storing blk 4 with value 4
Refcount validation OK.
Storing blk 20 with value 20
Storing blk 40 with value 40
Storing blk 30 with value 30
Storing blk 10 with value 10bcode_decrement(30) returns 29bcode_fetch(30) returns 29bcode_decrement(2) returns 1bcode_decrement(2) returns 0Refcount_collapse: size was 10, now 9
blk=1, count=1 blk=3, count=5 blk=4, count=4 blk=6, count=6 blk=8, count=8 blk=10, count=10 blk=20, count=20 blk=30, count=29 blk=40, count=40
Refcount validation OK.
Freeing refcount
LD_LIBRARY_PATH=../lib DYLD_LIBRARY_PATH=../lib ./tst_region Creating region with args(1, 1001)
Printing region (min=1. max=1001)
Region_allocate(10, 10) returns 0Region_allocate(30, 10) returns 0
Printing region (min=1. max=1001)
(10, 20) (30, 40)
Region_allocate(1, 15) returns 1Region_allocate(15, 8) returns 1Region_allocate(1, 20) returns 1Region_allocate(1, 8) returns 0
Printing region (min=1. max=1001)
(1, 9) (10, 20) (30, 40) Region_allocate(40, 10) returns 0 Printing region (min=1. max=1001) (1, 9) (10, 20) (30, 50) Region_allocate(22, 5) returns 0 Printing region (min=1. max=1001) (1, 9) (10, 20) (22, 27) (30, 50) Region_allocate(27, 3) returns 0 Printing region (min=1. max=1001) (1, 9) (10, 20) (22, 50) Region_allocate(20, 2) returns 0 Printing region (min=1. max=1001) (1, 9) (10, 50)
Region_allocate(49, 1) returns 1Region_allocate(50, 5) returns 0Region_allocate(9, 2) returns 1Region_allocate(9, 1) returns 0
Printing region (min=1. max=1001)
(1, 55)
LD_LIBRARY_PATH=../lib DYLD_LIBRARY_PATH=../lib ./tst_crc32
Testing length 0...
Testing length 1...
Testing length 2...
Testing length 3...
Testing length 4...
Testing length 5...
Testing length 6...
Testing length 7...
Testing length 8...
Testing length 9...
Testing length 10...
Testing length 11...
Testing length 12...
Testing length 13...
Testing length 14...
Testing length 15...
Testing length 16...
Testing length 17...
Testing length 18...
Testing length 19...
Testing length 20...
Testing length 21...
Testing length 22...
Testing length 23...
Testing length 24...
Testing length 25...
Testing length 26...
Testing length 27...
Testing length 28...
Testing length 29...
Testing length 30...
Testing length 31...
Testing length 32...
Testing length 33...
Testing length 34...
Testing length 35...
Testing length 36...
Testing length 37...
Testing length 38...
Testing length 39...
Testing length 40...
Testing length 41...
Testing length 42...
Testing length 43...
Testing length 44...
Testing length 45...
Testing length 46...
Testing length 47...
Testing length 48...
Testing length 49...
Testing length 50...
Testing length 51...
Testing length 52...
Testing length 53...
Testing length 54...
Testing length 55...
Testing length 56...
Testing length 57...
Testing length 58...
Testing length 59...
Testing length 60...
Testing length 61...
Testing length 62...
Testing length 63...
Testing length 64... All test complete. No failures expected.
LD_LIBRARY_PATH=../lib DYLD_LIBRARY_PATH=../lib ./tst_problem
e2fsck problem table verified
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/e2fsck'
making check in debugfs
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/debugfs'
make[1]: Nothing to be done for `check'.
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/debugfs'
making check in misc
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/misc'
./base_device < ../../misc/base_device.tst > base_device.out
cmp ../../misc/base_device.tst base_device.out
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/misc'
making check in resize
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/resize'
Test succeeded.
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/resize'
making check in tests/progs
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/tests/progs'
make[1]: Nothing to be done for `check'.
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/tests/progs'
making check in po
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/po'
make[1]: Nothing to be done for `check'.
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/po'
making check in tests
make[1]: Entering directory `/home/nick/src/e2fsprogs/build/tests'
Running e2fsprogs test suite...
d_loaddump: debugfs load/dump test: oke_brel_bma: block relocation table using the memory array implementation: skippede_icount_normal: inode counting abstraction optimized for storing inode counts: oke_icount_opt: inode counting abstraction optimized for counting: oke_irel_ima: inode relocation table using the memory array implementation: skippedf_16384_block: 16384 byte blocksize: okf_8192_block: 8192 byte blocksize: okf_bad_disconnected_inode: Disconnected inode with bad fields: okf_bad_local_jnl: test for corrupt local journal (bad V1->V2 journal upgrade): okf_badbblocks: illegal blocks in bad block inode: okf_baddir: corrupted directory entries: okf_baddir2: salvage last directory entry: okf_baddotdir: bad '.' and '..' entries: okf_badinode: corrupted inode entries: okf_badjour_indblks: corruption in journal inode's indirect blocks: okf_badjourblks: Illegal blocks in journal inode (and backup in superblock): okf_badorphan: corrupted orphan list: okf_badprimary: bad blocks in the primary superblock and group descriptors: okf_badroot: file in root directory inode: okf_badsymlinks: corrupted symlinks: okf_badtable: bad blocks in bitmaps and inode table: okf_bbfile: bad blocks in files: okf_bbinode: bad blocks in inode table: okf_big_sparse: big sparse file: okf_bitmaps: corrupted inode and block bitmaps: okf_clear_xattr: clearing i_file_acl when !ext_attr feature: okf_crashdisk: Superblock with illegal values: okf_dir_bad_mode: directory with corrupted i_mode: okf_dirlink: directory hard links: okf_dup: blocks claimed by two different files: okf_dup2: blocks claimed by three different files: okf_dup3: blocks claimed by one file multiple times: okf_dup4: find all directory pathnames: okf_dup_de: duplicate directory entries: okf_dup_resize: blocks claimed by the resize inode and another inode: okf_dupdot: duplicate '.' and '..' entries: okf_dupfsblks: blocks claimed by a file and bitmaps or inode tables: okf_dupsuper: blocks claimed by a file and superblock or group descriptors: okf_ea_checks: extended attribute block checks: ok
f_end-bitmap: corruption at end of block bitmap: okf_expand: expanding lost+found: okf_ext_journal: okf_extent_bad_node: bad interior node in extent tree: okf_extents: basic extents support: okf_extents2: multiply claimed blocks in extents and other illegal extents: okf_extra_journal: Valid journal inode, but has_journal feature not present: okf_fast_symlink_extents: fast symlink with extents flag set: okf_file_acl_high: i_file_acl_high should be zero: okf_filetype: set filetype information and illegal special files: okf_full_bg: inode table in last block of first bg: okf_h_badnode: hash directory with bad HTREE nodes: okf_h_badroot: bad htree root nodes: okf_h_normal: Normal (signed) HTREE directory: okf_h_reindex: reindex HTREE Directory with different hash seed: okf_h_unsigned: Unsigned HTREE directory: okf_holedir: directory with holes and illegal blocks: okf_hurd: GNU/Hurd specific tests: okf_illbbitmap: illegal block bitmap: okf_illibitmap: illegal inode bitmap: okf_illitable: illegal inode table: okf_illitable_flexbg: illegal inode table with FLEX_BG: okf_imagic: non-imagic filesystem with imagic inodes: okf_imagic_fs: imagic filesystem with imagic inodes: okf_journal: recover journal from corrupted inode table: okf_lotsbad: too many illegal blocks in inode: okf_lpf: missing lost+found: okf_lpf2: create lost+found and reconnect lost directory: okf_lpffile: lost+found is not a directory: okf_messy_inode: bad file and directory acl pointers: okf_miss_blk_bmap: missing block bitmap: okf_miss_journal: Non-existent journal inode: okf_misstable: missing inode table: okf_mke2fs2b: mke2fs version 0.2b created filesystem: okf_noroot: missing root directory: okf_okgroup: 8193 block long filesystem: okf_orphan: clearing orphan inodes: okf_orphan_dotdot_ft: filetype of .. in orphaned directories: okf_overfsblks: overlapping inode and block bitmaps: okf_preen: preen shouldn't destroy backup superblocks: okf_recnect_bad: Reconnecting bad inode: okf_reconnect: simple disconnected file inode: okf_resize_inode: e2fsck with resize_inode: okf_salvage_dir: salvage corrupted directories: okf_selinux: SE Linux generated symlinks with EA data: okf_special_ea: Special files with extended attributes: okf_summary_counts: incorrect inode/block free counts: okf_uninit_last_uninit: last group has BLOCK_UNINIT set: okf_unsorted_EAs: unsorted EAs in inode should not be deleted: okf_valid_ea_in_inode: valid ea-in-inode examplars: okf_zero_group: fallback for damaged group descriptors: okf_zero_inode_size: superblock with a zero inode size: okf_zero_super: fallback for damaged superblock: okm_dasd_bs: 2048 byte sector devices: okm_large_file: largefile fs type: okm_meta_bg: meta blockgroup feature: okm_mkfs_overhead: test bg overhead calculation: okm_no_opt: no filesystem extensions: okm_raid_opt: raid options: okm_std: standard filesystem options: okm_uninit: uninitialized group feature: okr_inline_xattr: shrinking filesystem with in-inode extended attributes: okr_move_itable: filesystem resize which requires moving the inode table: okr_resize_inode: filesystem resize with a resize_inode present: oku_mke2fs: e2undo with mke2fs: oku_tune2fs: e2undo with tune2fs: ok
103 tests succeeded 0 tests failed
make[1]: Leaving directory `/home/nick/src/e2fsprogs/build/tests'
Re: [PATCH] Fix counting routines in blknum.c to take/return __u32 counts.
Quoted 5 lines · Nick Dokos
Apologies for the breakage, but I invariably do "make check" and I got no failures on the "make check" step (log appended). I probably should have ported them to a 32-bit platform and tested there but I did not. Is that where the failures arose?
Yeah, my laptop is still using an x86 32-bit userspace. One of these days I'll update it to be 64-bit but for now it's nice for catching these sorts of things.
- Ted
Quoted 8 lines · Eric Sandeen
ext2fs_open2()was only looking ats_blocks_count, and when it wrapped to a low number, it was failing the test of:
fs->super->s_first_data_block>=fs->super->s_blocks_countwhich made the superblock look corrupt.
Signed-off-by Eric Sandeen <[email protected]>
Added to the e2fsprogs 64-bit patch set / pu branch.
- Ted