From: Theodore Ts'o Date: Tue, 10 Sep 2013 00:49:49 +0000 (-0400) Subject: Merge branch 'maint' into next X-Git-Tag: v1.43-WIP-2015-05-18~385 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=fc9f162eea8ade980b6347a70a020d43ba215540;p=tools%2Fe2fsprogs.git Merge branch 'maint' into next --- fc9f162eea8ade980b6347a70a020d43ba215540 diff --cc e2fsck/pass1.c index ba6025b,8279ce5..24b2e16 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@@ -1900,25 -1800,18 +1903,30 @@@ static void scan_extent_node(e2fsck_t c (extent.e_pblk + extent.e_len) > ext2fs_blocks_count(ctx->fs->super)) problem = PR_1_EXTENT_ENDS_BEYOND; + else if (is_leaf && is_dir && + ((extent.e_lblk + extent.e_len) > + (1 << (21 - ctx->fs->super->s_log_block_size)))) + problem = PR_1_TOOBIG_DIR; + /* Corrupt but passes checks? Ask to fix checksum. */ + if (failed_csum) { + pctx->blk = extent.e_pblk; + pctx->blk2 = extent.e_lblk; + pctx->num = extent.e_len; + problem = 0; + if (fix_problem(ctx, PR_1_EXTENT_ONLY_CSUM_INVALID, + pctx)) + ext2fs_extent_replace(ehandle, 0, &extent); + } + if (problem) { report_problem: pctx->blk = extent.e_pblk; pctx->blk2 = extent.e_lblk; pctx->num = extent.e_len; + pctx->blkcount = extent.e_lblk + extent.e_len; if (fix_problem(ctx, problem, pctx)) { +fix_problem_now: e2fsck_read_bitmaps(ctx); pctx->errcode = ext2fs_extent_delete(ehandle, 0);