Since the inline data flag will cause the extent/block map iteration code to abort fsck early, move the test for the inode flag and the actual block check call further forward in check_blocks. This eliminates an e2fsck abort on an inline data symlink when the file ACL block is set. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- e2fsck/pass1.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index f7c1fbb..8bd08ee 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -2596,7 +2596,9 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx, pb.num_blocks++; } - if (ext2fs_inode_has_valid_blocks2(fs, inode)) { + if (inlinedata_fs && (inode->i_flags & EXT4_INLINE_DATA_FL)) + check_blocks_inline_data(ctx, pctx, &pb); + else if (ext2fs_inode_has_valid_blocks2(fs, inode)) { if (extent_fs && (inode->i_flags & EXT4_EXTENTS_FL)) check_blocks_extents(ctx, pctx, &pb); else { @@ -2632,10 +2634,6 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx, fs->flags = (flags & EXT2_FLAG_IGNORE_CSUM_ERRORS) | (fs->flags & ~EXT2_FLAG_IGNORE_CSUM_ERRORS); } - } else { - /* check inline data */ - if (inlinedata_fs && (inode->i_flags & EXT4_INLINE_DATA_FL)) - check_blocks_inline_data(ctx, pctx, &pb); } end_problem_latch(ctx, PR_LATCH_BLOCK); end_problem_latch(ctx, PR_LATCH_TOOBIG); -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html