Whamcloud - gitweb
LU-8465 e2fsck: merge inode_badness after threads finish 43/39843/7
authorWang Shilong <wshilong@ddn.com>
Tue, 25 Aug 2020 08:12:37 +0000 (16:12 +0800)
committerAndreas Dilger <adilger@whamcloud.com>
Sat, 26 Sep 2020 04:41:08 +0000 (04:41 +0000)
inode_badness is only specific for master-lustre branch,
seperate it and fix a bug that inode_badness is not freed properly

Signed-off-by: Wang Shilong <wshilong@ddn.com>
Change-Id: I75a54adc088cb5b636171e4ee7929496858fedf9
Reviewed-on: https://review.whamcloud.com/39843
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
e2fsck/e2fsck.c
e2fsck/pass1.c

index 67d3f26..72c6bb7 100644 (file)
@@ -79,6 +79,10 @@ errcode_t e2fsck_reset_context(e2fsck_t ctx)
                ext2fs_free_icount(ctx->inode_link_info);
                ctx->inode_link_info = 0;
        }
+       if (ctx->inode_badness) {
+               ext2fs_free_icount(ctx->inode_badness);
+               ctx->inode_badness = 0;
+       }
        if (ctx->journal_io) {
                if (ctx->fs && ctx->fs->io != ctx->journal_io)
                        io_channel_close(ctx->journal_io);
index fe9afd4..ba21897 100644 (file)
@@ -2666,6 +2666,11 @@ static errcode_t e2fsck_pass1_merge_icounts(e2fsck_t global_ctx, e2fsck_t thread
                return ret;
        ret = e2fsck_pass1_merge_icount(&global_ctx->inode_link_info,
                                        &thread_ctx->inode_link_info);
+       if (ret)
+               return ret;
+
+       ret = e2fsck_pass1_merge_icount(&global_ctx->inode_badness,
+                                       &thread_ctx->inode_badness);
 
        return ret;
 }
@@ -2692,6 +2697,7 @@ static int e2fsck_pass1_thread_join_one(e2fsck_t global_ctx, e2fsck_t thread_ctx
        ext2fs_block_bitmap inodes_to_rebuild = global_ctx->inodes_to_rebuild;
        ext2_icount_t inode_count = global_ctx->inode_count;
        ext2_icount_t inode_link_info = global_ctx->inode_link_info;
+       ext2_icount_t inode_badness = global_ctx->inode_badness;
 
 #ifdef HAVE_SETJMP_H
        jmp_buf          old_jmp;
@@ -2718,6 +2724,7 @@ static int e2fsck_pass1_thread_join_one(e2fsck_t global_ctx, e2fsck_t thread_ctx
        e2fsck_pass1_merge_dir_info(global_ctx, thread_ctx);
        global_ctx->inode_count = inode_count;
        global_ctx->inode_link_info = inode_link_info;
+       global_ctx->inode_badness = inode_badness;
 
        /* Keep the global singal flags*/
        global_ctx->flags |= (flags & E2F_FLAG_SIGNAL_MASK) |
@@ -2826,6 +2833,7 @@ static int e2fsck_pass1_thread_join(e2fsck_t global_ctx, e2fsck_t thread_ctx)
        e2fsck_free_dir_info(thread_ctx);
        ext2fs_free_icount(thread_ctx->inode_count);
        ext2fs_free_icount(thread_ctx->inode_link_info);
+       ext2fs_free_icount(thread_ctx->inode_badness);
        ext2fs_free_mem(&thread_ctx);
 
        return retval;