From d2c9c42a0b1c0776afe47c9bfbddbc170d8aa036 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Sun, 11 Mar 2012 14:15:19 -0400 Subject: [PATCH] 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" --- e2fsck/pass5.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/e2fsck/pass5.c b/e2fsck/pass5.c index e25f080..c121d92 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) -- 1.8.3.1