From: Darrick J. Wong Date: Fri, 18 Jul 2014 22:53:04 +0000 (-0700) Subject: e2fsck: skip clearing bad extents if bitmaps are unreadable X-Git-Tag: v1.42.12~79 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=27a129f3c20a2c785741a2001532a78f49445be9;p=tools%2Fe2fsprogs.git e2fsck: skip clearing bad extents if bitmaps are unreadable If the bitmaps are known to be unreadable, don't bother clearing them; just mark fsck to restart itself after pass 5, by which time the bitmaps should be fixed. Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 9ef724a..e714b0f 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -1816,6 +1816,26 @@ report_problem: pctx->num = extent.e_len; pctx->blkcount = extent.e_lblk + extent.e_len; if (fix_problem(ctx, problem, pctx)) { + if (ctx->invalid_bitmaps) { + /* + * If fsck knows the bitmaps are bad, + * skip to the next extent and + * try to clear this extent again + * after fixing the bitmaps, by + * restarting fsck. + */ + pctx->errcode = ext2fs_extent_get( + ehandle, + EXT2_EXTENT_NEXT_SIB, + &extent); + ctx->flags |= E2F_FLAG_RESTART_LATER; + if (pctx->errcode == + EXT2_ET_NO_CURRENT_NODE) { + pctx->errcode = 0; + break; + } + continue; + } e2fsck_read_bitmaps(ctx); pctx->errcode = ext2fs_extent_delete(ehandle, 0);