Whamcloud - gitweb
e2fsck: Only ask to relocate a block group's inode table once
[tools/e2fsprogs.git] / e2fsck / pass1b.c
index 809bd7f..99f0a3c 100644 (file)
@@ -180,6 +180,7 @@ static void inode_dnode_free(dnode_t *node,
                next = p->next;
                free(p);
        }
+       free(di);
        free(node);
 }
 
@@ -197,6 +198,7 @@ static void block_dnode_free(dnode_t *node,
                next = p->next;
                free(p);
        }
+       free(db);
        free(node);
 }
 
@@ -208,6 +210,9 @@ void e2fsck_pass1_dupblocks(e2fsck_t ctx, char *block_buf)
 {
        ext2_filsys             fs = ctx->fs;
        struct problem_context  pctx;
+#ifdef RESOURCE_TRACK
+       struct resource_track   rtrack;
+#endif
 
        clear_problem_context(&pctx);
 
@@ -224,9 +229,17 @@ void e2fsck_pass1_dupblocks(e2fsck_t ctx, char *block_buf)
        dict_set_allocator(&ino_dict, NULL, inode_dnode_free, NULL);
        dict_set_allocator(&blk_dict, NULL, block_dnode_free, NULL);
 
+       init_resource_track(&rtrack, ctx->fs->io);
        pass1b(ctx, block_buf);
+       print_resource_track(ctx, "Pass 1b", &rtrack, ctx->fs->io);
+
+       init_resource_track(&rtrack, ctx->fs->io);
        pass1c(ctx, block_buf);
+       print_resource_track(ctx, "Pass 1c", &rtrack, ctx->fs->io);
+
+       init_resource_track(&rtrack, ctx->fs->io);
        pass1d(ctx, block_buf);
+       print_resource_track(ctx, "Pass 1d", &rtrack, ctx->fs->io);
 
        /*
         * Time to free all of the accumulated data structures that we
@@ -234,6 +247,7 @@ void e2fsck_pass1_dupblocks(e2fsck_t ctx, char *block_buf)
         */
        dict_free_nodes(&ino_dict);
        dict_free_nodes(&blk_dict);
+       ext2fs_free_inode_bitmap(inode_dup_map);
 }
 
 /*