Whamcloud - gitweb
LU-8465 e2fsck: reset @inodes_to_rebuild if restart 24/40024/6
authorWang Shilong <wshilong@ddn.com>
Thu, 24 Sep 2020 02:00:06 +0000 (10:00 +0800)
committerAndreas Dilger <adilger@whamcloud.com>
Sat, 26 Sep 2020 06:40:33 +0000 (06:40 +0000)
Verify multiple thread on a corrupted images hit following bug:

pass1.c:2902: e2fsck_pass1_thread_prepare:
Assertion `global_ctx->inodes_to_rebuild == NULL' failed.
Signal (6) SIGABRT si_code=SI_TKILL
./e2fsck/e2fsck[0x43829e]
/lib64/libpthread.so.0(+0x14b20)[0x7f3b45135b20]
/lib64/libc.so.6(gsignal+0x145)[0x7f3b44f2c625]
/lib64/libc.so.6(abort+0x12b)[0x7f3b44f158d9]
/lib64/libc.so.6(+0x257a9)[0x7f3b44f157a9]
/lib64/libc.so.6(+0x34a66)[0x7f3b44f24a66]
./e2fsck/e2fsck(e2fsck_pass1+0x1662)[0x423572]
./e2fsck/e2fsck(e2fsck_run+0x5a)[0x41611a]
./e2fsck/e2fsck(main+0x1608)[0x4121b8]
/lib64/libc.so.6(__libc_start_main+0xf3)[0x7f3b44f171a3]
./e2fsck/e2fsck(_start+0x2e)[0x413dde]

@inodes_to_rebuild could be not NULL after we restart pass1

Signed-off-by: Wang Shilong <wshilong@ddn.com>
Change-Id: I63255570e6b7405066f14b334b689fca5fbf4f8b
Reviewed-on: https://review.whamcloud.com/40024
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Andreas Dilger <adilger@whamcloud.com>
e2fsck/e2fsck.c

index 5f9df0b..140caf3 100644 (file)
@@ -75,6 +75,10 @@ errcode_t e2fsck_reset_context(e2fsck_t ctx)
                ext2fs_free_block_bitmap(ctx->block_found_map);
                ctx->block_found_map = 0;
        }
+       if (ctx->inodes_to_rebuild) {
+               ext2fs_free_inode_bitmap(ctx->inodes_to_rebuild);
+               ctx->inodes_to_rebuild = 0;
+       }
        if (ctx->inode_link_info) {
                ext2fs_free_icount(ctx->inode_link_info);
                ctx->inode_link_info = 0;