|
@@ -3129,6 +3129,18 @@ retry_root_backup:
|
|
|
if (sb->s_flags & MS_RDONLY)
|
|
|
return 0;
|
|
|
|
|
|
+ if (btrfs_test_opt(fs_info, CLEAR_CACHE) &&
|
|
|
+ btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE)) {
|
|
|
+ btrfs_info(fs_info, "clearing free space tree");
|
|
|
+ ret = btrfs_clear_free_space_tree(fs_info);
|
|
|
+ if (ret) {
|
|
|
+ btrfs_warn(fs_info,
|
|
|
+ "failed to clear free space tree: %d", ret);
|
|
|
+ close_ctree(tree_root);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (btrfs_test_opt(tree_root->fs_info, FREE_SPACE_TREE) &&
|
|
|
!btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE)) {
|
|
|
btrfs_info(fs_info, "creating free space tree");
|
|
@@ -3166,18 +3178,6 @@ retry_root_backup:
|
|
|
|
|
|
btrfs_qgroup_rescan_resume(fs_info);
|
|
|
|
|
|
- if (btrfs_test_opt(tree_root->fs_info, CLEAR_CACHE) &&
|
|
|
- btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE)) {
|
|
|
- btrfs_info(fs_info, "clearing free space tree");
|
|
|
- ret = btrfs_clear_free_space_tree(fs_info);
|
|
|
- if (ret) {
|
|
|
- btrfs_warn(fs_info,
|
|
|
- "failed to clear free space tree: %d", ret);
|
|
|
- close_ctree(tree_root);
|
|
|
- return ret;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
if (!fs_info->uuid_root) {
|
|
|
btrfs_info(fs_info, "creating UUID tree");
|
|
|
ret = btrfs_create_uuid_tree(fs_info);
|