]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
e2fsck: copy badblocks when copying fs
authorWang Shilong <wshilong@ddn.com>
Wed, 9 Sep 2020 07:07:10 +0000 (15:07 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 25 Jan 2021 20:16:35 +0000 (15:16 -0500)
This patch copies badblocks when the copying fs.

Signed-off-by: Li Xi <lixi@ddn.com>
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
e2fsck/pass1.c

index 3a4286e12fb59e4cae79fe85fc8ca2261d82c75c..14508dd825da1e67f435438bc388b3445bf90992 100644 (file)
@@ -2123,6 +2123,12 @@ static errcode_t e2fsck_pass1_copy_fs(ext2_filsys dest, ext2_filsys src)
                        return retval;
        }
 
+       if (src->badblocks) {
+               retval = ext2fs_badblocks_copy(src->badblocks, &dest->badblocks);
+               if (retval)
+                       return retval;
+       }
+
        /* icache will be rebuilt if needed, so do not copy from @src */
        src->icache = NULL;
        return 0;
@@ -2155,6 +2161,13 @@ static int e2fsck_pass1_merge_fs(ext2_filsys dest, ext2_filsys src)
                src->icache = NULL;
        }
 
+       if (src->badblocks) {
+               retval = ext2fs_badblocks_copy(src->badblocks, &dest->badblocks);
+
+               ext2fs_badblocks_list_free(src->badblocks);
+               src->badblocks = NULL;
+       }
+
        return retval;
 }