aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWang Shilong <wshilong@ddn.com>2020-03-20 09:55:18 +0800
committerTheodore Ts'o <tytso@mit.edu>2021-01-25 15:18:26 -0500
commit291bc9b7fc5280166e58b0e586d5ec93738f31a7 (patch)
treef3545ae999831bf7fa879fef97fa2f099b5e7bce
parent10abbf8fd534d61c40fbf9699bf605ac6456b2e2 (diff)
downloade2fsprogs-291bc9b7fc5280166e58b0e586d5ec93738f31a7.tar.gz
e2fsck: merge extent depth count after threads finish
tests covered by f_extent_htree. Signed-off-by: Wang Shilong <wshilong@ddn.com> Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r--e2fsck/pass1.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index 784727596..3d14adaae 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -2936,8 +2936,11 @@ static int e2fsck_pass1_thread_join_one(e2fsck_t global_ctx, e2fsck_t thread_ctx
ext2_refcount_t ea_inode_refs = global_ctx->ea_inode_refs;
ext2fs_block_bitmap block_found_map = global_ctx->block_found_map;
ext2fs_block_bitmap block_dup_map = global_ctx->block_dup_map;
- int options = global_ctx->options;
+ int options = global_ctx->options, i;
+ __u32 extent_depth_count[MAX_EXTENT_DEPTH_COUNT];
+ memcpy(extent_depth_count, global_ctx->extent_depth_count,
+ sizeof(extent_depth_count));
#ifdef HAVE_SETJMP_H
jmp_buf old_jmp;
@@ -2997,6 +3000,12 @@ static int e2fsck_pass1_thread_join_one(e2fsck_t global_ctx, e2fsck_t thread_ctx
* later passes will recalculate it if necessary
*/
global_ctx->lost_and_found = 0;
+ memcpy(global_ctx->extent_depth_count, extent_depth_count,
+ sizeof(extent_depth_count));
+ /* merge extent depth count */
+ for (i = 0; i < MAX_EXTENT_DEPTH_COUNT; i++)
+ global_ctx->extent_depth_count[i] +=
+ thread_ctx->extent_depth_count[i];
retval = e2fsck_pass1_merge_fs(global_fs, thread_fs);
if (retval) {