Loading fs/btrfs/extent-tree.c +17 −3 Original line number Diff line number Diff line Loading @@ -2493,7 +2493,7 @@ static int find_root_for_ref(struct btrfs_root *root, btrfs_file_extent_disk_bytenr(leaf, file_extent); } } else if (ret == 0) { } else if (!file_key) { if (path->nodes[level]) found_bytenr = path->nodes[level]->start; } Loading Loading @@ -2797,14 +2797,25 @@ int btrfs_shrink_extent_tree(struct btrfs_root *root, u64 shrink_start) root = root->fs_info->extent_root; path->reada = 2; printk("btrfs relocating block group %llu flags %llu\n", (unsigned long long)shrink_start, (unsigned long long)shrink_block_group->flags); again: if (btrfs_block_group_used(&shrink_block_group->item) > 0) { u64 calc; trans = btrfs_start_transaction(root, 1); new_alloc_flags = update_block_group_flags(root, shrink_block_group->flags); if (new_alloc_flags != shrink_block_group->flags) { calc = btrfs_block_group_used(&shrink_block_group->item); } else { calc = shrink_block_group->key.offset; } do_chunk_alloc(trans, root->fs_info->extent_root, btrfs_block_group_used(&shrink_block_group->item) + 2 * 1024 * 1024, new_alloc_flags); calc + 2 * 1024 * 1024, new_alloc_flags); btrfs_end_transaction(trans, root); } shrink_block_group->ro = 1; Loading Loading @@ -2888,6 +2899,9 @@ int btrfs_shrink_extent_tree(struct btrfs_root *root, u64 shrink_start) btrfs_release_path(root, path); if (total_found > 0) { printk("btrfs relocate found %llu last extent was %llu\n", (unsigned long long)total_found, (unsigned long long)found_key.objectid); trans = btrfs_start_transaction(tree_root, 1); btrfs_commit_transaction(trans, tree_root); Loading fs/btrfs/volumes.c +2 −0 Original line number Diff line number Diff line Loading @@ -1011,6 +1011,8 @@ int btrfs_relocate_chunk(struct btrfs_root *root, int ret; int i; printk("btrfs relocating chunk %llu\n", (unsigned long long)chunk_offset); root = root->fs_info->chunk_root; extent_root = root->fs_info->extent_root; em_tree = &root->fs_info->mapping_tree.map_tree; Loading Loading
fs/btrfs/extent-tree.c +17 −3 Original line number Diff line number Diff line Loading @@ -2493,7 +2493,7 @@ static int find_root_for_ref(struct btrfs_root *root, btrfs_file_extent_disk_bytenr(leaf, file_extent); } } else if (ret == 0) { } else if (!file_key) { if (path->nodes[level]) found_bytenr = path->nodes[level]->start; } Loading Loading @@ -2797,14 +2797,25 @@ int btrfs_shrink_extent_tree(struct btrfs_root *root, u64 shrink_start) root = root->fs_info->extent_root; path->reada = 2; printk("btrfs relocating block group %llu flags %llu\n", (unsigned long long)shrink_start, (unsigned long long)shrink_block_group->flags); again: if (btrfs_block_group_used(&shrink_block_group->item) > 0) { u64 calc; trans = btrfs_start_transaction(root, 1); new_alloc_flags = update_block_group_flags(root, shrink_block_group->flags); if (new_alloc_flags != shrink_block_group->flags) { calc = btrfs_block_group_used(&shrink_block_group->item); } else { calc = shrink_block_group->key.offset; } do_chunk_alloc(trans, root->fs_info->extent_root, btrfs_block_group_used(&shrink_block_group->item) + 2 * 1024 * 1024, new_alloc_flags); calc + 2 * 1024 * 1024, new_alloc_flags); btrfs_end_transaction(trans, root); } shrink_block_group->ro = 1; Loading Loading @@ -2888,6 +2899,9 @@ int btrfs_shrink_extent_tree(struct btrfs_root *root, u64 shrink_start) btrfs_release_path(root, path); if (total_found > 0) { printk("btrfs relocate found %llu last extent was %llu\n", (unsigned long long)total_found, (unsigned long long)found_key.objectid); trans = btrfs_start_transaction(tree_root, 1); btrfs_commit_transaction(trans, tree_root); Loading
fs/btrfs/volumes.c +2 −0 Original line number Diff line number Diff line Loading @@ -1011,6 +1011,8 @@ int btrfs_relocate_chunk(struct btrfs_root *root, int ret; int i; printk("btrfs relocating chunk %llu\n", (unsigned long long)chunk_offset); root = root->fs_info->chunk_root; extent_root = root->fs_info->extent_root; em_tree = &root->fs_info->mapping_tree.map_tree; Loading