From: Theodore Ts'o Date: Sun, 11 Mar 2012 18:15:19 +0000 (-0400) Subject: e2fsck: optimize CPU usage in check_{block,inode}_bitmaps() X-Git-Tag: v1.42.2~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d2c9c42a0b1c0776afe47c9bfbddbc170d8aa036;p=thirdparty%2Fe2fsprogs.git e2fsck: optimize CPU usage in check_{block,inode}_bitmaps() The boolean expression (!skip_group || csum_flag) is always true, since if csum_flag is FALSE, skip_group must also be FALSE. Hence, we can just remove the expression from the conditional altogether, thus simplifying the code and making it easier to read/understand. Also, in the case where the bit is set in the bitmap, there's no point repeatedly setting first_free to be ext2fs_block_count(fs->super). Signed-off-by: "Theodore Ts'o" --- diff --git a/e2fsck/pass5.c b/e2fsck/pass5.c index e25f0804e..c121d92b1 100644 --- a/e2fsck/pass5.c +++ b/e2fsck/pass5.c @@ -372,15 +372,14 @@ redo_counts: ctx->options &= ~E2F_OPT_DISCARD; do_counts: - if (!bitmap && (!skip_group || csum_flag)) { + if (!bitmap) { group_free++; free_blocks++; if (first_free > i) first_free = i; - } else { - if (i > first_free) - e2fsck_discard_blocks(ctx, first_free, - (i - first_free)); + } else if (i > first_free) { + e2fsck_discard_blocks(ctx, first_free, + (i - first_free)); first_free = ext2fs_blocks_count(fs->super); } blocks ++; @@ -627,7 +626,7 @@ do_counts: inodes - first_free); first_free = fs->super->s_inodes_per_group + 1; } - } else if (!skip_group || csum_flag) { + } else { group_free++; free_inodes++; if (first_free > inodes)