* [PATCH] e2fsck: only consult inode_dir_map if needed in pass4
@ 2012-10-10 2:55 Theodore Ts'o
0 siblings, 0 replies; only message in thread
From: Theodore Ts'o @ 2012-10-10 2:55 UTC (permalink / raw)
To: Ext4 Developers List; +Cc: Theodore Ts'o
In e2fsck_pass4(), we were consulting inode_dir_map using
ext2fs_test_inode_bitmap2() for every single inode in the file system.
However, there were many cases where we never needed the result of the
test --- most notably if the inode is not in use.
I was a bit surprised that GCC 4.7 with CFLAGS set to "-g -O2" wasn't
able to optimize this out for us, but here is the pass 4 timing for an
empty 3T file system before this patch:
Pass 4: Memory used: 672k/772k (422k/251k), time: 3.67/ 3.66/ 0.00
and afterwards, we see a 43% improvement:
Pass 4: Memory used: 672k/772k (422k/251k), time: 2.09/ 2.08/ 0.00
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---
e2fsck/pass4.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/e2fsck/pass4.c b/e2fsck/pass4.c
index 1e63280..2d55180 100644
--- a/e2fsck/pass4.c
+++ b/e2fsck/pass4.c
@@ -123,7 +123,7 @@ void e2fsck_pass4(e2fsck_t ctx)
/* Protect loop from wrap-around if s_inodes_count maxed */
for (i=1; i <= fs->super->s_inodes_count && i > 0; i++) {
- int isdir = ext2fs_test_inode_bitmap2(ctx->inode_dir_map, i);
+ int isdir;
if (ctx->flags & E2F_FLAG_SIGNAL_MASK)
goto errout;
@@ -157,6 +157,7 @@ void e2fsck_pass4(e2fsck_t ctx)
ext2fs_icount_fetch(ctx->inode_count, i,
&link_counted);
}
+ isdir = ext2fs_test_inode_bitmap2(ctx->inode_dir_map, i);
if (isdir && (link_counted > EXT2_LINK_MAX))
link_counted = 1;
if (link_counted != link_count) {
--
1.7.12.rc0.22.gcdd159b
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2012-10-10 8:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-10 2:55 [PATCH] e2fsck: only consult inode_dir_map if needed in pass4 Theodore Ts'o
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).