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>
master
Wang Shilong 2014-11-26 10:58:52 +08:00 committed by David Sterba
parent b3375a7e8b
commit 1f728b1a51
1 changed files with 16 additions and 16 deletions

View File

@ -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)