Index: e2fsprogs-1.40.5/e2fsck/super.c =================================================================== --- e2fsprogs-1.40.5.orig/e2fsck/super.c +++ e2fsprogs-1.40.5/e2fsck/super.c @@ -793,7 +793,11 @@ void check_super_block(e2fsck_t ctx) * unfortunately, we shouldn't ignore it since if it's not set in the * backup, the extended attributes in the filesystem will be stripped * away. + * + * Well, I'm still going that route for now, 'til I do something + * better. Full-fsck after a fresh install is just no good. -ERS */ +#define FEATURE_COMPAT_IGNORE (EXT2_FEATURE_COMPAT_EXT_ATTR) #define FEATURE_RO_COMPAT_IGNORE (EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ EXT4_FEATURE_RO_COMPAT_DIR_NLINK) #define FEATURE_INCOMPAT_IGNORE (EXT3_FEATURE_INCOMPAT_EXTENTS) @@ -837,6 +841,9 @@ int check_backup_super_block(e2fsck_t ct continue; } +#define SUPER_COMPAT_DIFFERENT(x) \ + (( fs->super->x & ~FEATURE_COMPAT_IGNORE) != \ + (tfs->super->x & ~FEATURE_COMPAT_IGNORE)) #define SUPER_INCOMPAT_DIFFERENT(x) \ (( fs->super->x & ~FEATURE_INCOMPAT_IGNORE) != \ (tfs->super->x & ~FEATURE_INCOMPAT_IGNORE)) @@ -846,7 +853,7 @@ int check_backup_super_block(e2fsck_t ct #define SUPER_DIFFERENT(x) \ (fs->super->x != tfs->super->x) - if (SUPER_DIFFERENT(s_feature_compat) || + if (SUPER_COMPAT_DIFFERENT(s_feature_compat) || SUPER_INCOMPAT_DIFFERENT(s_feature_incompat) || SUPER_RO_COMPAT_DIFFERENT(s_feature_ro_compat) || SUPER_DIFFERENT(s_blocks_count) ||