Btrfs-progs, fsck: move root items repair after root rebuilding
If some critical roots are corrupt, reapr_root_items() will fail, this is detected by fsck_tests.sh's extent rebuilding tests. Signed-off-by: Wang Shilong <wangshilong1991@gmail.com> Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
parent
b3375a7e8b
commit
1f728b1a51
32
cmds-check.c
32
cmds-check.c
|
@ -8522,22 +8522,6 @@ int cmd_check(int argc, char **argv)
|
|||
|
||||
root = info->fs_root;
|
||||
|
||||
ret = repair_root_items(info);
|
||||
if (ret < 0)
|
||||
goto close_out;
|
||||
if (repair) {
|
||||
fprintf(stderr, "Fixed %d roots.\n", ret);
|
||||
ret = 0;
|
||||
} else if (ret > 0) {
|
||||
fprintf(stderr,
|
||||
"Found %d roots with an outdated root item.\n",
|
||||
ret);
|
||||
fprintf(stderr,
|
||||
"Please run a filesystem check with the option --repair to fix them.\n");
|
||||
ret = 1;
|
||||
goto close_out;
|
||||
}
|
||||
|
||||
/*
|
||||
* repair mode will force us to commit transaction which
|
||||
* will make us fail to load log tree when mounting.
|
||||
|
@ -8636,6 +8620,22 @@ int cmd_check(int argc, char **argv)
|
|||
if (ret)
|
||||
fprintf(stderr, "Errors found in extent allocation tree or chunk allocation\n");
|
||||
|
||||
ret = repair_root_items(info);
|
||||
if (ret < 0)
|
||||
goto close_out;
|
||||
if (repair) {
|
||||
fprintf(stderr, "Fixed %d roots.\n", ret);
|
||||
ret = 0;
|
||||
} else if (ret > 0) {
|
||||
fprintf(stderr,
|
||||
"Found %d roots with an outdated root item.\n",
|
||||
ret);
|
||||
fprintf(stderr,
|
||||
"Please run a filesystem check with the option --repair to fix them.\n");
|
||||
ret = 1;
|
||||
goto close_out;
|
||||
}
|
||||
|
||||
fprintf(stderr, "checking free space cache\n");
|
||||
ret = check_space_cache(root);
|
||||
if (ret)
|
||||
|
|
Loading…
Reference in a new issue