Whamcloud - gitweb
LU-8465 e2fsck: merge fs flags when threads finish 98/36098/16
authorLi Xi <lixi@ddn.com>
Sun, 8 Sep 2019 08:15:35 +0000 (16:15 +0800)
committerAndreas Dilger <adilger@whamcloud.com>
Sat, 26 Sep 2020 04:45:30 +0000 (04:45 +0000)
merge fs flags properly.

Change-Id: Ia8a3731d2710a725938a927ec3464cb028dd271b
Signed-off-by: Li Xi <lixi@ddn.com>
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Reviewed-on: https://review.whamcloud.com/36098
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Andreas Dilger <adilger@whamcloud.com>
e2fsck/pass1.c

index 3fac845..c1dc7a6 100644 (file)
@@ -2492,6 +2492,7 @@ static int e2fsck_pass1_merge_fs(ext2_filsys dest, ext2_filsys src)
        ext2fs_block_bitmap block_map;
        ext2_badblocks_list badblocks;
        ext2_dblist dblist;
+       int flags;
 
        dest_io = dest->io;
        dest_image_io = dest->image_io;
@@ -2499,6 +2500,7 @@ static int e2fsck_pass1_merge_fs(ext2_filsys dest, ext2_filsys src)
        block_map = dest->block_map;
        badblocks = dest->badblocks;
        dblist = dest->dblist;
+       flags = dest->flags;
 
        memcpy(dest, src, sizeof(struct struct_ext2_filsys));
        dest->io = dest_io;
@@ -2510,6 +2512,9 @@ static int e2fsck_pass1_merge_fs(ext2_filsys dest, ext2_filsys src)
        dest->dblist = dblist;
        if (dest->dblist)
                dest->dblist->fs = dest;
+       dest->flags = src->flags | flags;
+       if (!(src->flags & EXT2_FLAG_VALID) || !(flags & EXT2_FLAG_VALID))
+               ext2fs_unmark_valid(dest);
 
        if (src->icache) {
                ext2fs_free_inode_cache(src->icache);