diff options
author | Zheng Yan <zheng.yan@oracle.com> | 2008-09-26 10:26:53 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-26 10:26:53 -0400 |
commit | 09ab0365ff14c5481a2b0f3b401666d2fab3d05a (patch) | |
tree | 5e5e15ef33c39afbebd2870ed819ac6eeb6315e3 | |
parent | 428b7fa6302c97f5a79f4864a448f481b08a0dfe (diff) | |
download | btrfs-progs-09ab0365ff14c5481a2b0f3b401666d2fab3d05a.tar.gz |
update mkfs.btrfs for the new space balancing code
The new space balancing code needs a subvol to store the
temporary inode for data extent relocation.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r-- | mkfs.c | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -232,6 +232,32 @@ static int create_raid_groups(struct btrfs_trans_handle *trans, return 0; } +static int create_data_reloc_tree(struct btrfs_trans_handle *trans, + struct btrfs_root *root) +{ + struct btrfs_key location; + struct btrfs_root_item root_item; + struct extent_buffer *tmp; + u64 objectid = BTRFS_DATA_RELOC_TREE_OBJECTID; + int ret; + + ret = btrfs_copy_root(trans, root, root->node, &tmp, objectid); + BUG_ON(ret); + + memcpy(&root_item, &root->root_item, sizeof(root_item)); + btrfs_set_root_bytenr(&root_item, tmp->start); + btrfs_set_root_level(&root_item, btrfs_header_level(tmp)); + free_extent_buffer(tmp); + + location.objectid = objectid; + location.type = BTRFS_ROOT_ITEM_KEY; + location.offset = trans->transid; + ret = btrfs_insert_root(trans, root->fs_info->tree_root, + &location, &root_item); + BUG_ON(ret); + return 0; +} + static void print_usage(void) { fprintf(stderr, "usage: mkfs.btrfs [options] dev [ dev ... ]\n"); @@ -459,6 +485,9 @@ raid_groups: metadata_profile); BUG_ON(ret); + ret = create_data_reloc_tree(trans, root); + BUG_ON(ret); + printf("fs created label %s on %s\n\tnodesize %u leafsize %u " "sectorsize %u size %s\n", label, first_file, nodesize, leafsize, sectorsize, |